The advanced CoreProtect alternative – ultra-lean database and optimized high performance

UniversalProtect
Logging, inspection and rollback for Paper servers
UniversalProtect records what happens on your server and lets you inspect, revert and re-apply it. Blocks, containers, inventories, entities, chat and commands are logged asynchronously, so the main thread and TPS stay unaffected. It keeps the familiar CoreProtect workflow and adds more databases, a detailed rollback preview and entity revival.
At a Glance
| Performance | Fully asynchronous, dedicated database thread |
| Databases | DuckDB (default), SQLite, MySQL, ClickHouse |
| Rollback | Blocks, containers, inventories, entity kills and spawns |
| Safety | Detailed preview, one-command undo |
| Compatibility | Minecraft 26.3, Paper, Java 25 |
Features
Inspection
Click any block to see its full history. Use
/up lookupfor areas, players and time ranges.
- Interactive inspector for blocks, containers, signs and item frames.
- Block state changes such as grass to path, stripped logs and frame updates, stored as old and new state.
- Structured chat output with click-to-teleport coordinates, hover details (time, UUID) and page controls.
- Username changes are linked to the UUID, old names resolve to the current player.
Rollback and Restore
Revert griefing in seconds, and bring it all back if needed.
- Rolls back blocks, container contents, player inventories, entity kills and entity spawns.
- Killed mobs return with their data. Villagers keep profession, level and trades.
#previewshows scope, affected entries, block transitions, containers, entities and inventories before anything changes. Confirm with/up apply./up undoreverts the last rollback or restore.
Data and Storage
Choose the engine that fits your server and switch without downtime.
- Four engines: DuckDB, SQLite, MySQL, ClickHouse.
/up migrate-dbcopies the data live in chunks, validates it and switches atomically.- Purge by time, radius, world, block type or entity kills, then compact with
#optimize.
Control
Log exactly what you need, per world.
- Blacklist for users, commands, blocks and entities, including rules such as
minecraft:shears@#dispenser. - Per-world configuration:
world_nether.ymloverrides the globalconfig.yml. - Environmental tracking for explosions, fire, decay, liquids and buckets under system users like
#tnt,#creeper,#fire.
Integration
Built for developers and client mods.
- API modelled on CoreProtect API v13 with a lookup builder and asynchronous pre-log events.
- Networking API for client mods such as Watson.

Quick Start
- Install the jar and start the server once.
- Run
/up inspectand click a block. - Run
/up lookup u:Steve t:1d a:+block r:20to search. - Run
/up rollback u:Steve t:1h r:20 #preview, then/up apply.
/up lookup u:Steve t:1d a:+block r:20 Blocks Steve placed in the last day
/up lookup a:command f:/home t:1d Only /home commands
/up rollback u:Griefer t:2h r:30 #preview Preview before reverting
/up purge t:30d a:kill e:villager Remove old villager kills
Commands
Everyone
| Command | Description |
|---|---|
/up inspect (i) |
Toggle inspector mode |
/up lookup (l) |
Query the log with parameters |
/up near |
Lookup within 5 blocks |
/up page |
Show another page of the last lookup |
/up status / /up stats |
Status and database statistics |
Administrators
| Command | Description |
|---|---|
/up rollback (rb) |
Revert changes matching the parameters |
/up restore (rs) |
Re-apply rolled back changes |
/up apply / /up cancel |
Confirm or discard a #preview |
/up undo |
Undo the previous rollback or restore |
/up purge |
Delete historical entries |
/up migrate-db |
Switch the database engine (console only) |
/up alerts |
Toggle ore alerts |
/up consumer |
Pause or resume logging |
/up reload |
Reload configuration, world files and blacklist |
Search Parameters
Each parameter also exists in a long form: user:, time:, radius:, action:, include:, exclude:, filter:.
| Parameter | Description | Example |
|---|---|---|
u: |
Player or system user | u:Notch, u:#tnt |
t: |
Time range | t:10m, t:2h, t:1w2d |
r: |
Radius or world | r:10, r:#world_nether, r:#global |
a: |
Action type | a:+block, a:container, a:kill, a:chat |
i: / e: |
Include or exclude blocks, items, entities | i:stone, e:grass_block |
f: |
Prefix filter for chat, commands, signs | f:/home, f:-hello |
| Tag | Description |
|---|---|
#preview |
Simulate a rollback or restore |
#count |
Only the number of matches |
#summary |
Group results by player and action |
#verbose / #silent |
More detailed or no output |
#optimize |
Compact the database after a purge |

What Is Logged
| Category | Details |
|---|---|
| Blocks | Placing, breaking, multi-block structures, state changes, buckets, liquids |
| Environment | Explosions, fire, leaf decay |
| Containers | Chests, barrels, shulker boxes, furnaces, hoppers, ender chests |
| Inventories and items | Crafting, drop, pickup, throw, shoot, destroy, creative, villager trades |
| Entities | Kills and spawns, including spawn eggs |
| Players | Sessions, deaths, username changes, chat, commands, signs |

Requirements and Permissions
- Paper for Minecraft 26.3 and Java 25
- Internet access on the first start so the database drivers can be downloaded
| Permission | Description |
|---|---|
universalprotect.use |
Lookup, inspector and status |
universalprotect.admin |
Rollback, restore, purge, reload, alerts and migration |
universalprotect.networking |
Lets client mods receive results |
UniversalProtect is an independent project and is not affiliated with or endorsed by the CoreProtect authors.
Pinned Versions
- R26.3
Pages
Members
1Owner