Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/TrialChamberPro
  • TrialChamberPro 1.5.8

    release14 июня 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.8 - 2026-06-14

    Added

    • Hologram vault feedback (vaults.feedback.mode, default TEXT = unchanged). Switch to HOLOGRAM and the chat lines for every vault outcome are replaced by a floating green ✔ / red ✘ above the vault — shown only to the player who interacted, so looters get a clean, glanceable result instead of a column of [TCP] chat. Covers all outcomes: a tick on a successful open, a cross on every failure (no key, wrong key type, on cooldown/locked, can't afford a reopen). Each result is paired with a configurable sound (defaults to the pillager celebrate cheer for success and the pillager grumble for failure) and despawns after a configurable duration. Position, scale, see-through, the symbols themselves, and both sounds are all tunable under vaults.feedback.hologram / vaults.feedback.sounds. Particles and advancements are unaffected, so existing setups keep their sparkles either way.
  • TrialChamberPro 1.5.8

    release14 июня 2026 г.

    1.5.8 - 2026-06-14

    Added

    • Hologram vault feedback (vaults.feedback.mode, default TEXT = unchanged). Switch to HOLOGRAM and the chat lines for every vault outcome are replaced by a floating green ✔ / red ✘ above the vault — shown only to the player who interacted, so looters get a clean, glanceable result instead of a column of [TCP] chat. Covers all outcomes: a tick on a successful open, a cross on every failure (no key, wrong key type, on cooldown/locked, can't afford a reopen). Each result is paired with a configurable sound (defaults to the pillager celebrate cheer for success and the pillager grumble for failure) and despawns after a configurable duration. Position, scale, see-through, the symbols themselves, and both sounds are all tunable under vaults.feedback.hologram / vaults.feedback.sounds. Particles and advancements are unaffected, so existing setups keep their sparkles either way.
  • TrialChamberPro 1.5.7-mc26

    release10 июня 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.7 - 2026-06-10

    Added

    • Per-player chamber container loot (chests.per-player-loot, opt-in). Lootr-style: every player who opens a chest, trapped chest, or barrel inside a registered chamber gets their own private copy of its contents — the second player into a chamber no longer finds gutted chests. The real container is never modified (it stays the pristine template each player's copy is cloned from on first open); copies persist in a new player_container_loot table, survive restarts, and reset with the chamber so every cycle is fresh loot for everyone. Double chests share one copy. Hopper automation in/out of chamber containers is blocked while enabled (it would drain or pollute the shared template). Containers placed by players inside chambers are tagged at place time and keep vanilla behaviour. Admins with tcp.admin.containers (default op) sneak-click to open the real container and edit the template — a normal click gives them their own copy like any player, so the feature can't be silently "broken for ops only". Together with per-player vaults, the entire chamber is now per-player. Decorated pots are deliberately excluded (their loot is break-based and already renews via chamber resets).
    • Wild vault placement blocked (protection.block-wild-vault-placement, default on). Placing a functioning VAULT block outside a registered chamber is now cancelled with a friendly message — a wild vault is a permanent vanilla loot dispenser TCP can't manage (no per-player tracking, no resets, no loot tables). Players with tcp.bypass.vaultplace (default op) are exempt, so creative builds and crate setups are unaffected.
    • Key-to-reopen vaults (vaults.reopen-cost-keys, default 0 = off). Players can open an already-used vault again by paying the configured number of matching trial keys in total (a fresh open costs 1, so 1 = reopen at the same price, 2 = one extra key). Keys are taken from the main hand; the cooldown/locked message is replaced by a price hint when the player can't afford it. Covers the key-gated-reopen model popularized by single-feature vault-reset plugins while keeping TCP's time/reset-based cooldowns as the default.
    • Vanilla / datapack loot-table passthrough in loot.yml. A pool entry of type: VANILLA_TABLE with table: "namespace:path" (e.g. minecraft:chests/trial_chambers/reward or any datapack key) populates the referenced server loot table when rolled and adds every generated stack to the drop. Resolved via the Bukkit LootTable API at roll time on the player's region thread; unknown keys log a warning and yield nothing without breaking the rest of the pool. Examples documented at the bottom of loot.yml.
    • Clickable /tcp list. Each chamber line is now interactive for players: click the chamber name to copy it to the clipboard (hover hint included), or click the new [menu] button to jump straight into that chamber's GUI detail view. Backed by a new /tcp menu <chamber> deep-link (tab-completed; same tcp.admin.menu permission). Console output keeps the plain localized format.
    • Anonymous usage metrics (bStats). Aggregate, non-personal charts that guide development: database backend, discovery enabled, glow mode, chamber-count bucket, and which premium modules are installed. Opt out via metrics.enabled: false or the global bStats config.
  • TrialChamberPro 1.5.7

    release10 июня 2026 г.

    1.5.7 - 2026-06-10

    Added

    • Per-player chamber container loot (chests.per-player-loot, opt-in). Lootr-style: every player who opens a chest, trapped chest, or barrel inside a registered chamber gets their own private copy of its contents — the second player into a chamber no longer finds gutted chests. The real container is never modified (it stays the pristine template each player's copy is cloned from on first open); copies persist in a new player_container_loot table, survive restarts, and reset with the chamber so every cycle is fresh loot for everyone. Double chests share one copy. Hopper automation in/out of chamber containers is blocked while enabled (it would drain or pollute the shared template). Containers placed by players inside chambers are tagged at place time and keep vanilla behaviour. Admins with tcp.admin.containers (default op) sneak-click to open the real container and edit the template — a normal click gives them their own copy like any player, so the feature can't be silently "broken for ops only". Together with per-player vaults, the entire chamber is now per-player. Decorated pots are deliberately excluded (their loot is break-based and already renews via chamber resets).
    • Wild vault placement blocked (protection.block-wild-vault-placement, default on). Placing a functioning VAULT block outside a registered chamber is now cancelled with a friendly message — a wild vault is a permanent vanilla loot dispenser TCP can't manage (no per-player tracking, no resets, no loot tables). Players with tcp.bypass.vaultplace (default op) are exempt, so creative builds and crate setups are unaffected.
    • Key-to-reopen vaults (vaults.reopen-cost-keys, default 0 = off). Players can open an already-used vault again by paying the configured number of matching trial keys in total (a fresh open costs 1, so 1 = reopen at the same price, 2 = one extra key). Keys are taken from the main hand; the cooldown/locked message is replaced by a price hint when the player can't afford it. Covers the key-gated-reopen model popularized by single-feature vault-reset plugins while keeping TCP's time/reset-based cooldowns as the default.
    • Vanilla / datapack loot-table passthrough in loot.yml. A pool entry of type: VANILLA_TABLE with table: "namespace:path" (e.g. minecraft:chests/trial_chambers/reward or any datapack key) populates the referenced server loot table when rolled and adds every generated stack to the drop. Resolved via the Bukkit LootTable API at roll time on the player's region thread; unknown keys log a warning and yield nothing without breaking the rest of the pool. Examples documented at the bottom of loot.yml.
    • Clickable /tcp list. Each chamber line is now interactive for players: click the chamber name to copy it to the clipboard (hover hint included), or click the new [menu] button to jump straight into that chamber's GUI detail view. Backed by a new /tcp menu <chamber> deep-link (tab-completed; same tcp.admin.menu permission). Console output keeps the plain localized format.
    • Anonymous usage metrics (bStats). Aggregate, non-personal charts that guide development: database backend, discovery enabled, glow mode, chamber-count bucket, and which premium modules are installed. Opt out via metrics.enabled: false or the global bStats config.
  • TrialChamberPro 1.5.6-mc26

    release10 июня 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.6 - 2026-06-10

    Fixed

    • CRITICAL: chamber reset could wipe terrain far beyond what the snapshot covers. When an auto-discovered chamber's bounds grew after its snapshot was captured (discovery region merges), the reset's clear-added-blocks pass cleared the entire current AABB while the snapshot could only restore the old, smaller region — deleting every block in the newly annexed volume (terrain, builds, neighbouring structures). The clear region is now clamped to the intersection of the chamber bounds and the snapshot's actual coverage, with a console warning pointing at /tcp snapshot create when a mismatch is detected. A snapshot can no longer destroy ground it cannot put back.
      • If one of your chambers was already affected: run /tcp delete <chamber> — this removes the broken registration and its stale snapshot in one step (discovery will cleanly re-register the chamber afterwards if enabled). Terrain that a pre-1.5.6 reset already deleted cannot be recovered by the plugin; restore that area from a world backup (or let it regenerate if it was untouched wilderness).
    • Discovery auto-snapshot never linked the snapshot in the database. discovery.auto-snapshot: true captured the .dat file but skipped the snapshot_file DB update (the step /tcp generate performs), so auto-discovered chambers reported "No snapshot found" at reset time and skipped restoration — or worse, kept a stale link. Both the registration and merge paths now link the file and log loudly if the DB write fails.
    • Stale snapshot after a discovery merge. Merging a newly discovered region into an existing chamber now re-captures the snapshot whenever the chamber already had one (previously only when discovery.auto-snapshot was on), because a pre-merge snapshot no longer covers the grown bounds and is dangerous to restore. If the re-capture fails, the console warns that the existing snapshot is stale.
    • Glow marker was killable, collidable, and farmable. The invisible glow Shulker had no invulnerability or collision flags: players could target it (health-indicator mods showed "Shulker 30❤" when looking at a glowing spawner), kill it (removing the glow mid-wave and rolling vanilla shulker loot — farmable shulker shells at every glowing spawner), and arrows aimed near the spawner collided with it. The marker is now invulnerable + non-collidable at both spawn sites (wave-attached and chamber-remaining standalone).
    • First wave completion in a large chamber could freeze the server. ChamberClearedEvent's spawner census (and the chamber-remaining glow's location scan) iterated every block in the chamber AABB on the region thread — up to 1.5M getBlockAt calls plus sync chunk loads on a merged discovery chamber. Both now share a chunk tile-entity scan (Chunk#getTileEntities, the same pattern ChamberDiscoveryListener uses): O(chunks × tile-entities) instead of O(volume).
    • Stale spawner counts made ChamberClearedEvent fire early or never. The per-chamber spawner count/location caches were only cleared at shutdown, but the spawner set changes on discovery merges (bounds grow), /tcp scan, and spawner block breaks. New SpawnerWaveManager.invalidateChamberSpawnerCaches(chamberId) is now called from ChamberManager.updateBounds, scanChamber, and the spawner BlockBreakEvent handler — premium-module tier-ups (TCP-MythicTrials) depend on this signal being correct.
    • Breaking a standalone-glowed spawner orphaned its glow. In chamber-remaining mode, breaking a non-active glowing spawner left its glow entity floating until the next chamber reset (cancelWaveAt only cleans the wave-attached glow). The block-break handler now also removes the standalone glow.
    • Pending spectator offers leaked when a dead player disconnected. PlayerDeathListener.pendingOffers was only cleared on respawn; a player who quit on the death screen and never rejoined left their entry (and its Location → world reference) in memory permanently. Now also cleared on PlayerQuitEvent.
    • tcp.admin.create was never declared in plugin.yml. The permission gating /tcp delete and /tcp setexit was checked in code but missing from the permission tree — so it wasn't a child of tcp.admin.*, and staff granted the wildcard couldn't delete chambers or set exits (ops were unaffected). Now declared with default: op and included in tcp.admin.*.
  • TrialChamberPro 1.5.6

    release10 июня 2026 г.

    1.5.6 - 2026-06-10

    Fixed

    • CRITICAL: chamber reset could wipe terrain far beyond what the snapshot covers. When an auto-discovered chamber's bounds grew after its snapshot was captured (discovery region merges), the reset's clear-added-blocks pass cleared the entire current AABB while the snapshot could only restore the old, smaller region — deleting every block in the newly annexed volume (terrain, builds, neighbouring structures). The clear region is now clamped to the intersection of the chamber bounds and the snapshot's actual coverage, with a console warning pointing at /tcp snapshot create when a mismatch is detected. A snapshot can no longer destroy ground it cannot put back.
      • If one of your chambers was already affected: run /tcp delete <chamber> — this removes the broken registration and its stale snapshot in one step (discovery will cleanly re-register the chamber afterwards if enabled). Terrain that a pre-1.5.6 reset already deleted cannot be recovered by the plugin; restore that area from a world backup (or let it regenerate if it was untouched wilderness).
    • Discovery auto-snapshot never linked the snapshot in the database. discovery.auto-snapshot: true captured the .dat file but skipped the snapshot_file DB update (the step /tcp generate performs), so auto-discovered chambers reported "No snapshot found" at reset time and skipped restoration — or worse, kept a stale link. Both the registration and merge paths now link the file and log loudly if the DB write fails.
    • Stale snapshot after a discovery merge. Merging a newly discovered region into an existing chamber now re-captures the snapshot whenever the chamber already had one (previously only when discovery.auto-snapshot was on), because a pre-merge snapshot no longer covers the grown bounds and is dangerous to restore. If the re-capture fails, the console warns that the existing snapshot is stale.
    • Glow marker was killable, collidable, and farmable. The invisible glow Shulker had no invulnerability or collision flags: players could target it (health-indicator mods showed "Shulker 30❤" when looking at a glowing spawner), kill it (removing the glow mid-wave and rolling vanilla shulker loot — farmable shulker shells at every glowing spawner), and arrows aimed near the spawner collided with it. The marker is now invulnerable + non-collidable at both spawn sites (wave-attached and chamber-remaining standalone).
    • First wave completion in a large chamber could freeze the server. ChamberClearedEvent's spawner census (and the chamber-remaining glow's location scan) iterated every block in the chamber AABB on the region thread — up to 1.5M getBlockAt calls plus sync chunk loads on a merged discovery chamber. Both now share a chunk tile-entity scan (Chunk#getTileEntities, the same pattern ChamberDiscoveryListener uses): O(chunks × tile-entities) instead of O(volume).
    • Stale spawner counts made ChamberClearedEvent fire early or never. The per-chamber spawner count/location caches were only cleared at shutdown, but the spawner set changes on discovery merges (bounds grow), /tcp scan, and spawner block breaks. New SpawnerWaveManager.invalidateChamberSpawnerCaches(chamberId) is now called from ChamberManager.updateBounds, scanChamber, and the spawner BlockBreakEvent handler — premium-module tier-ups (TCP-MythicTrials) depend on this signal being correct.
    • Breaking a standalone-glowed spawner orphaned its glow. In chamber-remaining mode, breaking a non-active glowing spawner left its glow entity floating until the next chamber reset (cancelWaveAt only cleans the wave-attached glow). The block-break handler now also removes the standalone glow.
    • Pending spectator offers leaked when a dead player disconnected. PlayerDeathListener.pendingOffers was only cleared on respawn; a player who quit on the death screen and never rejoined left their entry (and its Location → world reference) in memory permanently. Now also cleared on PlayerQuitEvent.
    • tcp.admin.create was never declared in plugin.yml. The permission gating /tcp delete and /tcp setexit was checked in code but missing from the permission tree — so it wasn't a child of tcp.admin.*, and staff granted the wildcard couldn't delete chambers or set exits (ops were unaffected). Now declared with default: op and included in tcp.admin.*.
  • TrialChamberPro 1.5.5-mc26

    release9 июня 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.5 - 2026-06-09

    Fixed

    • Spawner glow outline rendered one block too high. The glow Shulker was spawned at the spawner block's centre (+0.5 on Y), but a Shulker's bounding box originates at its feet, so the 1×1×1 outline floated a full block above the spawner. It's now spawned with its feet on the block floor (+0.0 Y) so the shell encloses the spawner block exactly. Applies to both the wave-active and chamber-remaining glow modes.

    Changed

    • /tcp snapshot create and /tcp snapshot restore now take the chamber name as an optional argument. Omit it while standing inside a chamber and the command targets that chamber — the same convenience /tcp snapshot update already had. On servers with many chambers, typing exact names for create/restore was impractical; you can now just stand in the chamber and run the bare command. Naming a chamber explicitly still works exactly as before.
  • TrialChamberPro 1.5.5

    release9 июня 2026 г.

    1.5.5 - 2026-06-09

    Fixed

    • Spawner glow outline rendered one block too high. The glow Shulker was spawned at the spawner block's centre (+0.5 on Y), but a Shulker's bounding box originates at its feet, so the 1×1×1 outline floated a full block above the spawner. It's now spawned with its feet on the block floor (+0.0 Y) so the shell encloses the spawner block exactly. Applies to both the wave-active and chamber-remaining glow modes.

    Changed

    • /tcp snapshot create and /tcp snapshot restore now take the chamber name as an optional argument. Omit it while standing inside a chamber and the command targets that chamber — the same convenience /tcp snapshot update already had. On servers with many chambers, typing exact names for create/restore was impractical; you can now just stand in the chamber and run the bare command. Naming a chamber explicitly still works exactly as before.
  • TrialChamberPro 1.5.4-mc26

    release9 июня 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.4 - 2026-06-09

    Fixed

    • Spawner glow outline never rendered (v1.2.27 regression). The opt-in spawner-waves.glow-active-spawners feature spawned an Interaction entity at each active spawner and set its isGlowing flag — but Interaction entities are explicitly immune to the Glowing effect (no renderable model for the outline pass), so the feature silently rendered nothing on every client since v1.2.27. Swap to an invisible Shulker: shell-cube hidden by INVISIBILITY, glow outline remains, perfect 1×1×1 cube marker through walls. Inert mob (no AI, silent, non-persistent), PDC-tagged so mob-cap / anti-cheat plugins can identify the overlay and skip it from monster counts.

    Added

    • ChamberEnteredEvent / ChamberExitedEvent — public Bukkit events for "player crossed into/out of a registered chamber." Fired from PlayerMovementListener on the block-boundary-crossing transition, and from PlayerQuitEvent for any player who disconnects while inside (keeping entry/exit pairs balanced for downstream listeners that allocate per-player state on entry). Both fire un-gated by the statistics.* config flags — listeners that need chamber-presence signals shouldn't have their behaviour silently disabled by the admin's stats preferences. Direct chamber→chamber transitions fire an exit-then-entry pair (with entry/exit messages suppressed on the transition to avoid spam). Primary intended consumer: the TCP-MythicTrials HUD; useful for any plugin reacting to chamber presence (welcome messages, region effects, etc.).
    • spawner-waves.glow-mode (default wave-active). New chamber-remaining mode lights up every uncleared spawner in a chamber when any wave starts inside it, not just the wave-active one — solves "which spawner did I miss?" navigation on large chambers. Standalone glow entities are tracked per chamber, cleaned up on each spawner's wave completion and on chamber reset. Recommended for premium difficulty modules (TCP-MythicTrials's HUD pairs with this).

    [1.5.3] - UNRELEASED

    Fixed

    • Update checker mis-parsed -mc26 release tags. fetchLatestVersion() only stripped a leading v, so a releases/latest tag of v1.5.2-mc26 became 1.5.2-mc26 and isNewerVersion() parsed the third segment (2-mc26) as 0 — i.e. 1.5.0 — producing wrong update results whenever the most recently published release was an mc26 tag. It now also strips the track suffix (.substringBefore('-')) so both vX.Y.Z and vX.Y.Z-mc26 collapse to the same X.Y.Z before comparison.
  • TrialChamberPro 1.5.4

    release9 июня 2026 г.

    1.5.4 - 2026-06-09

    Fixed

    • Spawner glow outline never rendered (v1.2.27 regression). The opt-in spawner-waves.glow-active-spawners feature spawned an Interaction entity at each active spawner and set its isGlowing flag — but Interaction entities are explicitly immune to the Glowing effect (no renderable model for the outline pass), so the feature silently rendered nothing on every client since v1.2.27. Swap to an invisible Shulker: shell-cube hidden by INVISIBILITY, glow outline remains, perfect 1×1×1 cube marker through walls. Inert mob (no AI, silent, non-persistent), PDC-tagged so mob-cap / anti-cheat plugins can identify the overlay and skip it from monster counts.

    Added

    • ChamberEnteredEvent / ChamberExitedEvent — public Bukkit events for "player crossed into/out of a registered chamber." Fired from PlayerMovementListener on the block-boundary-crossing transition, and from PlayerQuitEvent for any player who disconnects while inside (keeping entry/exit pairs balanced for downstream listeners that allocate per-player state on entry). Both fire un-gated by the statistics.* config flags — listeners that need chamber-presence signals shouldn't have their behaviour silently disabled by the admin's stats preferences. Direct chamber→chamber transitions fire an exit-then-entry pair (with entry/exit messages suppressed on the transition to avoid spam). Primary intended consumer: the TCP-MythicTrials HUD; useful for any plugin reacting to chamber presence (welcome messages, region effects, etc.).
    • spawner-waves.glow-mode (default wave-active). New chamber-remaining mode lights up every uncleared spawner in a chamber when any wave starts inside it, not just the wave-active one — solves "which spawner did I miss?" navigation on large chambers. Standalone glow entities are tracked per chamber, cleaned up on each spawner's wave completion and on chamber reset. Recommended for premium difficulty modules (TCP-MythicTrials's HUD pairs with this).

    [1.5.3] - UNRELEASED

    Fixed

    • Update checker mis-parsed -mc26 release tags. fetchLatestVersion() only stripped a leading v, so a releases/latest tag of v1.5.2-mc26 became 1.5.2-mc26 and isNewerVersion() parsed the third segment (2-mc26) as 0 — i.e. 1.5.0 — producing wrong update results whenever the most recently published release was an mc26 tag. It now also strips the track suffix (.substringBefore('-')) so both vX.Y.Z and vX.Y.Z-mc26 collapse to the same X.Y.Z before comparison.
  • TrialChamberPro 1.5.2-mc26

    release27 мая 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.2 - 2026-05-27

    Added

    • In-game update notification with clickable Modrinth download link. UpdateChecker is now also a Listener. When the periodic GitHub check detects a newer release, any admin (tcp.admin) who logs in afterwards (and any already-online admins) gets a short MiniMessage line: You are using version X.Y.Z, latest version is A.B.C. followed by a clickable [Download Latest Version] pointing at the Modrinth versions page (hover tooltip explains it opens in a browser). One-shot per check; no in-game spam beyond the join ping.

    Fixed

    • /tcp reset silently failing with "check console" but nothing in the console. When a previous reset for the same chamber was still in inProgress (mid-restore, or stuck), the duplicate request returned false after only a logger.fine line, which Bukkit suppresses by default — so admins saw the failure chat message with no visible explanation. The log line is now a warning and tells you exactly what happened plus the restart-to-clear hint.
    • /tcp snapshot create reporting success when the chamber row wasn't actually updated. captureSnapshot wrote the .dat file then called setSnapshotFile() without checking the return value; a failed DB update left the chamber's snapshot_file column NULL, so the next reset logged "No snapshot found" and skipped restoration even though the file was on disk. Both createSnapshot and setSnapshotFile are now wrapped — exceptions are logged with stack traces, and a failed DB link produces a clear snapshot-failed chat message instead of the misleading "created" line.
    • Tab completion missing for /tcp loot audit. The 1.5.1 audit subcommand worked but wasn't suggested by tab-complete; added to lootActions.
  • TrialChamberPro 1.5.2

    release27 мая 2026 г.

    1.5.2 - 2026-05-27

    Added

    • In-game update notification with clickable Modrinth download link. UpdateChecker is now also a Listener. When the periodic GitHub check detects a newer release, any admin (tcp.admin) who logs in afterwards (and any already-online admins) gets a short MiniMessage line: You are using version X.Y.Z, latest version is A.B.C. followed by a clickable [Download Latest Version] pointing at the Modrinth versions page (hover tooltip explains it opens in a browser). One-shot per check; no in-game spam beyond the join ping.

    Fixed

    • /tcp reset silently failing with "check console" but nothing in the console. When a previous reset for the same chamber was still in inProgress (mid-restore, or stuck), the duplicate request returned false after only a logger.fine line, which Bukkit suppresses by default — so admins saw the failure chat message with no visible explanation. The log line is now a warning and tells you exactly what happened plus the restart-to-clear hint.
    • /tcp snapshot create reporting success when the chamber row wasn't actually updated. captureSnapshot wrote the .dat file then called setSnapshotFile() without checking the return value; a failed DB update left the chamber's snapshot_file column NULL, so the next reset logged "No snapshot found" and skipped restoration even though the file was on disk. Both createSnapshot and setSnapshotFile are now wrapped — exceptions are logged with stack traces, and a failed DB link produces a clear snapshot-failed chat message instead of the misleading "created" line.
    • Tab completion missing for /tcp loot audit. The 1.5.1 audit subcommand worked but wasn't suggested by tab-complete; added to lootActions.
  • TrialChamberPro 1.5.1-mc26

    release27 мая 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.1 - 2026-05-27

    Added

    • Per-chamber spawner cooldown can now match the chamber's reset interval. New cycle option in ChamberSettingsView's spawner-cooldown toggle: Match Chamber Reset. At reset time, each trial spawner in the chamber is stamped with cooldownLength = chamber.resetInterval, so the spawner naturally rearms right as the chamber resets. Stored as the sentinel value -2 on chambers.spawner_cooldown_minutes; existing per-chamber values, the null = global config default, and the -1 = vanilla 30m / 0 = immediate modes are unchanged.
    • Legacy loot audit (/tcp loot audit + startup warning + GUI badge). Pre-1.5.0 loot entries were stored as material + amount only — so an "enchanted book" row added before the v1.5.0 faithful-loot fix still drops as a plain book (no migration is possible because the enchant data was never persisted). Three new touchpoints surface this without reading the user's mind: (a) at startup, a single warning line counts entries whose structured fields can't produce the intended item (enchanted book without enchants, potion/tipped arrow without potion type, goat horn without instrument) and points at the audit command; (b) /tcp loot audit lists them grouped by table / pool with the row kind/index/material/reason, capped at 50 rows; (c) LootEditorView decorates each legacy row with a ⚠ Legacy entry — re-add to capture NBT lore line so it's obvious which to re-enter. Plain 10 cobblestone-style entries are deliberately not flagged.
    • Snapshot reminder for snapshotless discovered chambers. Auto-discovered chambers can sit in the DB without a snapshot, in which case they silently can't be reset. New SnapshotReminderService pings admins with tcp.admin.snapshot (a) once on login if any chamber lacks a snapshot, and (b) periodically as a coalesced console + admin-chat summary. Configurable under discovery.snapshot-reminder.* (enabled, on-join, interval-minutes). Defaults: on, 30 min interval.

    Changed

    • Pending-reset console output coalesced. With global.reset-require-confirmation enabled, the per-chamber is due for reset — awaiting confirmation log line is replaced by a single per-tick summary (N chamber(s) due for reset — M total awaiting confirmation. Use /tcp reset pending to list, /tcp reset confirm all to release.). The in-game clickable [confirm] [list all] ping for admins is unchanged.
    • Default vault cooldowns are now 0 instead of -1. vaults.normal-cooldown-hours and vaults.ominous-cooldown-hours ship at 0 (vanilla behaviour — locked until chamber reset). The old -1 default was being clamped to 0 by the config validator and producing a startup warning on every fresh install; the value and the comment now reflect what actually happens.
  • TrialChamberPro 1.5.1

    release27 мая 2026 г.

    1.5.1 - 2026-05-27

    Added

    • Per-chamber spawner cooldown can now match the chamber's reset interval. New cycle option in ChamberSettingsView's spawner-cooldown toggle: Match Chamber Reset. At reset time, each trial spawner in the chamber is stamped with cooldownLength = chamber.resetInterval, so the spawner naturally rearms right as the chamber resets. Stored as the sentinel value -2 on chambers.spawner_cooldown_minutes; existing per-chamber values, the null = global config default, and the -1 = vanilla 30m / 0 = immediate modes are unchanged.
    • Legacy loot audit (/tcp loot audit + startup warning + GUI badge). Pre-1.5.0 loot entries were stored as material + amount only — so an "enchanted book" row added before the v1.5.0 faithful-loot fix still drops as a plain book (no migration is possible because the enchant data was never persisted). Three new touchpoints surface this without reading the user's mind: (a) at startup, a single warning line counts entries whose structured fields can't produce the intended item (enchanted book without enchants, potion/tipped arrow without potion type, goat horn without instrument) and points at the audit command; (b) /tcp loot audit lists them grouped by table / pool with the row kind/index/material/reason, capped at 50 rows; (c) LootEditorView decorates each legacy row with a ⚠ Legacy entry — re-add to capture NBT lore line so it's obvious which to re-enter. Plain 10 cobblestone-style entries are deliberately not flagged.
    • Snapshot reminder for snapshotless discovered chambers. Auto-discovered chambers can sit in the DB without a snapshot, in which case they silently can't be reset. New SnapshotReminderService pings admins with tcp.admin.snapshot (a) once on login if any chamber lacks a snapshot, and (b) periodically as a coalesced console + admin-chat summary. Configurable under discovery.snapshot-reminder.* (enabled, on-join, interval-minutes). Defaults: on, 30 min interval.

    Changed

    • Pending-reset console output coalesced. With global.reset-require-confirmation enabled, the per-chamber is due for reset — awaiting confirmation log line is replaced by a single per-tick summary (N chamber(s) due for reset — M total awaiting confirmation. Use /tcp reset pending to list, /tcp reset confirm all to release.). The in-game clickable [confirm] [list all] ping for admins is unchanged.
    • Default vault cooldowns are now 0 instead of -1. vaults.normal-cooldown-hours and vaults.ominous-cooldown-hours ship at 0 (vanilla behaviour — locked until chamber reset). The old -1 default was being clamped to 0 by the config validator and producing a startup warning on every fresh install; the value and the comment now reflect what actually happens.
  • TrialChamberPro 1.5.0-mc26

    release26 мая 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.5.0 - 2026-05-26

    Added

    • Faithful loot items + bulk drag-in editor. Items added to a loot table are now stored as a serialized ItemStack, so enchantments, potion data, custom names/lore, custom-model-data and any NBT (incl. third-party enchant tags) are preserved exactly — previously only the material+amount were kept, turning an enchanted book into a plain book and a potion into a water bottle. The loot editor's "Add" captures the whole held item, entries can be removed with Q / drop key, and a new Bulk add button opens a chest you can drag/shift-click any number of items into at once (captured faithfully and handed back on close).
    • /tcp list pagination + locator. Lists 10 chambers per page with clickable Prev/Next instead of spamming 100+ lines, and /tcp list current reports the chamber you're standing in (or the nearest, with coords and a [/tp] suggestion).
    • /tcp snapshot update [chamber] — re-captures a registered chamber's snapshot, overwriting the old one, so edits made after the chamber was first registered/snapshotted become the new reset baseline. With no name it targets the chamber you're standing in; with a name it behaves like create.
    • Optional FastAsyncWorldEdit for resets (global.use-fawe, default off, Paper-only). Scheduled resets place blocks through one FAWE EditSession to smooth out the lag of large restores; manual resets keep the batched path so WorldEdit //undo still works; falls back automatically.
    • Operator-confirmation reset queue (global.reset-require-confirmation, default off). Due chambers are parked and online admins notified; /tcp reset pending lists them and /tcp reset confirm <chamber|all> fires them through the stagger.
    • Reset throttle (global.max-concurrent-resets, global.reset-stagger-seconds) so a wave of due chambers can't all restore at once and crater TPS.
    • global.suppress-trial-spawner-spam (default true) mutes the vanilla Trial Spawner ... has no detected players console line.
    • ChamberClearedEvent — public Bukkit event for "chamber cleared in one run." Fires exactly once when every trial spawner inside a registered chamber has completed a wave within the same reset cycle. Carries the cleared Chamber, the cumulative Set<UUID> of participants across every wave in the cycle, and the wall-clock durationMs from first-wave-start to last-wave-complete. Tracking is per-chamber, reset on every ChamberResetEvent. Wild spawners do not contribute.
    • Network-sync foundation (developer API). Groundwork for a future cross-server module: ChamberManager, StatisticsManager and VaultManager are now registered with Bukkit's ServicesManager (alongside DatabaseManager); cache-invalidation hooks added (StatisticsManager.invalidatePlayer(uuid), ChamberManager.reloadFromStore(name) / invalidateChamber(name)); new StatisticsUpdatedEvent fires after every stat persist. All additive — no behaviour change for single-server installs.
    • Procedural dungeon generation primitives (/tcp dungeon, dungeon.yml). Modular rooms captured via WorldEdit selections + minecraft:jigsaw connectors are stitched into a dungeon and registered as a normal chamber. Built primarily as the room-assembly substrate for the upcoming Mythic Trials module; usable standalone too but not the headline feature of this release.

    Changed

    • GUI framework rewrite: InventoryFramework → in-house VcGui. All 14 admin GUI views moved off the third-party InventoryFramework library onto a framework adapted from tcp-vault-crates. Behaviour is preserved view-for-view; the wins are an event-handling overhaul (cross-inventory dup-exploits cancelled centrally, safe bottom-inventory actions pass through so cursor/pickup work normally while a GUI is open) and a cleaner deposit-style chest pattern. The IF dependency is dropped from the shaded JAR.
    • SpawnerWaveManager gained per-chamber wave-completion bookkeeping to support ChamberClearedEvent. Three new in-memory maps plus a lazy spawner-count cache (computed once per chamber via a one-time block-scan of the chamber bounds, then O(1)). All maps clear on chamber reset.

    Fixed

    • Vaults dispensing vanilla loot instead of the configured table. The chamber cache was an LRU capped at 100; on servers with ≥100 chambers, vault interactions in evicted ("old") chambers resolved to no chamber and silently fell through to vanilla trial loot — and ignored updated loot tables. The cache now keeps all registered chambers (no size eviction), which also repairs spawner-wave tracking and tier scaling that relied on the same lookup.
    • Bulk-add deposit crash. Closing the bulk-add chest could trigger an infinite InventoryCloseEvent → reopen → close cascade that overflowed the JVM stack and killed the server. The editor reopen now defers one tick out of the close-event chain.
    • Chamber reset now removes blocks players ADDED into formerly-empty cells (lava, cobble, etc.). Snapshots skip air on capture to save space, so restoration only re-applied captured (non-air) blocks and never reverted anything placed into a cell that was air at capture time. Reset now walks the chamber volume before restore and clears player-added blocks. Gated by reset.clear-added-blocks (default true); disable to let players build inside chambers.
    • Automatic resets failing with StandaloneCoroutine was cancelled + endless trial-spawner error spam. A scheduled reset stored its own job and then cancelled it mid-run, leaving chambers half-reset (spawners stuck logging every tick). Scheduled jobs now de-register before running so a reset can't cancel itself; cancellation is no longer mis-logged as a failure.
    • All due chambers resetting simultaneously and dropping TPS to ~4. Resets now run through a concurrency limit + stagger (see new config above).
    • Players teleported into walls (suffocating) on reset. The "safe location" scan ran down the chamber's own centre column and didn't verify the destination was open; it now scans columns outside the chamber and requires solid ground with two passable, non-hazard cells above.
    • Loot items losing their enchantments/potions when added through the editor (see Added → faithful loot items).
    • Pause-chamber tooltip rendered raw & codes and squashed its multi-line lore into a bracketed single line. Tooltip now reads cleanly with paragraph breaks and full colour styling.
    • Spawner-wave proximity check no longer scans 33,500 blocks per player move. SpawnerWaveListener.onPlayerMove previously walked an O(r³) cube around every moving player calling world.getBlockAt().type (~1 ms/call in Spark profiles, compounding across players). Replaced with a per-world spatial index (TrialSpawnerIndex) populated by chunk-load tile-entity scans + block break/place tracking; the proximity query is now O(spawners-near-player) — typically zero or one chunk's worth of positions, sub-microsecond on the hot path.
    • Spawner-wave boss bar stayed attached after a non-walking chamber exit. The cleanup that drops far-away boss bars was wired only to PlayerMoveEvent, which doesn't fire for teleports, respawns, or world changes. A player who died inside a chamber and respawned at spawn (or /spawn'd / /home'd out, or got teleported by another plugin) kept the boss bar attached until the wave completed naturally or they logged out. Now also runs on PlayerTeleportEvent, PlayerRespawnEvent, and PlayerChangedWorldEvent (one tick later, so player.location reflects the destination). Bug existed since v1.2.26 when the proximity-cleanup logic was introduced.

    Config additions

    • reset.clear-added-blocks (default true) — whether chamber reset also clears player-added blocks that fall outside the snapshot (see Fixed above).
    • global.use-fawe (default false) — route scheduled chamber resets through FastAsyncWorldEdit when available.
    • global.reset-require-confirmation (default false) — park due chambers in a queue and require an operator to release them via /tcp reset confirm.
    • global.max-concurrent-resets / global.reset-stagger-seconds — concurrency throttle so a batch of simultaneously-due chambers don't all reset at the same instant.
    • global.suppress-trial-spawner-spam (default true) — mute the vanilla Trial Spawner ... has no detected players console line.
  • TrialChamberPro 1.5.0

    release26 мая 2026 г.

    1.5.0 - 2026-05-26

    Added

    • Faithful loot items + bulk drag-in editor. Items added to a loot table are now stored as a serialized ItemStack, so enchantments, potion data, custom names/lore, custom-model-data and any NBT (incl. third-party enchant tags) are preserved exactly — previously only the material+amount were kept, turning an enchanted book into a plain book and a potion into a water bottle. The loot editor's "Add" captures the whole held item, entries can be removed with Q / drop key, and a new Bulk add button opens a chest you can drag/shift-click any number of items into at once (captured faithfully and handed back on close).
    • /tcp list pagination + locator. Lists 10 chambers per page with clickable Prev/Next instead of spamming 100+ lines, and /tcp list current reports the chamber you're standing in (or the nearest, with coords and a [/tp] suggestion).
    • /tcp snapshot update [chamber] — re-captures a registered chamber's snapshot, overwriting the old one, so edits made after the chamber was first registered/snapshotted become the new reset baseline. With no name it targets the chamber you're standing in; with a name it behaves like create.
    • Optional FastAsyncWorldEdit for resets (global.use-fawe, default off, Paper-only). Scheduled resets place blocks through one FAWE EditSession to smooth out the lag of large restores; manual resets keep the batched path so WorldEdit //undo still works; falls back automatically.
    • Operator-confirmation reset queue (global.reset-require-confirmation, default off). Due chambers are parked and online admins notified; /tcp reset pending lists them and /tcp reset confirm <chamber|all> fires them through the stagger.
    • Reset throttle (global.max-concurrent-resets, global.reset-stagger-seconds) so a wave of due chambers can't all restore at once and crater TPS.
    • global.suppress-trial-spawner-spam (default true) mutes the vanilla Trial Spawner ... has no detected players console line.
    • ChamberClearedEvent — public Bukkit event for "chamber cleared in one run." Fires exactly once when every trial spawner inside a registered chamber has completed a wave within the same reset cycle. Carries the cleared Chamber, the cumulative Set<UUID> of participants across every wave in the cycle, and the wall-clock durationMs from first-wave-start to last-wave-complete. Tracking is per-chamber, reset on every ChamberResetEvent. Wild spawners do not contribute.
    • Network-sync foundation (developer API). Groundwork for a future cross-server module: ChamberManager, StatisticsManager and VaultManager are now registered with Bukkit's ServicesManager (alongside DatabaseManager); cache-invalidation hooks added (StatisticsManager.invalidatePlayer(uuid), ChamberManager.reloadFromStore(name) / invalidateChamber(name)); new StatisticsUpdatedEvent fires after every stat persist. All additive — no behaviour change for single-server installs.
    • Procedural dungeon generation primitives (/tcp dungeon, dungeon.yml). Modular rooms captured via WorldEdit selections + minecraft:jigsaw connectors are stitched into a dungeon and registered as a normal chamber. Built primarily as the room-assembly substrate for the upcoming Mythic Trials module; usable standalone too but not the headline feature of this release.

    Changed

    • GUI framework rewrite: InventoryFramework → in-house VcGui. All 14 admin GUI views moved off the third-party InventoryFramework library onto a framework adapted from tcp-vault-crates. Behaviour is preserved view-for-view; the wins are an event-handling overhaul (cross-inventory dup-exploits cancelled centrally, safe bottom-inventory actions pass through so cursor/pickup work normally while a GUI is open) and a cleaner deposit-style chest pattern. The IF dependency is dropped from the shaded JAR.
    • SpawnerWaveManager gained per-chamber wave-completion bookkeeping to support ChamberClearedEvent. Three new in-memory maps plus a lazy spawner-count cache (computed once per chamber via a one-time block-scan of the chamber bounds, then O(1)). All maps clear on chamber reset.

    Fixed

    • Vaults dispensing vanilla loot instead of the configured table. The chamber cache was an LRU capped at 100; on servers with ≥100 chambers, vault interactions in evicted ("old") chambers resolved to no chamber and silently fell through to vanilla trial loot — and ignored updated loot tables. The cache now keeps all registered chambers (no size eviction), which also repairs spawner-wave tracking and tier scaling that relied on the same lookup.
    • Bulk-add deposit crash. Closing the bulk-add chest could trigger an infinite InventoryCloseEvent → reopen → close cascade that overflowed the JVM stack and killed the server. The editor reopen now defers one tick out of the close-event chain.
    • Chamber reset now removes blocks players ADDED into formerly-empty cells (lava, cobble, etc.). Snapshots skip air on capture to save space, so restoration only re-applied captured (non-air) blocks and never reverted anything placed into a cell that was air at capture time. Reset now walks the chamber volume before restore and clears player-added blocks. Gated by reset.clear-added-blocks (default true); disable to let players build inside chambers.
    • Automatic resets failing with StandaloneCoroutine was cancelled + endless trial-spawner error spam. A scheduled reset stored its own job and then cancelled it mid-run, leaving chambers half-reset (spawners stuck logging every tick). Scheduled jobs now de-register before running so a reset can't cancel itself; cancellation is no longer mis-logged as a failure.
    • All due chambers resetting simultaneously and dropping TPS to ~4. Resets now run through a concurrency limit + stagger (see new config above).
    • Players teleported into walls (suffocating) on reset. The "safe location" scan ran down the chamber's own centre column and didn't verify the destination was open; it now scans columns outside the chamber and requires solid ground with two passable, non-hazard cells above.
    • Loot items losing their enchantments/potions when added through the editor (see Added → faithful loot items).
    • Pause-chamber tooltip rendered raw & codes and squashed its multi-line lore into a bracketed single line. Tooltip now reads cleanly with paragraph breaks and full colour styling.
    • Spawner-wave proximity check no longer scans 33,500 blocks per player move. SpawnerWaveListener.onPlayerMove previously walked an O(r³) cube around every moving player calling world.getBlockAt().type (~1 ms/call in Spark profiles, compounding across players). Replaced with a per-world spatial index (TrialSpawnerIndex) populated by chunk-load tile-entity scans + block break/place tracking; the proximity query is now O(spawners-near-player) — typically zero or one chunk's worth of positions, sub-microsecond on the hot path.
    • Spawner-wave boss bar stayed attached after a non-walking chamber exit. The cleanup that drops far-away boss bars was wired only to PlayerMoveEvent, which doesn't fire for teleports, respawns, or world changes. A player who died inside a chamber and respawned at spawn (or /spawn'd / /home'd out, or got teleported by another plugin) kept the boss bar attached until the wave completed naturally or they logged out. Now also runs on PlayerTeleportEvent, PlayerRespawnEvent, and PlayerChangedWorldEvent (one tick later, so player.location reflects the destination). Bug existed since v1.2.26 when the proximity-cleanup logic was introduced.

    Config additions

    • reset.clear-added-blocks (default true) — whether chamber reset also clears player-added blocks that fall outside the snapshot (see Fixed above).
    • global.use-fawe (default false) — route scheduled chamber resets through FastAsyncWorldEdit when available.
    • global.reset-require-confirmation (default false) — park due chambers in a queue and require an operator to release them via /tcp reset confirm.
    • global.max-concurrent-resets / global.reset-stagger-seconds — concurrency throttle so a batch of simultaneously-due chambers don't all reset at the same instant.
    • global.suppress-trial-spawner-spam (default true) — mute the vanilla Trial Spawner ... has no detected players console line.
  • TrialChamberPro 1.4.7-mc26

    release19 мая 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.4.7 - 2026-05-19

    Added

    • Per-chamber reset broadcast toggle. Each chamber now has a Reset Broadcast toggle in the Chamber Settings GUI (slot 6, row 3). When disabled, the server-wide "chamber X has reset" message is suppressed for that chamber only. A new global.reset-complete-alert config option (default true) acts as a master override — setting it to false silences broadcasts for every chamber regardless of their individual setting, and the GUI toggle displays a gray "Disabled by global config" indicator instead of an on/off switch so admins immediately know why per-chamber control is unavailable.

    Config additions

    • global.reset-complete-alert (default true) — master switch for the post-reset server broadcast. Set to false to suppress the message globally for all chambers.

    Localization

    • New GUI keys under gui.chamber-settings: broadcast-reset-name, broadcast-reset-lore, broadcast-reset-overridden-lore.
    • New flat keys: gui-broadcast-reset-enabled, gui-broadcast-reset-disabled, gui-broadcast-reset-failed, gui-broadcast-reset-global-override.
  • TrialChamberPro 1.4.7

    release19 мая 2026 г.

    1.4.7 - 2026-05-19

    Added

    • Per-chamber reset broadcast toggle. Each chamber now has a Reset Broadcast toggle in the Chamber Settings GUI (slot 6, row 3). When disabled, the server-wide "chamber X has reset" message is suppressed for that chamber only. A new global.reset-complete-alert config option (default true) acts as a master override — setting it to false silences broadcasts for every chamber regardless of their individual setting, and the GUI toggle displays a gray "Disabled by global config" indicator instead of an on/off switch so admins immediately know why per-chamber control is unavailable.

    Config additions

    • global.reset-complete-alert (default true) — master switch for the post-reset server broadcast. Set to false to suppress the message globally for all chambers.

    Localization

    • New GUI keys under gui.chamber-settings: broadcast-reset-name, broadcast-reset-lore, broadcast-reset-overridden-lore.
    • New flat keys: gui-broadcast-reset-enabled, gui-broadcast-reset-disabled, gui-broadcast-reset-failed, gui-broadcast-reset-global-override.
  • TrialChamberPro 1.4.6-mc26

    release14 мая 2026 г.

    This plugin version is compatible with Minecraft 26.X.X

    1.4.6 - 2026-05-14

    Fixed

    • Folia/Luminol: chamber reset no longer crashes when teleporting players out. Calling player.teleport() on a Folia region thread throws UnsupportedOperationException: Must use teleportAsync while in region threading. ResetManager.teleportPlayersOut now uses teleportAsync() and chains the confirmation message + completion signal onto the returned CompletableFuture, so the reset sequence resumes only after every player has actually been moved.
    • Folia/Luminol: GUI teleport buttons no longer crash. The "Teleport to Exit" and "Teleport to Center" buttons in ChamberDetailView, and the "Teleport to Exit" button in ChamberSettingsView, were calling synchronous teleport() inside GUI click handlers (which run on the player's region thread on Folia). Switched to teleportAsync().
    • Folia/Luminol: spectator mode teleports no longer crash. SpectatorManager uses runAtEntity for all player operations — both entering spectator mode (teleport to chamber center) and exiting it (teleport to exit location) were still using synchronous teleport() inside those callbacks. Switched to teleportAsync(). On Paper these calls are equivalent; on Folia the async variant is required.
  • TrialChamberPro 1.4.6

    release14 мая 2026 г.

    1.4.6 - 2026-05-14

    Fixed

    • Folia/Luminol: chamber reset no longer crashes when teleporting players out. Calling player.teleport() on a Folia region thread throws UnsupportedOperationException: Must use teleportAsync while in region threading. ResetManager.teleportPlayersOut now uses teleportAsync() and chains the confirmation message + completion signal onto the returned CompletableFuture, so the reset sequence resumes only after every player has actually been moved.
    • Folia/Luminol: GUI teleport buttons no longer crash. The "Teleport to Exit" and "Teleport to Center" buttons in ChamberDetailView, and the "Teleport to Exit" button in ChamberSettingsView, were calling synchronous teleport() inside GUI click handlers (which run on the player's region thread on Folia). Switched to teleportAsync().
    • Folia/Luminol: spectator mode teleports no longer crash. SpectatorManager uses runAtEntity for all player operations — both entering spectator mode (teleport to chamber center) and exiting it (teleport to exit location) were still using synchronous teleport() inside those callbacks. Switched to teleportAsync(). On Paper these calls are equivalent; on Folia the async variant is required.
1
...

Совместимость

Minecraft: Java Edition

Платформы

Сведения

Лицензия:
Опубликован:7 месяцев назад
Обновлён:2 часа назад
ID проекта:
Главная