<black>.
<aqua>[1.5.8] <gray>- <white>2026-06-14
<lime>+ <white>NEW: <green>Hologram vault feedback (<yellow>vaults.feedback.mode: HOLOGRAM<green>, opt-in) — swap the vault chat lines for a floating <green>✔<green>/<red>✘<green> above the vault, shown only to the player who opened it, with a pillager cheer on success and a grumble on failure. Covers every outcome (open, no key, wrong key, on cooldown, can't afford a reopen). Symbols, sounds, size and duration are all configurable; particles and advancements are untouched.
<aqua>[1.5.7] <gray>- <white>2026-06-10
<lime>+ <white>NEW: <green>Per-player chamber chest loot (<yellow>chests.per-player-loot<green>, opt-in) — every player gets their OWN copy of each chamber chest/barrel's contents, Lootr-style. No more gutted chests for the second player; copies reset with the chamber. Combined with per-player vaults, the whole chamber is now per-player.
<lime>+ <white>NEW: <green>Placing VAULT blocks outside registered chambers is now blocked by default (<yellow>protection.block-wild-vault-placement<green>) — wild vaults are permanent loot dispensers the plugin can't manage. Ops / <yellow>tcp.bypass.vaultplace<green> holders are exempt.
<lime>+ <white>NEW: <green>Key-to-reopen vaults — set <yellow>vaults.reopen-cost-keys<green> and players can open an already-used vault again by paying that many matching trial keys (off by default; cooldowns remain the standard behaviour).
<lime>+ <white>NEW: <green>loot.yml can now reference vanilla or datapack loot tables directly: <yellow>type: VANILLA_TABLE<green> + <yellow>table: "minecraft:chests/trial_chambers/reward"<green> rolls the real server table into the drop. Examples at the bottom of loot.yml.
<lime>+ <white>NEW: <green>Clickable <yellow>/tcp list<green> — click a chamber name to copy it, or the <aqua>[menu]<green> button to open that chamber's GUI directly (new <yellow>/tcp menu <chamber><green> deep-link).
<lime>+ <white>NEW: <green>Anonymous bStats usage metrics (database type, feature adoption — never player data). Opt out via <yellow>metrics.enabled: false<green>.
<aqua>[1.5.6] <gray>- <white>2026-06-10
<lime>+ <white>FIX: <red>CRITICAL: <green>chamber resets could delete terrain far outside what the snapshot covers when an auto-discovered chamber grew (region merge) after its snapshot was taken. The reset clear pass is now clamped to the snapshot's own coverage — a reset can never wipe ground it can't restore. <yellow>Already-affected chamber? Run /tcp delete <chamber><green> — it removes the broken registration AND its stale snapshot (discovery re-registers it cleanly). Terrain already deleted needs a world backup.
<lime>+ <white>FIX: <green><yellow>discovery.auto-snapshot<green> captured the snapshot file but never linked it in the database, so auto-discovered chambers said "No snapshot found" at reset time. Auto-snapshots (and post-merge re-snapshots) are now properly linked.
<lime>+ <white>FIX: <green>Merging a new discovery region into an existing chamber now re-captures its snapshot (a pre-merge snapshot is stale and unsafe to restore).
<lime>+ <white>FIX: <green>The spawner glow marker can no longer be hit, killed, or farmed — it's now invulnerable and non-colliding. Previously players could kill the invisible marker (removing the glow mid-wave) and collect vanilla shulker-shell drops from it.
<lime>+ <white>FIX: <green>First wave completion in a very large chamber no longer freezes the server — the spawner count scan now reads chunk tile-entities instead of checking every block in the chamber volume.
<lime>+ <white>FIX: <green>Chamber-clear detection now re-counts spawners after discovery merges, <yellow>/tcp scan<green>, and spawner block breaks — previously a stale count could make the chamber-cleared signal (and premium-module tier-ups) fire early or never.
<lime>+ <white>FIX: <green>Breaking a glowing (chamber-remaining mode) spawner no longer leaves its glow outline floating in place until the next reset.
<aqua>[1.5.5] <gray>- <white>2026-06-10
<lime>+ <white>FIX: <green>Active-spawner glow outline sat one block above the spawner — it now wraps the spawner block exactly. Affects both <yellow>wave-active<green> and <yellow>chamber-remaining<green> glow modes.
<lime>+ <white>CHG: <green><yellow>/tcp snapshot create<green> and <yellow>/tcp snapshot restore<green> now take the chamber name as an optional argument — omit it while standing inside a chamber to target that one (like <yellow>/tcp snapshot update<green> already did). Handy on servers with lots of chambers.
<aqua>[1.5.4] <gray>- <white>2026-06-09
<lime>+ <white>FIX: <green>Active-spawner glow outline now actually renders (previously used Interaction entities which are silently glow-immune — the feature has never worked since v1.2.27). Opt in via <yellow>spawner-waves.glow-active-spawners<green>.
<lime>+ <white>FIX: <green>Update checker no longer misreads <yellow>-mc26<green> release tags as an older version, so update notifications are accurate on both the Paper and mc26 download tracks.
<lime>+ <white>NEW: <green><yellow>spawner-waves.glow-mode<green> — set to <yellow>chamber-remaining<green> to light up every uncleared spawner in the chamber while any wave is active, not just the spawner currently firing. Solves "where's the one I missed?".
<lime>+ <white>NEW: <green>Public <yellow>ChamberEnteredEvent<green> / <yellow>ChamberExitedEvent<green> for sibling plugins reacting to chamber presence (TCP-MythicTrials uses these for its in-chamber HUD).
<aqua>[1.5.2] <gray>- <white>2026-05-27
<lime>+ <white>NEW: <green>In-game update reminder. Admins now see a one-line "You are using vX, latest is vY" message with a clickable <yellow>[Download Latest Version]<green> link to Modrinth when they log in (and once on detection if already online). No in-game spam.
<lime>+ <white>FIX: <green><yellow>/tcp reset<green> no longer silently fails when a previous reset for the same chamber is still in progress — the duplicate-request log line is now a visible warning instead of a hidden FINE entry, so admins see why it bounced.
<lime>+ <white>FIX: <green><yellow>/tcp snapshot create<green> now actually verifies the DB link before claiming success. Previously a failed DB update could leave the .dat file on disk but the chamber row pointing at nothing, so the next reset logged "No snapshot found" and skipped restoration.
<lime>+ <white>FIX: <green>Tab-completion suggests <yellow>/tcp loot audit<green> (the 1.5.1 command worked but wasn't autocompleted).
<aqua>[1.5.1] <gray>- <white>2026-05-27
<lime>+ <white>NEW: <green>Per-chamber spawner cooldown can now <yellow>Match Chamber Reset<green> — set in Chamber Settings, spawners rearm right as the chamber resets.
<lime>+ <white>NEW: <green>Snapshot reminder: admins are pinged on login (and every 30 min) when discovered chambers are missing snapshots and can't be reset. Toggle under <yellow>discovery.snapshot-reminder<green>.
<lime>+ <white>NEW: <green><yellow>/tcp loot audit<green> — lists pre-1.5.0 loot entries that lost their NBT (e.g. "enchanted book" rows that drop plain books). The loot editor also flags them with a <yellow>⚠ Legacy entry<green> badge; re-add to restore enchantments.
<lime>+ <white>CHG: <green>Pending-reset console output coalesced: one summary line per scheduler tick instead of one line per chamber.
<lime>+ <white>CHG: <green>Default vault cooldowns now <yellow>0<green> (vanilla — locked until chamber reset). The old <yellow>-1<green> default was being clamped to 0 anyway.
<aqua>[1.5.0] <gray>- <white>2026-05-26
<lime>+ <white>FIX: <green>Vaults in older chambers no longer hand out vanilla trial loot (crossbows, poison arrows, etc.) instead of your configured loot tables. On servers with 100+ chambers the cache was evicting older ones, which made their vaults fall back to vanilla and ignore loot-table edits.
<lime>+ <white>FIX: <green>Automatic resets that failed with "StandaloneCoroutine was cancelled" and flooded the console with <yellow>Trial Spawner ... has no detected players<green>. Resets now complete cleanly, so spawners reset properly and the spam stops.
<lime>+ <white>FIX: <green>When many chambers were due at once they all reset together and tanked TPS. Resets are now throttled and spaced out (<yellow>global.max-concurrent-resets<green>, <yellow>global.reset-stagger-seconds<green>).
<lime>+ <white>FIX: <green>Players are no longer teleported into walls (and suffocated) when a chamber resets while they're inside — the exit scan now finds a verified-safe spot outside the chamber.
<lime>+ <white>FIX: <green>Loot items added through the editor keep their enchantments, potion effects, custom names and NBT (no more "enchanted book with no enchantment" or water bottles).
<lime>+ <white>NEW: <green>Loot editor <yellow>Bulk add<green> — open a chest and drag/shift-click any number of items in to add them all at once; remove an entry with <yellow>Q<green>/drop.
<lime>+ <white>NEW: <green>Procedural dungeon generation — build modular rooms with jigsaw-block doorways, then <yellow>/tcp dungeon generate<green> stitches them (with rotation) into a chamber. See docs.
<lime>+ <white>NEW: <green><yellow>/tcp list<green> is now paginated (no more 100-line chat spam), and <yellow>/tcp list current<green> tells you which chamber you're standing in (or the nearest).
<lime>+ <white>NEW: <green>Optional <yellow>global.use-fawe<green> to place blocks via FastAsyncWorldEdit during automatic resets (Paper-only) to reduce lag on large chambers.
<lime>+ <white>NEW: <green>Optional <yellow>global.reset-require-confirmation<green> — due chambers wait for an operator to confirm via <yellow>/tcp reset pending<green> / <yellow>/tcp reset confirm<green>, then run staggered.
<lime>+ <white>NEW: <green>Public <yellow>ChamberClearedEvent<green> for plugin developers. Fires once when every trial spawner inside a registered chamber has completed a wave in the same reset cycle — i.e. the chamber was cleared in one continuous run. Carries the chamber, the cumulative set of participating players, and the run duration. Designed to power progression plugins (per-player chamber tiers, run-based achievements, leaderboards).
<black>.
