CoreProtect - Fast, efficient block logging, rollbacks, and restores
CoreProtect is a fast, efficient, data logging and anti-griefing tool. Rollback and restore any amount of damage. Designed with large servers in mind, CoreProtect will record and manage data without impacting your server performance.
CoreProtect is the #1 most-used anti-griefing plugin, and has been actively developed since early 2012.
|Tekkit Classic:||http://dev.bukkit.org/server-mods/coreprotect/files/54 (Old, works with CB 1.2.5)|
Video Tutorial: (by jfreeze256)
- Fast efficient data logging.
- Fast rollbacks - no lag while performing rollbacks/restores.
- Multi-threaded to ensure server performance is never impacted
- No configuration required. Put the plugin on your server, and you're good to go.
- SQLite based data storage.
- Optional MySQL support.
- Easy to use commands.
- Perform rollbacks AND restores. Undo any rollback, anytime.
- Easy to use block inspector
- Advanced search-based lookup tool.
- Paginated logs.
- Automatic update checker.
- Multi-world support.
- Enable or disable any aspect of logging in the configuration file.
- Rollback per-player, or just do a global rollback to all damage around you.
- Specify certain block types to skip in rollbacks/restores.
- Restrict rollbacks/restores to specific block types
- Log basic player actions (such as when a player opens a door)
- Liquid tracking. Associate liquid flow with players
- Tree tracking. Trees grown from saplings show who originally planted the sapling.
- Restrict rollbacks/restores to a radius area.
- Supports bucket permission system.
- Able to track blocks that fall off of other blocks. If a player breaks a block that had a sign on it, both the block and the sign can be rolled back.
- Easily delete old log data.
- Safe default parameters.
- Rollback or restore multiple players at once.
- Create per-world configuration files.
- Lookup, rollback, or restore by a specific action.
- Exclude multiple users or blocks.
- Preview rollbacks or restores.
- Use WorldEdit selections.
- An easy to use API.
- Works with Tekkit servers
- ...and much more!!
What does it log?
- Log blocks broken by players.
- Log blocks placed by players.
- Log natural block breakage (ex: if a sign pops off a dirt block that was broken)
- Log bucket usage
- Log liquid flow
- Log tree growth
- Log mushroom growth
- Log vine growth.
- Log explosions (TNT, Creepers, Ghasts, etc)
- Log flint & steel and fire charge usage.
- Log fire igniting blocks.
- Log blocks burning up in fires.
- Log entities changing blocks (Endermen/Enderdragons)
- Log block movement (Falling sand/gravel)
- Log leaf decay
- Log player interactions
- Log Nether portal generation
- Log blocks moved by pistons
- Log crops trampled by players
- Log snow generated by snow golems
- Log items taken or placed in chests, furnaces, dispensers, etc.
- Log paintings and item frames. (With rollback support!)
- Log entities killed by players (animals/monsters)
- Log chat messages and commands used by players.
- Log player sessions (logins/logouts)
- Log username changes
- Log changes done by WorldEdit.
- ...and the list is still expanding!
How to use the inspector.
Once you have the inspector enabled ("/core inspect", or just "/co i"), you can do the following:
- Left-click a block to see who placed that block.
- Right-click a block to see what adjacent block was removed.
- Right-click (place) a block in a location to see what block was removed at that location.
- Right-click (place) a block in another block to see who placed it. (ex: place dirt in water to see who placed the water)
- Right-click on a door,button,lever,chest,etc, to see who last used it.
A Few Reviews
- "It's easy to use and lightning fast when it comes to rollbacks."
- "I've been running a MC server since before Bukkit, so I've used just about every block logger out there. CoreProtect is the best and the fastest."
- "Go with CoreProtect. It's fast, updated frequently, and logs WorldEdit."
- "Overall it felt more natural, simpler, and much faster to use CoreProtect than Prism, which just doesn't compare."
- "CoreProtect brings complex logging and rollbacks, whilst at the same time keeping a low profile."
This plugin utilizes Hidendra's plugin metrics system, which anonymously collects and sends the following information to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.
Guides & Resources
Join #coreprotect on irc.esper.net | EsperNet Web IRC
Thanks to HostHorde for sponsoring CoreProtect!
Have a question, a suggestion, or just want to tell us thanks? Post below!
Thanks for your support!
CoreProtect now has an official IRC channel! Join #coreprotect on irc.esper.net | EsperNet Web IRC
- Added logging for adding/removing items on armor stands.
- Added logging for sticky pistons pulling blocks.
- Added a logChat function to the API.
- Added a logCommand function to the API.
- Fixed the "coreprotect.inspect" permission not granting access to the "/co l <page>" command.
- Fixed the blockLookup API function returning incorrectly formatted data.
- Added performPurge method to API.
- Added previously removed methods back into API, for compatibility with abandoned plugins.
- Added ability to restrict users, exclude users, and specify actions, for lookups/rollbacks/restores within the API.
- Improved lookup/rollback/restore commands, so that they now fail if an invalid block or entity name was entered.
- Fixed sapling growth failure being logged as sapling placement.
- Fixed broken ParseResult.getType() function in API.
- Fixed several ClassCastException and NullPointerException errors.
- Fixed broken ParseResult.getTypeId() function in API.
- Fixed named pets not retaining names after a rollback.
- Fixed plugin refusing to register with WorldEdit v6+.
- Fixed broken WorldEdit sign logging.
- Added logging for changes made by WorldEdit v6.
- Added logging for new (Minecraft 1.8) door types.
- Added logging for new (Minecraft 1.8) fence gate types.
- Added logging for banner colours and patterns.
- Added logging for armor stands.
- Added custom block names for lookups (granite, polished_granite, diorite, polished_diorite, andesite, and polished_andesite).
- Improved core logging; now uses block and entity names rather than block IDs.
- Improved lookups; they now use block and entity names rather than block IDs.
- Fixed MySQL not properly supporting UTF-8 characters.
- Fixed banners placed in chests not being logged.
- Fixed logging of paintings relying on Bukkit enum values.
- Fixed paintings not being able to rollback or restore in Minecraft 1.8+.
- Fixed item frames not being able to rollback or restore in Minecraft 1.8+.
- Fixed killing horses not logging correct data, such as the horse color.
- Fixed firing an arrow at an item frame logging as "#arrow", rather than the username of the player.
- Fixed server operators being unable to use "/co l u:#container".
- Fixed new MySQL installs not using UTF-8 as the default character set.
- Improved CoreProtect's internal versioning system.
- Added internal support for UUIDs.
- Added name change logging and lookups (action:username).
- Added a new config.yml option for disabling name change logging.
- Fixed EntityDeathEvent errors occurring when using the "MyPet" plugin.
- Fixed StructureGrowEvent errors occurring when another plugin creates a badly formed event.
- Fixed blocks visually disappearing from player inventories when using the inspector.
- Improved management of deprecated Bukkit methods.
- Added logging for items taken out of item frames.
- Added logging for snow generated by Snow Golems.
- Added logging for fire punched out by players.
- Added logging for crops trampled by players.
- Added logging for carpet and double plants broken by water/lava.
- Added support for rolling back & restoring double plants, such as sunflowers.
- Added description information for Minecraft 1.7 block types.
- Fixed "/co reload" not being able to switch between SQLite and MySQL.
- Fixed "coreprotect.lookup.block" permission controlling page lookups.
- Fixed placing stairs not logging the direction they were placed.
- Fixed rolling back a container not setting the correct container direction.
- Improved version system to better reflect the current version number.
- Improved API to use its own versioning system. Code changes are required to utilize the CoreProtect v2.0.8+ API. Updated example code can be found here: http://minerealm.com/community/viewtopic.php?f=32&t=14070
- Added support for usernames containing special characters.
- Added description information for Minecraft 1.6 block types.
- Fixed version system not working with non-standard number formats.
- Fixed replacing a block (ex: snow) not always logging the block removal.
- Fixed rare instances of "Asynchronous entity track" error on rollbacks/restores.
- Improved time taken for performing rollback/restore previews.
- Improved preview interface, now displays block count.
- Added "coreprotect.lookup.block" permission, for blocking block data lookups.
- Added "coreprotect.lookup.click" permission, for blocking interaction lookups.
- Added "coreprotect.lookup.container" permission, for blocking container lookups.
- Added "coreprotect.lookup.kill" permission, for blocking kill lookups.
- Fixed it so upgrades are able to continue if the enchantment data is invalid.
- Fixed entity data not being properly filtered out for rollback/restore previews.
- Fixed water from an ice block not logging as the person who broke the block.
- Fixed piston movement logging the piston extension as a placed block.
- Fixed placing pistons/chests/repeaters not logging the direction the block is facing.
- Fixed asynchronous entity tracking error on the player chat event.
- Fixed rare instances of starting a purge causing the plugin to lock up.
- Fixed not being able to exclude non-standard block IDs in commands.
- Fixed running a purge showing "database busy" instead of "purge in progress".
- Fixed version managing system enforcing arbitrary limits on the version number.
- Fixed custom potions in containers throwing NotSerializableException errors.
- Fixed ClassCastException errors for rollbacks/restores when a container type is changed.
- Fixed killing an entity with a splash potion not logging the username of the killer.
- Fixed player names not always linking to broken item frames / paintings.
- Fixed skulls, cobwebs and tripwire broken by water/lava not being logged.
- Fixed null pointer when accessing API if CoreProtect hasn't yet initialized.
- Fixed TNT minecart explosions logging as "#explosion" instead of "#tnt"
- Fixed multiple users modifying a container at once causing discrepancies in the logs.
- Fixed not being able to do a "#container" rollback after inspecting a chest.
- Fixed custom pagination on container lookups not persisting across pages.
- Fixed a single user being able to start conflicting rollbacks simultaneously.
- Added automatic patching system for CoreProtect database changes.
- Added support for non-standard text length (for usernames/signs).
- Added container transaction support for droppers, hoppers and trapped chests.
- Added support for logging commands stored in command blocks.
- Added complete support for Minecraft 1.5 block types.
- Fixed flower pots not being logged when the block under them is broken.
- Fixed item frames / paintings not logging if destroyed by an obstruction.
- Improved item frame / painting rollback accuracy, by making them run delayed.
- Added player interaction logging for note blocks.
- Added logging for blocks destroyed by Silverfish.
- Fixed it so errors aren't shown on startup if the update server is down.
- Fixed breaking both sides of a double chest quickly causing discrepancies in the logs.
- Fixed TNT destroying double chests logging double the amount of items removed.
- Fixed WorldEdit logging not working if CoreProtect initialized before WorldEdit.
- Fixed certain SNAPSHOT versions of WorldEdit not being compatible with CoreProtect.
- Fixed falling sand/gravel (etc) from above a broken block not being logged.
- Fixed interaction logging so it only works for right clicks.
- Added interaction logging for repeaters, wooden buttons, anvils, hoppers and droppers.
- Improved error message if WorldEdit logging is unable to initialize.
- Further improved performance of event processing.
- Fixed errors being thrown if an arrow is shot by a non-entity.
- Fixed no error message displaying when invalid command entered.
- Added ability to use aliases for help commands (ex: "/co help l")
- Added "/co ro", "/co re", "/co rb" and "/co rs" as command shortcuts.
- Sped up rollbacks/restores, making them run nearly twice as fast.
- Sped up event processing, for even less time spent in the main server thread.
- Fixed errors on startup for systems using non-standard decimal formatting.
- Fixed "coreprotect.*" permission not giving access to reload command.
- Fixed bug with rolled back redstone torches (etc) not always putting out power.
- Fixed bug with rolled back glowstone blocks (etc) not always lighting up surrounding area.
- Fixed MySQL upgrades so invalid enchantment data is filtered out.
- Fixed it so the upgrade still continues properly if the config.yml file is missing.
- Fixed it so if the upgrade fails, database connections are closed so the server doesn't lock up.
- Fixed it so "apply", "cancel", "undo", and "near" aliases use parent permissions.
- Changed it so any child permission can be used as a negative permission against "coreprotect.*"
- Added "coreprotect.lookup.chat" permission, for blocking chat lookups.
- Added "coreprotect.lookup.command" permission, for blocking command lookups.
- Added "coreprotect.lookup.session" permission, for blocking session lookups.
- Changed it so MySQL databases use a more efficient database structure.
- Made it so flat file storage is now done via a single SQLite database.
- Future proof. Can now properly handle non-standard data types.
- Made it so all logging events now use a consumer, rather than generating new threads.
- Made it so block names now display on the lookup page.
- Made it so chests broken in explosions log the items that were in the chest.
- Cleaned up the interface and implemented a new colour theme.
- Made it so using the inspector now does a full block lookup.
- Made it so item transactions now log ALL item data (enchantments, item names, etc)
- Made it so all skull data, such as skull owners and skull rotation, is logged.
- Made it so radius lookups no longer require a time parameter (ex: "/co l r:10" for all nearby data).
- Made it so lookups can now do block-type only searches (ex: "/co l b:56 t:1d")
- Added a default radius of 10, which is auto added if you don't specify a radius. Changeable in config.yml
- Added a maximum radius of 100. Use "r:#global" to do a global search. Changeable in config.yml
- Made it so if you're inside a block that gets rolled back or restored, you get teleported on top of it.
- Added ability to specify number of results shown on lookup pages by using "/co l <page>:<results>".
- Added "/co reload" command for reloading configuration. Permissions can be set with "coreprotect.reload" node.
- Changed "noisy" to "#verbose". Also added a "#silent" option tag for rollback/restores if verbose mode is enabled.
- Added ability to specify multiple users in a rollback/restore/lookup (ex: "/co l u:Notch,Intelli t:1d")
- Added ability to exclude users (ex: "/co l r:5 e:Notch"). Can be used in combination with block ID's.
- Added ability to do global world lookups/rollbacks/restores. (Ex: "/co l u:Notch t:1d r:#nether")
- Made it so purges now use regular time syntax, but require a minimum time of 30 days unless run via console.
- Added ability to create per-world config files, that match the world folder name (ex: world_the_end.yml).
- Added "a:<action>" option for rollback/restores/lookups. See "/co help actions" for info.
- Added ability to search the last inspected container by using "/co l u:#container <params>".
- Added ability to rollback/restore the last inspected container (ex: "/co rollback u:#container,Notch t:1d").
- Added ability to have items taken from containers (etc) rollback by enabling "rollback-items" in config.yml
- Made it so adding "#count" to the end of a lookup command returns the # of rows found.
- Added ability to preview rollbacks/restores by adding "#preview" to the end of your command.
- Added "/co undo" alias as a shortcut to undo a rollback/restore via the opposite action.
- Added "/co near" alias as a shortcut to do a lookup with a radius of 5.
- Added chat logging. Search using "/co l u:Notch a:chat" or "/co l a:chat"
- Added command logging. search using "/co l u:Notch a:command" or "/co l a:command"
- Added login/logout logging. Search using "/co l u:Notch a:login" (etc).
- Made it so all new configuration values are by default enabled for less confusion.
- Added entity kill logging. Search using "/co l u:Notch t:1d a:kill" (etc).
- Added ability to rollback entity kills (ex: "/co rollback a:kill r:5 t:1d")
- Added ability to automatically rollback/restore mob deaths by enabling "rollback-entities" in config.yml
- Added ability to use worldedit selections by using "r:#worldedit" (or just "r:#we").
- Created a Tekkit version of CoreProtect 2.0
- Improved the base code and fixed a ton of minor bugs.
|File Name||Release Type||Game Version||Downloads||Date|
|CoreProtect v2.10.0||Release||CB 1.7.9-R0.2||80,926||10/15/2014|
|CoreProtect v2.9.0||Release||CB 1.7.9-R0.1||96,270||02/22/2014|
|CoreProtect v2.8.0||Release||CB 1.6.4-R1.0||104,660||07/02/2013|
|CoreProtect v2.7.0||Release||CB 1.5.2-R1.0||54,869||04/30/2013|
|CoreProtect v2.4.0||Release||CB 1.4.7-R1.0||22,496||03/06/2013|
|CoreProtect v2.4.0||Release||CB 1.2.5-R5.0||4,898||03/06/2013|
|CoreProtect v2.3.0||Release||CB 1.4.7-R1.0||1,654||03/05/2013|
|CoreProtect v2.3.0||Release||CB 1.2.5-R5.0||409||03/05/2013|
|CoreProtect v2.2.0||Release||CB 1.4.7-R1.0||4,965||03/01/2013|
|CoreProtect v2.2.0||Release||CB 1.2.5-R5.0||349||03/01/2013|
|CoreProtect v2.1.0||Release||CB 1.4.7-R1.0||1,781||02/28/2013|
|CoreProtect v2.1.0||Release||CB 1.2.5-R5.0||329||02/28/2013|
|CoreProtect v2.0.0||Release||CB 1.2.5-R5.0||172||02/26/2013|
|CoreProtect v2.0.0||Release||CB 1.4.7-R1.0||2,379||02/25/2013|
|CoreProtect v1.76 (CB #2602+)||Release||CB 1.4.7-R1.0||20,021||02/06/2013|
|CoreProtect v1.75 (CB #2602+)||Release||1.4.7||18,896||01/18/2013|
|CoreProtect v1.74 (CB #2545+)||Release||1.4.6||18,802||01/02/2013|
|CoreProtect v1.73 (CB #2545+)||Release||1.4.6||16,757||12/20/2012|
|CoreProtect v1.72||Release||CB 1.4.5-R1.0||4,287||12/18/2012|
|CoreProtect v1.71||Release||CB 1.4.5-R0.2||20,826||11/22/2012|
|CoreProtect v1.70||Release||CB 1.4.2-R0.2||12,000||11/06/2012|
|CoreProtect v1.63||Release||CB 1.3.2-R2.0||14,520||10/27/2012|
|CoreProtect v1.62||Release||CB 1.3.2-R2.0||1,693||10/26/2012|
|CoreProtect v1.61||Release||CB 1.3.2-R2.0||1,253||10/25/2012|
|CoreProtect v1.60||Release||CB 1.3.2-R1.0||10,861||10/12/2012|
|CoreProtect v1.54||Release||CB 1.3.2-R1.0||11,489||09/28/2012|
- Developer Tools and Admin Tools
- 671,927 Monthly Downloads
- Map and Information
- 505,075 Monthly Downloads
- Tinkers Construct
- Mobs, Processing, Technology, and Armor, Tools, and Weapons
- 448,248 Monthly Downloads
- Map and Information
- 409,470 Monthly Downloads
- API and Library
- 391,054 Monthly Downloads