Releases: EvansGoethe/SH-Koth-zh_tw
Release list
1.5.0-zh_tw.1 — PR #4 P0 Fixes, Verified In-Game
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
AnvilTextInputrewritten 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(endefaults,zh_twoverrides). - Internal team command is now config-gated instead of hard-removed. New
internal-team.disable-commandoption inhooks.yml(defaultfalse) controls whether the built-in/teamcommand is registered and whether the editor shows the Solo/Deny toggles. The internal team system itself always stays active.
Fixed
- Editor tabs no longer overlap —
gui.clearItems()is called before re-registering the active tab, so items from the previous tab no longer bleed through. solo-kothconfig key is honored again —KothBuildernow 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-existsallows it) and only then applies thedeny-entry-if-not-in-teamrule.
Full details in CHANGELOG.md.
1.4.0-zh_tw.1 — Optimization Pass + Full i18n
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
KothTickernow isolates per-KOTHtick()exceptions — one broken KOTH no longer aborts the loopRefreshInsideKothServiceswitched toWorld#getNearbyEntitiesByType— scales to crowded worldsOfflineRewardStoragepersists rewards for offline winners and auto-delivers on next login- Dropped reward items use
Item#setOwnerso other players cannot steal them - All plugin logging routed through the proper plugin logger (
[SH-Koth]prefix) KothYamlSavergains an async variant for editor saves
Editor GUI redesign
- New 6-row, 3-tab
CreateKothGuilayout: 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 ≤ maxTimeguard, duplicate-ID check KothLoreBoardPreviewnow caches per-player with explicitinvalidate
Full internationalisation
- New
gui.*key tree acrossmessages.yml(English default) andmessages_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,KothBuilderforces solo). Underlying API, hooks, and events are intact and a one-line change re-enables.
Deployment
⚠️ Important: delete the server's existingplugins/SH-Koth/lang/messages.ymlandmessages_zh_tw.ymlbefore restart so the newgui.*keys get extracted from the JAR. Otherwise the new editor will showMessage not found: gui.create-koth.….
- Drop
SH-Koth-1.4.0-zh_tw.1.jarintoplugins/(rename toSH-Koth.jarif you prefer) - Delete the old
lang/messages.ymlandlang/messages_zh_tw.yml - Restart the server (or
/koth reloadif upgrading in place) - Open
/koth editorto verify the new tabbed editor
Migration
- No YAML schema changes for KOTH definitions — existing configs load unchanged
offline-rewards.ymlis created on first needKoth#isBossbarEnabled()now derives from both the explicit boss-bar flag and the notify-type's channels (behaviour preserved for the defaultALLcase)