From bcb40972806cfe69c15190196a503c115d15905c Mon Sep 17 00:00:00 2001 From: awruff Date: Tue, 6 Oct 2026 05:22:46 +0000 Subject: [PATCH 1/2] feat: persistent keybindings toggle --- .../celeritas/CeleritasConfigIntegration.java | 36 +++++++++++-------- .../java/dev/rdh/sarcio/SarcioConfig.java | 1 + .../sarcio/mixin/bugfix/MinecraftMixin.java | 3 ++ .../resources/assets/sarcio/lang/en_US.lang | 2 ++ 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/celery/java/dev/rdh/sarcio/celeritas/CeleritasConfigIntegration.java b/src/celery/java/dev/rdh/sarcio/celeritas/CeleritasConfigIntegration.java index c53ffc6..88c80d3 100644 --- a/src/celery/java/dev/rdh/sarcio/celeritas/CeleritasConfigIntegration.java +++ b/src/celery/java/dev/rdh/sarcio/celeritas/CeleritasConfigIntegration.java @@ -35,21 +35,27 @@ public static void register() { private static OptionPage createPage() { OptionGroup memory = OptionGroup.createBuilder() - .setId(id("memory")) - .add(OptionImpl.createBuilder(boolean.class, INSTANCE) - .setId(id("release_crash_reserve")) - .setControl(TickBoxControl::new) - .setBinding((config, value) -> config.releaseCrashReserve = value, - config -> config.releaseCrashReserve) - .setFlags(OptionFlag.REQUIRES_GAME_RESTART) - .build()) - .add(OptionImpl.createBuilder(boolean.class, INSTANCE) - .setId(id("disable_realms")) - .setControl(TickBoxControl::new) - .setBinding((config, value) -> config.disableRealms = value, - config -> config.disableRealms) - .build()) - .build(); + .setId(id("memory")) + .add(OptionImpl.createBuilder(boolean.class, INSTANCE) + .setId(id("release_crash_reserve")) + .setControl(TickBoxControl::new) + .setBinding((config, value) -> config.releaseCrashReserve = value, + config -> config.releaseCrashReserve) + .setFlags(OptionFlag.REQUIRES_GAME_RESTART) + .build()) + .add(OptionImpl.createBuilder(boolean.class, INSTANCE) + .setId(id("disable_realms")) + .setControl(TickBoxControl::new) + .setBinding((config, value) -> config.disableRealms = value, + config -> config.disableRealms) + .build()) + .add(OptionImpl.createBuilder(boolean.class, INSTANCE) + .setId(id("persistent_keybindings")) + .setControl(TickBoxControl::new) + .setBinding((config, value) -> config.persistentKeybindings = value, + config -> config.persistentKeybindings) + .build()) + .build(); return new OptionPage(id("options"), TextComponent.translatable("sarcio.options.pages.sarcio"), List.of(memory)); } diff --git a/src/main/java/dev/rdh/sarcio/SarcioConfig.java b/src/main/java/dev/rdh/sarcio/SarcioConfig.java index a1d047e..e733f15 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioConfig.java +++ b/src/main/java/dev/rdh/sarcio/SarcioConfig.java @@ -19,6 +19,7 @@ public final class SarcioConfig { public boolean releaseCrashReserve; public boolean disableRealms; + public boolean persistentKeybindings; public static SarcioConfig load() { if (Files.isRegularFile(PATH)) { diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java index 3fb2d3e..9643575 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/MinecraftMixin.java @@ -1,5 +1,6 @@ package dev.rdh.sarcio.mixin.bugfix; +import dev.rdh.sarcio.SarcioMod; import net.minecraft.client.Minecraft; import net.minecraft.client.Screenshot; import net.minecraft.client.gui.screen.ProgressScreen; @@ -26,6 +27,8 @@ public class MinecraftMixin { @Inject(method = "openScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;lockMouse()V")) private void sarcio$reapplyKeybinds(Screen guiScreenIn, CallbackInfo ci) { + if (!SarcioMod.CONFIG.persistentKeybindings) return; + for (KeyBinding keyBinding : KeyBinding.ALL) { int keyCode = keyBinding.getKeyCode(); if (keyCode > 0 && keyCode < Keyboard.KEYBOARD_SIZE) { diff --git a/src/main/resources/assets/sarcio/lang/en_US.lang b/src/main/resources/assets/sarcio/lang/en_US.lang index a4553a8..79413a0 100644 --- a/src/main/resources/assets/sarcio/lang/en_US.lang +++ b/src/main/resources/assets/sarcio/lang/en_US.lang @@ -3,3 +3,5 @@ sarcio.options.release_crash_reserve.name=Release Crash Reserve sarcio.options.release_crash_reserve.tooltip=Releases Minecraft's 10 MiB emergency reserve after startup. sarcio.options.disable_realms.name=Hide Realms Button sarcio.options.disable_realms.tooltip=Hides the Minecraft Realms button from the title screen. +sarcio.options.persistent_keybindings.name=Persistent Keybindings +sarcio.options.persistent_keybindings.tooltip=Keeps keys you are still holding pressed after a screen closes, instead of making you press them again. From 484796f6666bb76868b849835dc5ce23fb1449b2 Mon Sep 17 00:00:00 2001 From: awruff Date: Tue, 6 Oct 2026 05:26:01 +0000 Subject: [PATCH 2/2] chore: enable persistent keybindings by default --- src/main/java/dev/rdh/sarcio/SarcioConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/rdh/sarcio/SarcioConfig.java b/src/main/java/dev/rdh/sarcio/SarcioConfig.java index e733f15..e5fcbe2 100644 --- a/src/main/java/dev/rdh/sarcio/SarcioConfig.java +++ b/src/main/java/dev/rdh/sarcio/SarcioConfig.java @@ -19,7 +19,7 @@ public final class SarcioConfig { public boolean releaseCrashReserve; public boolean disableRealms; - public boolean persistentKeybindings; + public boolean persistentKeybindings = true; public static SarcioConfig load() { if (Files.isRegularFile(PATH)) {