What CoreProtect Does

CoreProtect intercepts block events at the server level and writes them to a local SQLite or MySQL database before they hit the world. Every time a player places or breaks a block, opens or empties a chest, or kills an entity, CoreProtect creates a record with the block type, world coordinates, player username, and Unix timestamp. This runs asynchronously so it does not add measurable latency to normal gameplay. The database grows continuously as players interact with the world, which is why the purge system discussed at the end of this guide matters. The key advantage over simpler logging approaches is the rollback system: rather than restoring a manual backup, admins can tell CoreProtect "undo everything PlayerX did in the last two hours within 20 blocks of me" and it replays the inverse of every logged action in that scope, leaving the rest of the world untouched.

Download and Install

Download the latest CoreProtect jar from Hangar (hangar.papermc.io) or the official CoreProtect website. The plugin supports Paper, Purpur, and Spigot for Minecraft 1.8 through the current version. Drop the jar into your server's plugins/ folder and restart the server. CoreProtect has no required dependencies: it ships with its own SQLite driver and connects to it by default with no config changes. If you plan to run a large server with many concurrent players, switching to MySQL is worth doing before launch, as SQLite can become a write bottleneck under heavy load. NetSkyway servers use NVMe storage, which keeps even a busy SQLite log responsive, and you get full plugin access to install CoreProtect on a free slot. The MySQL configuration is in plugins/CoreProtect/config.yml under the mysql section. For a complete walkthrough of adding plugins to your server, see our guide on how to install Minecraft plugins.

Basic Configuration

CoreProtect's default configuration works well for most servers. The key settings to review in config.yml are: use-mysql (set to true and fill in credentials if you are moving away from SQLite), logging-interval (default 5 seconds; this is how often the async write queue flushes to disk), and the blacklist section where you can exclude specific block types from logging. Excluding high-volume blocks like water, lava, and sand can significantly reduce database growth on servers with active redstone or ocean builds. You can also set default-radius to control how wide the inspect and rollback radius is when no explicit radius is specified in a command. After editing the config, run /co reload in-game or restart the server rather than doing a full restart, as CoreProtect supports live config reloads.

Looking Up Grief Events

The two most commonly used lookup tools are /co inspect and /co lookup. Running /co inspect (or its alias /co i) toggles inspect mode: right-clicking a block shows who last placed or broke it and when. Left-clicking a chest or container shows who last opened it or took items from it. This is your first step when a player reports grief, because it identifies the culprit before you commit to any rollback. For more complex searches, /co lookup accepts filters: /co lookup u:PlayerName t:1h shows everything PlayerName did in the last hour. You can add r:20 to restrict results to a 20-block radius around your current position, or a:break to show only block breaks. The results appear as a paginated list in chat; use /co lookup [page number] to scroll through them.

Rolling Back Grief

Once you have identified the griefer, rolling back their changes is a single command. /co rollback u:PlayerName t:1h r:20 undoes everything PlayerName did in the last hour within a 20-block radius of where you are standing. CoreProtect processes the rollback asynchronously and reports the number of changes reversed when it completes. If the rollback restored too much or not enough, run /co restore u:PlayerName t:1h r:20 to re-apply the changes you just undid, then adjust your time or radius parameters and try again. You can also roll back by block type, which is useful for targeted fixes: /co rollback u:PlayerName t:24h b:tnt undoes only TNT-related actions by that player in the last 24 hours. After any rollback, walk through the affected area to confirm the result before telling the reporting player the issue is resolved.

Purging Old Logs to Save Disk Space

CoreProtect's database grows without limit unless you schedule regular purges. On a server with 20 active players, the database can reach several gigabytes within a few months. The purge command is /co purge t:30d, which deletes all records older than 30 days. Most servers keep 14 to 30 days of history, which is more than enough to handle grief reports while keeping the database manageable. You can automate the purge using a scheduled task in a plugin like EssentialsX or by adding a timed command in your server management panel. Run purges during off-peak hours because they are disk-intensive and can cause brief lag spikes on heavily loaded servers. If you are on a server with limited disk space, purging weekly with a shorter retention window keeps the database under 1 GB. Checking /co status shows the current database size and helps you decide how often to purge. For more plugin recommendations, see our roundup of the best Minecraft plugins.