1.0.4
Compatibility
Changes
š 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
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:I13AmOJJ:oGzwybpt"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:I13AmOJJ:oGzwybpt"
}

