Copy & refill vanilla chests with a cooldown — while ignoring player-placed chests, respecting claims (GriefPrevention / GriefDefender), and staying gentle on TPS with a time-budgeted scanner.
I built this to stop server-wide “razzia” runs—when one player (intentionally or not) clears every chest—so everyone still gets a chance to loot, even if others got there first. It boosts replayability and makes the server more welcoming to new players.
ChestToLoot discovers world-generated chests, snapshots their contents once, and then refills them after a cooldown when players loot them.
ChestToLoot will not manage:
exclusions.yml)Designed to avoid heavy world iteration:
.mca region headers (no worldgen)scanned-chunks.yml) so each chunk is scanned only onceCommands include:
/ctl status — live progress (queues, managed count, throttle)/ctl pause / /ctl resume — control scanning/ctl speed <chunks> <chests> — adjust throttles live/ctl save — flush all data filesOptional hook:
alsoRunConsoleCommand)onlySnapshotIfNonEmpty=true).resetMinutes, the chest is restored to the template unless blocked by:
Tip: This design focuses on replenishing player-lootable chests without fighting other systems.
colonyCenters listCHEST, TRAPPED_CHEST/chesttoloot or /ctl:
status — show queues, managed count, % scan discovered, throttle, task statepause / resume — control the scannerspeed <chunks> <chests> — adjust throttles livesave — flush all data fileschesttoloot.admin (default: op)ChestToLoot-1.0.0.jar into plugins/config.yml to taste, then /reload or restartBuilt for Spigot or Paper 1.12.x (built against spigot-api:1.12.2).
The snapshot remains in data, but refills are skipped inside claims. If the chest is broken and respectClaimsOnRespawn=true, CTL forgets it instead of respawning.
No — player-placed chests are excluded at place time and recorded permanently in exclusions.yml.
ChestToLoot targets vanilla chest blocks only. Other containers (drawers, crates, etc.) aren’t scanned/managed.