Список изменений
🐛 Bug 1 — Settings Interface Overlaps with Game Menu
Phenomenon: When opening the settings interface, the underlying game menu shows through, making the interface blurry and unreadable.
Cause: The default renderBackground() uses a translucent/blurred background and fails to cover the underlying interface.
Fix: Rewrite renderBackground() and render(), adopt a fully opaque pure black background of 0xFF_000000, and add a blue border around the settings panel for emphasis.
🐛 Bug 2 — Settings Interface Title Not Displaying
Phenomenon: No title text appears after opening the settings interface.
Cause: The Text passed into the constructor is processed by vanilla rendering logic, but super.render() is skipped during custom rendering, resulting in the title not being drawn.
Fix: Use super(Text.empty()) in the constructor to disable the vanilla title, and manually draw undo.screen.title via ctx.drawText() in render().
🐛 **Bug 3 — Help/History Interface Blurred ** Phenomenon: The content is blurry when opening the help interface with the H key or accessing the history record interface.
Cause: Same as Bug 1; the renderBackground of these two interfaces is also translucent.
Fix: Set both UndoHelpScreen and UndoHistoryScreen to use an opaque pure black background.
🐛 **Bug 4 — In-Game Tooltips Display Translation Key Names (e.g. undo.message.undone) ** Phenomenon: After performing Undo/Redo operations, on-screen tooltips directly show raw translation key names instead of normal text.
Cause: The undo.message.* series of translation entries are completely missing from en_us.json and zh_cn.json; the game displays the key names directly when no matching translation is found.
Fix: Add 7 translation entries respectively in both language files (undone, undone_all, nothing, redone, redo_all, nothing_to_redo, creative_only).
🐛 Bug 5 — "Info Position" in Settings Shows Chinese Under English Language
Phenomenon: When the game language is set to English, the options of the "Info Position" button still display Chinese such as Top Left, Top Right.
Cause: The toString() method of the HudCorner enumeration directly returns hardcoded Chinese strings, completely bypassing the translation system.
Fix: • Modify the enumeration to store translation keys (e.g. undo.screen.hud.corner.top_left) • Add a new getTranslationKey() method • Adopt Text.translatable(key) for the value formatter of CyclingButtonWidget • Supplement translation entries for four corners in both language files
🐛 Bug 6 — Single Press of Back/Enter Key Ineffective, Double Press Required
Phenomenon: Pressing the Backspace key (Undo) or Enter key (Redo) has no response on the first press and only triggers the function on the second press; the same issue applies to mouse side buttons.
Cause: Flawed design of the original digitMode state machine — when pressing Back for the first time with digitMode == 0, the logic enters the number input waiting mode instead of executing the operation, and the request is only sent on the second press.
Fix: Fully rewrite the key handling logic: • Back key: Execute Undo once directly; execute N times if a number key was pressed previously; Shift+Alt+Back to undo all • Enter key: Execute Redo once directly; execute N times if a number key was pressed previously; Shift+Alt+Enter to redo all • Mouse side buttons: Trigger on the first press, remove the double-click activation logic • Number keys: No longer rely on digitMode, accumulate counts directly, with usage determined by Back/Enter keys

