Commands


You can access the following commands by using /co.


Command Overview

Command Description
/co help Display a list of commands
/co inspect Toggle the inspector
/co lookup Lookup block data
/co rollback Rollback block data
/co restore Restore block data
/co purge Delete old block data
/co reload Reload the configuration file
/co status View the plugin status
/co consumer Toggle consumer processing
/co migrate-db Migrate between database backends

Alias Commands

Command Description
/co near Performs a lookup with a radius of 5
/co undo Revert a rollback/restore via the opposite action

Command Details

Detailed command information is listed below.

/co help

Display a list of commands in-game.


/co inspect

Enable the inspector. Type the command again to disable it. You can also use just "/co i".


/co lookup

Perform a lookup. Nearly all of the parameters are optional.

Command Parameters
/co lookup u:<user> t:<time> r:<radius> a:<action> i:<include> e:<exclude>
/co l /co lookup <params>

Parameters

Parameter Description
u:<user> Specify the user(s) to lookup.
t:<time> Specify the amount of time to lookup.
r:<radius> Specify a radius area to limit the lookup to.
a:<action> Restrict the lookup to a certain action.
i:<include> Include specific blocks/entities in the lookup.
e:<exclude> Exclude blocks/entities from the lookup.
f:<filter> Include or exclude chat, command, or sign text by prefix.
#<hashtag> Add a hashtag to perform additional actions.

Pagination

If multiple pages are returned, use the command /co lookup <page> to switch pages.
To change the number of lines displayed on a page, use /co lookup <page>:<lines>.

For example, /co l 1:10 will return 10 lines of data, starting at the first page.


/co rollback

Perform a rollback. Uses the same parameters as /co lookup.
Rollbacks can be used to revert player actions.

Command Parameters
/co rollback u:<user> t:<time> r:<radius> a:<action> i:<include> e:<exclude>
/co rb /co rollback <params>

/co restore

Perform a restore. Uses the same parameters as /co lookup.
Restoring can be used to undo rollbacks or to restore player actions.

Command Parameters
/co restore u:<user> t:<time> r:<radius> a:<action> i:<include> e:<exclude>
/co rs /co restore <params>

/co purge

Purge old block data. Useful for freeing up space on your HDD if you don't need the older data.

Command Parameters
/co purge t:<time> r:<world/radius> i:<include> e:<exclude> a:kill

For example, /co purge t:30d will delete all data older than one month, and only keep the last 30 days of data.

If used in-game, only data older than 30 days can be purged.
If used from the console, only data older than 24 hours can be purged.

Purging Worlds
You can optionally specify a world in CoreProtect v19+.
For example, /co purge t:30d r:#world_nether will delete all data older than one month in the Nether, without removing data in any other worlds.

Purging by Radius
A radius can limit a purge of specific block types or entity kills to the area around you. It only applies to block and entity kill data, so it must be combined with i: or a:kill, and it can only be used in-game. A radius always applies to the world you are in, so it cannot be combined with a world such as r:#world_nether. The radius is limited by max-radius in the config, like other commands. For example, /co purge t:30d r:50 i:zombie will delete zombie kills older than one month within 50 blocks of you, without removing any other data. Use r:50x10 to also limit the height to 10 blocks above and below you.

Purging Blocks
You can optionally specify block types in CoreProtect v23+.
For example, /co purge t:30d i:stone,dirt will delete all stone and dirt data older than one month, without removing other block data.

Purging Entity Kills
Entity kill logs can be purged separately from other data on SQLite, MySQL, and DuckDB. Each kill also removes the saved entity data used to restore the mob on rollback.

  • /co purge t:30d a:kill deletes all entity kills older than one month, and keeps all other data.
  • /co purge t:30d i:zombie,skeleton deletes zombie and skeleton kills older than one month. Entity and block types can be combined in i:.
  • /co purge t:30d e:villager,wolf deletes all data older than one month, but keeps villager and wolf kills.
  • /co purge t:30d a:kill e:villager r:#world deletes entity kills older than one month in the overworld, except villager kills.

e: only accepts entity types. It cannot be combined with entity types in i:, or with only block types in i:, because a block restriction already keeps every kill. a:kill cannot be combined with block types in i:.

Database Optimization

In CoreProtect v2.15+, adding #optimize to the end of the command (for example, /co purge t:30d #optimize) will also optimize supported database tables and reclaim unused disk space. How this option is handled depends on the database backend:

  • SQLite already rebuilds the database from retained data and reclaims unused file space as part of a manual purge, so #optimize is not needed.
  • MySQL normally deletes matching rows. Adding #optimize also removes saved entity data in the purged time range that no entity kill references anymore (this requires the CREATE TEMPORARY TABLES privilege), then optimizes its tables to reclaim unused space.
  • DuckDB deletes matching rows in one transaction and checkpoints afterward. #optimize has no additional effect.
  • ClickHouse drops fully covered monthly partitions for an unfiltered time purge and synchronously removes rows from partial or filtered partitions. Adding #optimize also runs OPTIMIZE TABLE ... FINAL.

#optimize can significantly slow MySQL and ClickHouse purges and is generally unnecessary.


/co reload

Reloads the configuration file.


/co status

Displays the plugin status and version information.


/co consumer

Console command to pause or resume consumer queue processing.


/co migrate-db

Migrate data from the active database backend to a different backend. This is a console-only command.

Command Parameters
/co migrate-db <sqlite|mysql|duckdb|clickhouse> [--full-validation]

By default, migration validates all table statistics and compares approximately 1% of each large history table, with full comparisons for small and reference tables. Add --full-validation to compare every copied row.

The target namespace must contain no CoreProtect data; a DuckDB target must use a new database file, and database-lock must remain enabled. After a successful migration, CoreProtect automatically updates database-type in config.yml before queued writes resume.

Note: Migrations between SQLite and MySQL require a CoreProtect 23.0+ Patreon build. Any migration involving DuckDB or ClickHouse requires CoreProtect 25.0+.

For complete migration instructions, safety guidelines, and troubleshooting information, see the Database Migration documentation.


Parameter Details

u:<user>

You can specify a single user or multiple users.

  • Example: u:Notch
  • Example: u:Notch,Intelli
  • Example: u:#fire,#tnt,#creeper,#explosion

t:<time>

You can specify weeks, days, hours, minutes, and seconds.
Time amounts can be combined, and decimals may be used.

  • Example: t:2w,5d,7h,2m,10s
  • Example: t:5d2h
  • Example: t:1h-2h (between one to two hours)
  • Example: t:2.50h (two and a half hours)

r:<radius>

A numeric radius targets within that many blocks of your player location.

  • Example: r:10 (target within 10 blocks of your location)
  • Example: r:#world_the_end (target a specific world)
  • Example: r:#global (target the entire server)
  • Example: r:#worldedit or r:#we (target a WorldEdit selection)

a:<action>

Restrict the command to a specific action

  • Example: a:+block (only include placed blocks)

Actions

Action Description
a:block blocks placed/broken
a:+block blocks placed
a:-block blocks broken
a:chat messages sent in chat
a:click player interactions
a:command commands used
a:container items taken from or put in chests
a:+container items put in chests
a:-container items taken from chests
a:inventory items added or removed from player inventories
a:+inventory items added to player inventories
a:-inventory items removed from player inventories
a:item items dropped, thrown, picked up, deposited, or withdrawn by players
a:+item items picked up or withdrawn by players
a:-item items dropped, thrown, or deposited by players
a:kill mobs/animals killed
a:spawn entities placed or spawned by players
a:session player logins/logouts
a:+session player logins
a:-session player logouts
a:sign messages written on signs
a:username username changes

i:<include>

Can be used to specify a block/item/entity.

  • Example: i:stone (only include stone)
  • Example: i:stone,oak_wood,bedrock (specify multiple blocks)

You can find a list of block names at https://coreprotect.net/wiki-blocks.
You can find a list of entity names at https://coreprotect.net/wiki-entities.


e:<exclude>

Can be used to exclude a block/item/entity/user.

  • Example: e:tnt (exclude TNT)

f:<filter>

Filter message prefixes when using a:chat, a:command, or a:sign.

  • Example: a:command f:/ban (commands starting with "/ban")
  • Example: a:command f:/ban,/kick (commands starting with either prefix)
  • Example: a:command f:/ban,-/banlist (include "/ban" and exclude "/banlist")
  • Example: a:chat f:-hello (exclude messages starting with "hello")
  • Example: a:sign f:Diamond Shop,-Diamond Shop Closed (filter prefixes on the recorded sign face)

Separate filters with commas. Included prefixes are alternatives; any matching excluded prefix removes the result. Exclusions can be used on their own. Each prefix requires at least three characters, excluding the leading - marker. Spaces are allowed, and *, %, _, and ~ are matched literally.


#<hashtag>

Add a hashtag to the end of your command to perform additional actions.

  • Example: #preview (perform a rollback preview)

Hashtags

Hashtag Effect
#preview Preview a rollback/restore
#count Return the number of rows found in a lookup query
#summary Return the row count and per-user material totals
#verbose Display additional information during a rollback/restore
#silent Display minimal information during a rollback/restore

Example Commands

Example Rollback Commands

By default, if no radius is specified, a radius of 10 will be applied, restricting the rollback to within 10 blocks of you. Use r:#global to do a global rollback.

  • /co rollback Notch t:1h
    (rollback Notch 1 hour (with default radius of 10))
  • /co rollback u:Notch,Intelli t:1h #preview
    (PREVIEW rolling back both Notch & Intelli 1 hour (with default radius of 10))
  • /co rollback u:Notch t:23h17m
    (rollback Notch 23 hours and 17 minutes (with default radius of 10))
  • /co rollback u:Notch t:1h i:stone
    (rollback ONLY stone placed/broken by Notch within the last hour (with default radius of 10))
  • /co rollback u:Notch t:1h i:stone a:-block
    (rollback ONLY stone BROKEN by Notch within the last hour (with default radius of 10))
  • /co rollback u:Notch t:1h r:#global e:stone,dirt
    (rollback EVERYTHING Notch did in the last hour EXCEPT for stone and dirt placed/broken)
  • /co rollback u:Notch t:1h r:20
    (rollback griefing Notch did in the last hour that is within 20 blocks of you)
  • /co rollback u:Notch t:1h r:#nether
    (rollback griefing Notch did in the last hour ONLY in the Nether)
  • /co rollback u:Notch t:5m a:inventory
    (rollback inventory transactions by Notch in the last 5 minutes)
  • /co rollback t:15m r:30
    (rollback everything done in the last 15 minutes by anyone within 30 blocks of you)
  • /co rollback t:15m r:#worldedit
    (rollback everything done in the last 15 minutes in a WorldEdit selection)

Example Lookup Commands

Lookup commands are generally the same as rollback commands. The primary difference is that a default radius is not applied to lookups, meaning all lookup commands do a global search by default.

  • /co lookup i:diamond_ore t:1h a:-block
    (lookup all diamond ore mined in the last hour)
  • /co lookup u:Notch t:30m a:chat
    (lookup chat messages sent by Notch in the last 30 minutes)
  • /co lookup u:Notch t:3d a:inventory
    (lookup inventory transactions by Notch in the last 3 days)
  • /co lookup u:Notch a:login
    (lookup all logins ever done by Notch)
  • /co lookup u:Notch a:login
    (lookup all logins ever done by Notch)
  • /co lookup u:Notch a:username
    (lookup previous usernames used by Notch)
  • /co lookup r:50 t:7d a:block #summary (show the matching row count and material totals for each user within the same area and time range)