Skip to content

Releases: EvansGoethe/SH-Koth-zh_tw

1.5.0-zh_tw.1 — PR #4 P0 Fixes, Verified In-Game

Choose a tag to compare

@EvansGoethe EvansGoethe released this 07 Jul 08:25

This release addresses all P0 items from the upstream PR Smarts-Hub#4 review and fixes a team-mode capture bug found during in-game verification. All changes were verified end-to-end on a clean Paper 1.21.1 server (tab switching, anvil input, team command gating, teamless capture).

Changed

  • AnvilTextInput rewritten on top of AnvilGUI 1.10.10 (shaded and relocated). The previous hand-rolled anvil had no menu backend: rename text did not apply, the input item could be dragged out, and closing did not return to the caller. Now a genuine anvil menu opens, item movement is cancelled, and confirm/cancel both reliably re-open the calling editor.
  • Language policy applied project-wide: developer-facing text (comments, Javadoc, logs) is English only; player-facing text goes through MessageRepository (en defaults, zh_tw overrides).
  • Internal team command is now config-gated instead of hard-removed. New internal-team.disable-command option in hooks.yml (default false) controls whether the built-in /team command is registered and whether the editor shows the Solo/Deny toggles. The internal team system itself always stays active.

Fixed

  • Editor tabs no longer overlapgui.clearItems() is called before re-registering the active tab, so items from the previous tab no longer bleed through.
  • solo-koth config key is honored againKothBuilder now reads the same keys the template and editor actually write (solo-koth, create-team-if-not-exists).
  • Teamless players can capture team KOTHs again — a team-mode KOTH now auto-assigns an internal team first (when create-team-if-not-exists allows it) and only then applies the deny-entry-if-not-in-team rule.

Full details in CHANGELOG.md.

1.4.0-zh_tw.1 — Optimization Pass + Full i18n

Choose a tag to compare

@EvansGoethe EvansGoethe released this 30 Jun 20:28

1.4.0-zh_tw.1 — Optimization Pass + Full i18n

First feature release of the zh-TW fork. Backend hardening, complete redesign of the in-game editor, and a proper internationalisation pipeline.

See CHANGELOG.md for the full diff.

Highlights

Backend hardening

  • KothTicker now isolates per-KOTH tick() exceptions — one broken KOTH no longer aborts the loop
  • RefreshInsideKothService switched to World#getNearbyEntitiesByType — scales to crowded worlds
  • OfflineRewardStorage persists rewards for offline winners and auto-delivers on next login
  • Dropped reward items use Item#setOwner so other players cannot steal them
  • All plugin logging routed through the proper plugin logger ([SH-Koth] prefix)
  • KothYamlSaver gains an async variant for editor saves

Editor GUI redesign

  • New 6-row, 3-tab CreateKothGui layout: Basic / Time & Scoreboard / Rewards & Commands
  • Footer actions: Test, Copy from another KOTH, live Validation summary, Save (Create vs Edit aware)
  • Anvil-based text input for ID, display name, and scoreboard titles — no more "close window → type in chat → re-open"
  • Dedicated per-line scoreboard editor with edit / move up / move down / delete
  • ID character validation, captureTime ≤ maxTime guard, duplicate-ID check
  • KothLoreBoardPreview now caches per-player with explicit invalidate

Full internationalisation

  • New gui.* key tree across messages.yml (English default) and messages_zh_tw.yml (Traditional Chinese)
  • MessageRepository#fmt(key, ...args) for positional {0} placeholder substitution
  • Every editor string in 8 GUI classes (CreateKothGui, ScoreboardLineEditorGui, KothLoreBoardPreview, EditKothListGui, AddPhysicalRewardGui, CommandGui, CreateSchedulerGui) routed through the repository
  • No hardcoded zh-TW left in the editor flow

Fork-only (not for upstream PR)

  • Team mechanism is disabled at the GUI/command surface (/koth team, three editor toggles, KothBuilder forces solo). Underlying API, hooks, and events are intact and a one-line change re-enables.

Deployment

⚠️ Important: delete the server's existing plugins/SH-Koth/lang/messages.yml and messages_zh_tw.yml before restart so the new gui.* keys get extracted from the JAR. Otherwise the new editor will show Message not found: gui.create-koth.….

  1. Drop SH-Koth-1.4.0-zh_tw.1.jar into plugins/ (rename to SH-Koth.jar if you prefer)
  2. Delete the old lang/messages.yml and lang/messages_zh_tw.yml
  3. Restart the server (or /koth reload if upgrading in place)
  4. Open /koth editor to verify the new tabbed editor

Migration

  • No YAML schema changes for KOTH definitions — existing configs load unchanged
  • offline-rewards.yml is created on first need
  • Koth#isBossbarEnabled() now derives from both the explicit boss-bar flag and the notify-type's channels (behaviour preserved for the default ALL case)