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

TrialChamberPro

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

1.7K
20
Все версииTrialChamberPro 1.4.1

TrialChamberPro 1.4.1

Release3 дн. назад

Список изменений

1.4.1 - 2026-04-29

Fixed

  • Auto-discovery now merges adjacent chamber regions instead of double-registering them. The previous flow registered every BFS result as a fresh chamber and only short-circuited if the candidate's center fell inside an existing AABB. Two physically distinct vanilla chambers ~500 blocks apart, or a single physical chamber whose two halves seeded discovery from different chunks, would happily produce two side-by-side auto_world_* entries (the user-reported case: auto_world_851_747 + auto_world_891_765 registered in the same millisecond, ~40 blocks apart on the X axis). New behavior: after BFS produces a candidate AABB, ChamberDiscoveryManager scans cached chambers in the same world for any whose AABB sits within discovery.merge-distance-blocks (Chebyshev edge-to-edge, default 250) of the candidate. If found, the existing chamber's bounds are unioned with the candidate via the new ChamberManager.updateBounds(...), the chamber is rescanned to absorb the new vaults/spawners, and (if discovery.auto-snapshot is enabled) the snapshot is regenerated. If not found, registration proceeds as before. New discovery.max-merged-volume (default 1,500,000 blocks) caps how far a runaway daisy-chain can grow so a pathological geometry can't swallow large regions into a single logical chamber. Set discovery.merge-distance-blocks: -1 to disable merging entirely and restore the v1.2.25 behavior.
  • Discovery registration race closed. Two near-simultaneous BFS results (typical during the startup sweep) could both pass the existing-chamber check before either committed — the merge logic above wouldn't help if both registrations were already in flight. New kotlinx.coroutines.sync.Mutex in ChamberDiscoveryManager serializes the entire registration step (mutex acquisition → cache scan → merge-or-create → mark processed). Throughput cost is zero in practice — registration fires at most a handful of times per session and is gated by the chunk-load / startup-sweep cadence anyway.

Changed — UX & GUI

  • Main menu flattened — SettingsMenuView removed. The previous "Settings → Plugin Settings → Global Settings" path had two papercut bugs: clicking "Settings" on the main menu opened a "Plugin Settings" hub whose only meaningful contents (Global Settings, Protection Settings, Performance Info, Reload Configuration) could just as well live one level up; and the back button on Protection Settings landed on Plugin Settings instead of the main menu, leaving the user one step deeper than they started. New main menu is a 6-row layout: Chambers / Loot Tables / Global Settings / Protection Settings on row 1, Help / Performance Info / Statistics on row 2, Reload Configuration centered on row 4 (shift-click to fire so accidental clicks don't reload), Close on row 5. SettingsMenuView.kt deleted; Screen.SETTINGS_MENU and MenuService.openSettingsMenu removed; back-button destinations in GlobalSettingsView and ProtectionMenuView updated from gui.common.dest-settingsgui.common.dest-main-menu. gui.settings-menu.* keys deleted from messages.yml; gui.main-menu.settings-name/lore renamed global-settings-name/lore; new performance-name/lore and reload-name/lore keys added under gui.main-menu. CustomMobProviderView's back button still uses dest-settings because it goes back to chamber settings, not the deleted plugin-settings hub.
  • Loot editor now shows the effective drop rate per item. The Amount/Chance/Rolls model is technically accurate but genuinely confusing: a user looking at "Amount: 2-4" + "Chance: 20%" tends to read that as "20% chance of getting 2-4 of this item per opening", and the separate "Rolls: 1-3" tile multiplies the per-draw probability without making that visually obvious on the items themselves. Each item lore now includes a new Expected: ≈X per vault opening line computed as avg(draws) × (weight / totalWeight) × avg(amount) for weighted items, and avg(amount) for guaranteed items (which always drop once per opening). Adaptive precision: ≥10 → integer, ≥1 → one decimal, <1 → two decimals (so a 1-in-50 tier item still reads ≈0.02 rather than rounding to 0). The per-item "Chance: X%" line is now suffixed with " per draw" to make the relationship explicit. The "Rolls Configuration" tile is renamed "Draws per Opening" and its lore opens with three plain-English lines explaining that each opening picks N items from the weighted list, each draw chooses one item using its chance, and more draws = more total loot. Bumping the draws slider visibly recomputes every Expected line in real time so the multiplicative relationship becomes self-evident. Pure presentation change — loot.yml data model untouched.
  • Help view rebuilt to mirror /tcp help and cover every wired subcommand. Audit found mobs (v1.3.0) was missing from chat help entirely, and both mobs and give (v1.3.1) were missing from the GUI Help view. Two dead chat-help keys (help-procgen, help-teleport — subcommands that don't exist) deleted. Chat help reordered into logical groups (Browse → Create → Manage → Loot/Mobs → Players & rewards → Admin) with a comment in TCPCommand.sendHelp noting the order mirrors the GUI tile grouping so future edits don't drift. Wording tightened on help-generate, help-snapshot, help-loot, help-vault, help-key, help-leaderboard, help-info, help-list, and help-reload to drop jargon ("WE wand", "saved var") and uninformative phrases ("Manage snapshots"). GUI Help view re-laid out to a 4 + 4 + 1 tile grid: row 1 overview (Commands / Permissions / About), row 2 gameplay command groups (Chambers / Loot / Vaults & Keys / Stats), row 3 admin & setup command groups (Snapshots / Generate / Custom Mobs / Spawner Presets), row 4 lone Admin Tools tile, row 5 navigation. New mobs-cmd and give-cmd tiles cover the previously absent commands. Every tile lore opens with one plain-English sentence describing the group ("Browse and manage existing chambers." / "View or override per-chamber loot." etc.) before listing the actual commands. The permissions tile expanded from 5 entries to ~13 organized into Admin / Player / Bypass / Notifications groups.

Localization

  • Every text change in this release routes through messages.yml. No Component.text(...) literals introduced anywhere; all new and changed strings are translatable through the existing gui.<view>.* and flat * key system. New keys: discovery-merged, gui.main-menu.global-settings-name/lore, gui.main-menu.performance-name/lore, gui.main-menu.reload-name/lore, gui.loot-editor.item-expected, gui.help-menu.mobs-cmd-name/lore, gui.help-menu.give-cmd-name/lore, help-mobs. Removed keys: every key under gui.settings-menu.*, help-procgen, help-teleport, gui.main-menu.settings-name/lore (renamed). Changed keys: gui.loot-editor.item-chance, gui.loot-editor.rolls-name, gui.loot-editor.rolls-lore, gui.main-menu.protection-name, every gui.help-menu.* lore. The chat-help block in messages.yml was scattered across two locations (lines 152-166 and 225-228); all entries are now consolidated into a single contiguous block in the order sendHelp emits them.

Added

  • Startup schema check for messages.yml. New MessagesSchemaValidator (run from onEnable immediately after ConfigValidator) loads the JAR-bundled messages.yml and the user's deployed copy, walks both for leaf keys (filtering out ConfigurationSection containers so a parent path doesn't mask a missing leaf), and logs a warning listing every key the bundle defines that the user's file lacks — up to 25 enumerated, then truncated with ... and N more. Output includes a 4-step recovery path (rename → restart → port translations) and notes the debug.skip-messages-schema-check: true opt-out. Pure log surface — never modifies the user's file, never blocks startup. Motivated by a v1.4.0 user bug report where <missing: gui.loot-table-list.table-name-normal> reached the GUI because the deployed messages.yml was an older copy that predated the gui.loot-table-list.* block; the check would have surfaced that as a console warning at startup.

Config additions

  • discovery.merge-distance-blocks (default 250) — Chebyshev edge-to-edge distance below which two regions are folded into a single chamber. Set to -1 to disable merging.
  • discovery.max-merged-volume (default 1500000) — hard cap on the post-merge bounding-box volume in blocks. Above this the merge is rejected and the new region is logged as a skip (region debounce still applies).
  • debug.skip-messages-schema-check (default false) — set to true to silence the new messages.yml schema check. Not recommended; the check is purely informative and the warning means GUI/chat surfaces are showing literal <missing: ...> placeholders.

Файлы

TrialChamberPro-1.4.1.jar(12.55 MiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

1.4.1

Загрузчики

Folia
Paper
Purpur

Версии игры

1.21.1–1.21.11

Загрузок

3

Дата публикации

3 дн. назад

Загрузил

ID версии

Главная