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 has an official IRC channel! Join #coreprotect on irc.esper.net | EsperNet Web IRC
- Added check to determine if server is running Java 1.7 or higher before starting plugin.
- Changed MySQL connection handler to use a connection timeout instead of a network timeout.
- Fixed dynamic patching system failing to detect JAR file under certain conditions.
- Added logging for all 1.9/1.10 block and entity types.
- Improved internal patching system to dynamically detect new patches.
- Improved purges by having them defragment/recreate the entire database.
- Improved MySQL connection handling & SQLite index handling.
- Changed minimum requirements from Java 1.6 to Java 1.7.
- Fixed internal caches becoming corrupted if the database format (MySQL/SQLite) is switched via "/co reload".
- Fixed lookups with invalid radius parameters returning confusing results.
- Fixed being unable to use "block:skull" as a valid lookup parameter.
- Fixed "/co l u:<user> a:username" randomly failing due to an issue with the UUID cache.
- Fixed purges on SQlite databases failing under certain conditions. [TICKET-536]
- Fixed items dragged across slots in chests not being logged. [TICKET-550]
- Fixed right clicking with the inspector performing a lookup twice. [TICKET-539]
- Fixed slanted rails not being logged as broken when the adjacent block is removed. [TICKET-421]
- 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.13.1||Release||1.10||16,246||Jul 29, 2016|
|CoreProtect v2.13.0||Release||1.10||332||Jul 28, 2016|
|CoreProtect v2.12.0||Release||1.8.1||131,350||Jul 2, 2015|
|CoreProtect v2.11.3||Release||1.8.1||53,204||Jun 24, 2015|
|CoreProtect v2.11.2||Release||1.8.1||6,828||Jun 9, 2015|
|CoreProtect v2.11.1||Release||1.8.1||3,679||Jun 1, 2015|
|CoreProtect v2.11.0||Release||1.8.1||1,848||Jun 1, 2015|
|CoreProtect v2.10.0||Release||CB 1.7.9-R0.2||87,279||Oct 15, 2014|
|CoreProtect v2.9.0||Release||CB 1.7.9-R0.1||97,211||Feb 22, 2014|
|CoreProtect v2.8.0||Release||CB 1.6.4-R1.0||105,389||Jul 2, 2013|
|CoreProtect v2.7.0||Release||CB 1.5.2-R1.0||55,964||Apr 30, 2013|
|CoreProtect v2.5.0||Release||1.5.1||28,487||Mar 23, 2013|
|CoreProtect v2.4.0||Release||CB 1.4.7-R1.0||22,584||Mar 6, 2013|
|CoreProtect v2.4.0||Release||CB 1.2.5-R5.0||5,210||Mar 6, 2013|
|CoreProtect v2.3.0||Release||CB 1.4.7-R1.0||1,701||Mar 5, 2013|
|CoreProtect v2.3.0||Release||CB 1.2.5-R5.0||423||Mar 5, 2013|
|CoreProtect v2.2.0||Release||CB 1.4.7-R1.0||4,986||Mar 1, 2013|
|CoreProtect v2.2.0||Release||CB 1.2.5-R5.0||382||Mar 1, 2013|
|CoreProtect v2.1.0||Release||CB 1.4.7-R1.0||1,797||Feb 28, 2013|
|CoreProtect v2.1.0||Release||CB 1.2.5-R5.0||379||Feb 28, 2013|
|CoreProtect v2.0.0||Release||CB 1.2.5-R5.0||186||Feb 26, 2013|
|CoreProtect v2.0.0||Release||CB 1.4.7-R1.0||2,409||Feb 25, 2013|
|CoreProtect v1.76 (CB #2602+)||Release||CB 1.4.7-R1.0||20,048||Feb 6, 2013|
|CoreProtect v1.75 (CB #2602+)||Release||1.4.7||18,925||Jan 18, 2013|
|CoreProtect v1.74 (CB #2545+)||Release||1.4.6||18,837||Jan 2, 2013|
|CoreProtect v1.73 (CB #2545+)||Release||1.4.6||16,813||Dec 20, 2012|
|CoreProtect v1.72||Release||CB 1.4.5-R1.0||4,350||Dec 18, 2012|
|CoreProtect v1.71||Release||CB 1.4.5-R0.2||20,842||Nov 22, 2012|
|CoreProtect v1.70||Release||CB 1.4.2-R0.2||12,050||Nov 6, 2012|
|CoreProtect v1.63||Release||CB 1.3.2-R2.0||14,825||Oct 27, 2012|
|CoreProtect v1.62||Release||CB 1.3.2-R2.0||1,700||Oct 26, 2012|
|CoreProtect v1.61||Release||CB 1.3.2-R2.0||1,259||Oct 25, 2012|
|CoreProtect v1.60||Release||CB 1.3.2-R1.0||10,890||Oct 12, 2012|
|CoreProtect v1.54||Release||CB 1.3.2-R1.0||11,552||Sep 28, 2012|