global.reset-complete-alert config option (default true) acts as a master switch that silences all chambers at once. When the global switch is off, the GUI toggle displays a "Disabled by global config" indicator so admins immediately know why it's inert.Plus everything from the 1.4.x line: Folia/Luminol teleport crash fixes (1.4.6), Silk Touch recovery for preset spawners (1.4.5), vanilla-accurate bundled loot tables (1.4.4), chamber pause state (1.4.3), MiniMessage everywhere, smarter auto-discovery, a flatter admin GUI, and trial spawner wave tracking fixes. And from 1.3.x: custom mobs (MythicMobs, EliteMobs, EcoMobs, LevelledMobs, InfernalMobs, Citizens), fully translatable GUI (~330 gui.* keys), Bukkit events API, spawner presets, /tcp give, and Minecraft 26.x support via the -mc26 build.
📘 Full documentation: https://darkstarworks.gitbook.io/darkstarworks-plugins/tcp-documentation — most questions are answered there, and every section below links to its own detailed page.
TrialChamberPro is, and always will be, completely free. But after a lot of requests from server owners wanting to push things further, we now offer optional premium modules for servers that need more.
Place TCP preset spawners anywhere on your survival map — no Trial Chamber required. Hand them out via shops, crates, or staff commands. Wherever a player puts one down, it summons your custom mobs. Includes an in-game GUI editor, per-preset griefing protection, holograms, mob tether, creative pick-block, and state-preserving mining so players can relocate a live spawner without losing cooldown progress.
Requires TrialChamberPro v1.4.0+ (free).
👉 esmp.fun/plugins — purchase & download
The first crate plugin that doesn't use chests. Vanilla Trial Vaults are the only Minecraft block with built-in per-player loot state, two visual tiers (normal + ominous), a key mechanic, and a dramatic open animation that doesn't need a resource pack. TCP-VaultCrates lets you register vaults anywhere on your map as crates with configurable loot pools and per-tier keys. Hand keys out via shops, missions, or — when paired with TCP-WildSpawners — drop them from spawner mobs.
Requires TrialChamberPro v1.4.0+ (free).
👉 esmp.fun — purchase & download
The definitive Trial Chamber management plugin for multiplayer servers.
Transform Minecraft's Trial Chambers from single-use dungeons into renewable, multiplayer-ready content. Automatic resets, per-player loot, custom rewards, griefing protection — and it all works out of the box.
Vanilla Trial Chambers weren't designed for multiplayer. The first player takes everything, vaults stay locked forever, and griefers destroy spawners. TrialChamberPro fixes all of that.
| Problem | Solution |
|---|---|
| First player gets all loot | Per-player vault system with individual cooldowns |
| No way to reset chambers | Automatic scheduled resets with player warnings |
| Griefers break spawners | Full protection system with optional WorldGuard support |
| Paper trial key bugs | Built-in fixes for known Paper issues |
| No progression tracking | Statistics, leaderboards, and PlaceholderAPI support |
| Setup overhead per chamber | Auto-discovery — chambers register themselves |
For most servers, the only thing you need to configure is this:
# plugins/TrialChamberPro/config.yml
discovery:
enabled: true # find natural trial chambers automatically
auto-snapshot: true # capture blocks so resets can restore them
Restart once. Fly or walk through your world — every natural trial chamber registers itself as its chunks load, with per-player loot, protection, and automatic resets already active. Done.
Why it's opt-in: on old worlds that pre-date 1.21, players sometimes build decorative structures out of tuff and copper blocks. The auto-detector could register those as chambers. On fresh worlds there's no risk. More detail in the docs →
Prefer manual control? You can still register chambers with WorldEdit (/tcp generate wand MyChamber) or by coordinates — see Your First Chamber.
0 for manual-only./tcp menu does everything. No YAML editing required./tcp menu → Loot Tables, click a table, and edit it. Changes save to loot.yml instantly.- type: CUSTOM_ITEM
plugin: nexo # or itemsadder / oraxen / craftengine / mythiccrucible
item-id: mythic_sword
weight: 5
custom-model-data on any vanilla item for resource-pack integration.Every user-facing string lives in plugins/TrialChamberPro/messages.yml. Want your server in French, Chinese, Spanish, or Klingon? Edit one file, /tcp reload, done.
Supports &-style color codes, {placeholder} substitution, and Adventure Components for boss bars.
📘 Full message reference →
Prefer not to use auto-discovery? Classic workflow still works:
1. Drop the JAR in your plugins folder
2. Start your server
3. Select a Trial Chamber with WorldEdit (//wand)
4. Run: /tcp generate wand MyChamber
5. Run: /tcp snapshot create MyChamber (enables auto-reset)
6. Done!
| Command | Description |
|---|---|
/tcp menu | Open the admin GUI (does everything) |
/tcp generate wand <name> | Register chamber from WorldEdit selection |
/tcp reset <chamber> | Force immediate reset |
/tcp snapshot create <chamber> | Enable automatic resets |
/tcp loot set <chamber> <normal|ominous> <table> | Override loot for a chamber |
/tcp stats [player] | View statistics |
/tcp leaderboard <type> | View top players |
/tcp reload | Reload config & loot tables |
📘 Full command reference →
| Permission | Description | Default |
|---|---|---|
tcp.admin | Full admin access | OP |
tcp.stats · tcp.leaderboard | View own stats / leaderboards | Everyone |
tcp.spectate | Use spectator mode after death | Everyone |
tcp.bypass.cooldown | Ignore vault cooldowns (careful: removes progression!) | OP |
tcp.bypass.protection | Build in protected chambers | OP |
tcp.discovery.notify | Get notified when auto-discovery registers a chamber | OP |
Heads up:
tcp.bypass.cooldownis granted to OPs by default. If you're testing cooldowns as an OP, they'll appear broken — either test as a non-OP or explicitly negate the permission.
📘 Full permissions guide with rank examples →
| Requirement | Version |
|---|---|
| Minecraft | 1.21.1+ (use -mc26 JAR for 26.x) |
| Server | Paper, Folia, Purpur, or Pufferfish |
| Java | 21+ |
Sensible defaults work out of the box. The three settings most servers actually tweak:
global:
default-reset-interval: 172800 # 48 hours. Use 0 for manual-only resets.
vaults:
normal-cooldown-hours: -1 # -1 = vanilla (locked until chamber reset)
ominous-cooldown-hours: -1 # Set a positive number for per-player time cooldown.
discovery:
enabled: true # Auto-register natural chambers. Opt-in.
auto-snapshot: true # Allow auto-discovered chambers to restore on reset.
📘 Full config.yml reference → · loot.yml reference →
20+ placeholders for player stats (%tcp_vaults_opened%, %tcp_mobs_killed%, %tcp_time_spent%), current state (%tcp_current_chamber%), and leaderboards (%tcp_top_vaults_1_name% through _10_). Built-in 60-second cache.
📘 Full placeholder list →
Paper 1.21.1+ / 26.1.2+ · Folia Native · Java 21+
Made with Kotlin by darkstarworks
This plugin is free forever and actively maintained.
If you have questions or would like to just say Hi, come join the Discord.
Rather stay silent? (Anonymous) donations are also VERY welcome: https://ko-fi.com/darkstarworks

Because Trial Chambers deserve better than being a "one and done" dungeon.