CoreProtect - Fast, efficient block logging, rollbacks, and restores Version: v2.10.0 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. Download: Latest 1.7.10: http://dev.bukkit.org/server-mods/coreprotect/files/63 Latest Tekkit: http://dev.bukkit.org/server-mods/coreprotect/files/54 (Old, works with CB 1.2.5) Enjoy using CoreProtect? Leave a comment below! Video Tutorial: (by jfreeze256) Core Features 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 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. Configuration The configuration file is automatically generated at /plugins/CoreData/config.yml Additional information can be found within the file. Commands http://minerealm.com/community/viewtopic.php?f=32&t=6781 Permissions http://minerealm.com/community/viewtopic.php?f=32&t=6782 Compatible Third-Party Plugins & Tools http://dev.bukkit.org/server-mods/coreprotect/pages/compatible-third-party-plugins-tools/ API Documentation http://minerealm.com/community/viewtopic.php?f=32&t=14070 Sponsor Changelog: Version 2.0.9 (February 25, 2013) 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. Version 2.0.8 (July 2, 2013) 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. Version 2.0.7 (May 1, 2013) 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. Older Versions (Move your mouse to reveal the content) Older Versions (open) Older Versions (close) Version 2.0.6 (April 26, 2013) 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. Version 2.0.5 (March 24, 2013) 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. Version 2.0.4 (March 6, 2013) 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. Version 2.0.3 (March 5, 2013) 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. Version 2.0.2 (March 1, 2013) 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. Version 2.0.1 (February 28, 2013) 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. Version 2.0.0 (February 25, 2013) 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. Version 1.75 (January 17, 2013) (Requires Craftbukkit #2602 or higher) Improved alternating consumer, made it adaptable to different data types. Fixed logging of portal ignitions, allows them to be properly rolled back or restored ignited. Added alternating consumer for block placement. Updated to support Craftbukkit v1.4.7 Version 1.74 (January 2, 2013) (Requires Craftbukkit #2545 or higher) Added permission checks for WorldEdit logging. Fixed handling of invalid numbers for WorldEdit logging. Added auto-command abort if WorldEdit logging is hanging the server. Version 1.73 (December 20, 2012) (Requires Craftbukkit #2545 or higher) Fixed block type errors preventing a rollback from completing properly. Fixed invalid or corrupted timestamp data from breaking rollbacks. Added fix for WorldEdit logging occasionally causing Synchronized CHUNK_LOAD errors. Added check to prevent CoreProtect from loading if not using a compatible Craftbukkit version. Updated to support Craftbukkit 1.4.6. Craftbukkit #2545 or higher is required. Version 1.72 (December 18, 2012) (Requires Craftbukkit #2513 or higher) Recompiled to fix byecode incompatibility due to changes made to EntityChangeBlockEvent Updated imports for item frame and painting logging. Fixed order of blocks being rolled back (was reversed). Will fix torches that fell off blocks (etc) being rolled back properly. Added support for properly rolling back skull types. Version 1.71 (November 21, 2012) Added vine growth logging. Fixed it so vines broken by liquid flow are logged. Fixed severe errors when pasting WorldEdit data. Version 1.70 (November 6, 2012) Changed it so wither damage is now logged as "#wither" instead of "#explosion". Added support for logging the correct location of falling anvils. Made it so you can now lookup who placed or removed paintings and item frames with the inspector. Made it so paintings and item frames can now be rolled back or restored. Made it so when a painting or item frame falls off a block that was broken, it logs as the player who broke the block. Fixed NullPointerException showing occasionally for chest logging. Fixed ConcurrentModificationException occuring on Tekkit servers for container logging. Fixed it so invalid timestamps are ignored, and no longer cause severe errors. Implemented an alternating consumer for liquid flow logging. Should resolve out of memory errors. Improved liquid tracking, liquid should always now log as the player who placed the original source. Version 1.63 (October 27, 2012) Fixed NullPointerException errors showing on explosions and entity interactions. Again. Version 1.62 (October 26, 2012) Fixed NullPointerException errors showing on explosions and entity interactions. (1.61 bug) Version 1.61 (October 25, 2012) Fixed changes made via WorldEdit brushes not being logged. Made it so rollbacks (etc) are no longer blocked if another one is in progress. Made it so if a rollback or restore is hanging, it automatically stops itself. Made it so non-numeric characters are automatically filtered out for the radius parameter. Added support for Minecraft 1.4 block names. Added support for Wither block change logging. Version 1.60 (October 12, 2012) Updated the information in the "/co help inspect" command. Added file locking for user cache files. Added pagination for chest logs & player interaction logs. Removed the double-click feature. (Replaced with the feature below) Made it so you can type "/co l" after inspecting a block to view detailed log information. Added the "/co lookup" command for searching through logged data. Added the "/co lookup type <ID>" command, for looking up a blocks name by its ID. Made it so rollbacks/restores now utilize all data, regardless of the saved data state. Fixed piston caching, so repeated piston actions aren't logged. Made it so falling sand that was pushed by a piston is now logged. Set priority to "Monitor" for all main listener events, so data isn't logged if another plugin cancels the event. Made it so duplicate data is filtered out on rollbacks/restores. Added the ability to run commands from the server console. Added the CoreProtect API. Documentation: http://minerealm.com/community/viewtopic.php?f=32&t=10390&p=121360 Misc. bug fixes and improvements. Version 1.54 (August 10, 2012) Fixed incorrect data values sometimes being logged for blocks placed by players. Fixed "[SEVERE]" errors that would sometimes show when using the inspector. Version 1.53 (July 24, 2012) Improved chest logging for Tekkit servers. Fixed it so client mods can no longer interfere with chest logging. Made it so the purge command now also purges logged chest data. Version 1.52 (July 19, 2012) Added support for missing WorldEdit commands, brush types and added super pickaxe logging. Fixed it so mobs no longer cause errors to trigger when changing blocks in a new unvisited world. Fixed InventoryClickEvent null pointer errors and negative seek offset rollback errors. Version 1.51 (July 18, 2012) Fixed it so piston logging no longer causes huge CPU spikes. Blocks moved by pistons now log as #piston Made huge speed improvements for doing rollbacks with MySQL. (Closer to file based rollback speeds) Fixed v1.50 inventory errors that were occurring for Tekkit servers. Version 1.50 (July 17, 2012) Added it so changes made via WorldEdit are now logged. Added item transaction logging. You can now view details about items taken from chests, furnaces, etc. Made it so left-clicking the top of a block shows data for the clicked block as expected. Made it so right-clicking a block with an empty hand or tool shows data as if you placed a block in that location. Fixed it so corrupt data is ignored when doing a rollback or restore. Made it so the help menu now also displays under "/coreprotect". Made it so jungle tree growth is now logged. Made it so broken mob spawners can now be properly rolled back for new data logged. Added support for Minecraft 1.3 block types Made it so you can open/close doors with the inspector enabled. Tons of bug fixes and minor tweaks. Version 1.42 (June 5, 2012) Fixed it so global rollbacks are once again functional. Made it so "noisy-default" is by default set to "true" for newly generated configuration files. Version 1.41 (June 3, 2012) Fixed a bug with sign text data logging the first line with a colour code. Version 1.40 (June 2, 2012) Made it so colour codes on signs are logged properly and signs are rolled back properly with coloured text. Improved speed of rollbacks/restores when rolling back old data. Fixed it so modified servers can't corrupt logged sign text data. Modified it so all error messages print out more information in the console. Fixed it so the plugin no longer crashes the server when sand/gravel fall into the void. Added fix for errors occasionally showing when endermen picked up blocks. Fixed error spam showing when attempting to run commands via the console. Added ability to create a blacklist of users to not log data for. Version 1.35 (April 16, 2012) Fixed a bug with logging block broken by endermen. Version 1.34 (April 13, 2012) Fixed it so invalid or corrupted data in rollbacks is ignored. Made it so if someone breaks an air block (using hacks), the data is not logged. Pistons pushing blocks in a loop (redstone circuits) will no longer eat up memory. Version 1.33 (April 1, 2012) Fixed an issue with caching where it could go into an infinite loop and use 100% of your CPU. Added it so blocks restored during rollbacks are immediately cached. Fixed MySQL injection vulnerability when logging sign text. Version 1.32 (March 31, 2012) Changed cache to include data for all blocks, not just liquid flow. Made it so block placement updates the cache immediately. Made it so data pulled during block lookups is cached. Made it so doing block placement lookups always attempts to pull from the cache first. Added a separate cache for piston tracking. Made it so duplicate data for piston tracking is not logged. Version 1.31 (March 28, 2012) Fixed an error that occurred when dynamically generating additional worlds on the fly. Version 1.30 (March 26, 2012) Fixed invalid characters on signs corrupting all logged sign data for that chunk. Fixed permissions issue with PEX. Added it so you can't start multiple rollbacks at the same time. Added ability to track blocks moved by pistons. Added ability to show all block log history for a block by double clicking the block. (Must be enabled in the config file) Version 1.20 (March 17, 2012) Changed it so purges tell you the percent complete, rather than spamming you with data. Added it so the last 30 seconds of trackable block transactions (water/lava block flow) is stored in memory - makes block tracking much more efficient. Added ability to track when entities change/destroy blocks (Endermen, Enderdragons, etc) Added ability to log when a block naturally ignites, such as from fire spreading. Added ability to track block movement, such as sand or gravel falling. Added natural block breakage tracking for explosions. Misc minor bug fixes. Version 1.14 (March 16, 2012) Added it so existing text on signs is saved when the sign is broken. Made it so blocks aren't logged if the event is cancelled by a plugin. Fixed it so doors breaking off of other blocks properly rollback/restore. Fixed it so signs on top of broken blocks properly rollback/restore. Version 1.13 (March 13, 2012) Fixed it so usernames aren't case-sensitive when doing rollbacks/restores. 1.13b Fixed MySQL syntax for table creation. Version 1.12 (March 13, 2012) Fixed error messages showing for some explosions. Fixed issues with multi-world support. Made "/core purge" output more data during purges. Fixed it so temporary files created when using "/core purge" can't become corrupted. Version 1.11 (March 12, 2012) Fixed issue with some global rollbacks with a specified radius not completing the full circle. Fixed issue with "/core purge" returning incorrect data. Version 1.10 (March 12, 2012) Added file locking for file based data storage. It's now impossible for data to go missing when two threads are writing to a file at the same time. Fixed it so liquid tracking works works properly with MySQL. Improved performance of data lookup when doing liquid tracking. Added ability to log portals that generate naturally (such as Nether portals generating in the Nether) Added it so fire ignited with fire charges is logged. Added it so the block name (ex: "dirt") shows when using the inspector, along with the ID. Added it so block names can be used with the rollback/restore commands along with IDs. Added a "/core help" command containing basic command information. Added a "/core purge <months>" command, allowing you to easily remove old block log data and free up space. Added permissions for new commands. Other minor tweaks and fixes. Version 1.01 (March 9, 2012) Fixed a memory leak when using MySQL Fixed issue with the character ":" in MySQL passwords Version 1.00 (March 8, 2012) Initial release. -- Have a question, a suggestion, or just want to tell us thanks? Post below! Thanks for your support Version 1.01 is now available Changes: Fixed a memory leak when using MySQL Fixed issue with the character ":" in MySQL passwords -- This update is highly recommended if you are using MySQL for data storage. If you are using file based storage, this update is not required. EDIT by Moderator: merged posts, please use the edit button instead of double posting.