Repository navigation
Configuration
All options of config.yml.
All settings live in plugins/UniversalProtect/config.yml. Apply changes with /up reload.
| Key | Default | Description |
|---|---|---|
log.block |
Yes | Placing and breaking blocks, explosions, fire, buckets |
log.block-changes |
Yes | State changes such as grass → path. Logged as -block (old) and +block (new) |
log.container |
Yes | Chests, barrels, furnaces, hoppers and similar |
log.items |
Yes | Dropping, throwing, shooting, destroying, creative items, broken tools |
log.pickup |
No | Picking up items (creates a lot of entries) |
log.interact |
Yes | Doors, levers, buttons, using chests |
log.signs |
Yes | Sign text |
log.frames |
Yes | Item frames and paintings |
log.chat |
Yes | Chat messages |
log.commands |
Yes | Commands |
log.kills |
Yes | Mob and player kills |
log.deaths |
Yes | Player deaths |
log.sessions |
Yes | Logins and logouts |
log.inventory |
Yes | Crafting, dropping and picking up in player inventories |
log.spawns |
Yes | Spawn eggs, armor stands, boats |
log.usernames |
Yes | Username changes |
log.trades |
Yes | Villager trades (sell / buy) |
log.ender |
Yes | Ender chest contents |
| Key | Default | Description |
|---|---|---|
alerts.blocks |
diamond ores, ancient debris | Blocks that trigger /up alerts
|
alerts.cooldown-seconds |
10 |
Minimum time between identical alerts |
auto-purge-days |
0 |
Automatically delete entries older than this many days (0 = off) |
lookup.default-lines |
15 |
Lines per lookup page |
lookup.max-lines |
100 |
Upper limit for lookup 1:N
|
preview.max-blocks |
20000 |
Maximum size of a preview |
preview.timeout-seconds |
120 |
A preview expires after this time |
rollback.time-budget-ms |
20 |
Maximum time per tick that a rollback may use |
networking.enabled |
true |
Networking API for client mods |
database:
type: duckdb # duckdb | sqlite | mysql | clickhouseAll database options are described in Databases.
Tip: You can override every
log.*option for single worlds, see Per-World Configuration.
| Key | Default | Description |
|---|---|---|
log.command-blocks |
Yes | Track /fill, /setblock and /clone for #command rollbacks. Can be set per world |
chat.width-px |
300 |
Assumed chat width in pixels. Keeps every reply within 20 chat lines. Lower it if wrapped lines still exceed your chat window |
retention.aggregate-after-days |
0 |
Run /up compact automatically for entries older than this many days (0 = off, at least 7 is used). See Purge
|
alerts.watch-blocks |
empty | Blocks that always alert staff when broken. This is the key name in the generated config.yml (listed as alerts.blocks above). Ore detection is now handled by detection.xray
|
Anomaly detection warns staff with universalprotect.admin (toggle with /up alerts), writes to the console and can post to Discord. Changes made by commands are ignored. See Investigation and Alerts.
| Key | Default | Description |
|---|---|---|
detection.enabled |
true |
Master switch |
detection.cooldown-seconds |
60 |
Minimum time between two alerts of the same rule for the same player, unless the count has at least doubled |
detection.discord-webhook |
empty | HTTPS URL of a Discord webhook. Alerts are posted there too |
| Key | Default | Description |
|---|---|---|
enabled |
true |
Turn X-ray detection on or off |
min-veins |
6 |
Alert when at least this many separate veins of rare ore were found |
window-seconds |
1200 |
Time window for counting |
max-blocks-per-vein |
40 |
Ignore players who mine more blocks than this per vein on average. Normal mining is not flagged |
vein-radius |
6 |
Ore blocks closer together than this count as one vein |
cooldown-seconds |
600 |
Minimum time between X-ray alerts for the same player, unless the vein count has doubled |
explosive-grace-seconds |
600 |
Ore found this soon after the player placed TNT, a bed or a respawn anchor is ignored for the blocks in explosive-exempt
|
match |
diamond_ore, emerald_ore, ancient_debris | Ores that count as rare |
explosive-exempt |
ancient_debris | Ores that are ignored during the grace period |
Each rule has enabled, count, window-seconds and match (a list of block or item names). An empty match means everything.
| Rule | Default | Alerts when a player ... |
|---|---|---|
detection.spawner-breaking |
on, 3 in 600 s | breaks spawners |
detection.tnt-placing |
off, 40 in 30 s | places TNT |
detection.lava-placing |
off, 15 in 30 s | places lava |
detection.mass-breaking |
off, 3000 in 10 s | breaks very many blocks (match empty = all blocks) |
detection.container-looting |
off, 256 in 60 s | takes valuable items from containers (diamond, netherite, elytra, shulker box, totem, enchanted golden apple, beacon). Item amounts are counted |
Related pages: Per World Configuration · Databases · Blacklist
UniversalProtect · Minecraft 26.3 · Paper · Java 25 · API v13
Getting started
Using the plugin
- Commands
- Inspector
- Parameters and Tags
- Actions
- Lookup Examples
- Rollback and Restore
- Investigation and Alerts
- Purge
Administration
Developers
Help