From e8e71ea28f9f46b708c43280e3a45f031c235777 Mon Sep 17 00:00:00 2001 From: Siphalor Date: Fri, 23 Apr 2021 18:20:51 +0200 Subject: [PATCH] Fix #212 (Toggle Sprint incompatibility with Amecs) --- .../mixin/client/keybindings/KeyBindingMixin.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/therandomlabs/randompatches/mixin/client/keybindings/KeyBindingMixin.java b/src/main/java/com/therandomlabs/randompatches/mixin/client/keybindings/KeyBindingMixin.java index cb36faf1..7a225029 100644 --- a/src/main/java/com/therandomlabs/randompatches/mixin/client/keybindings/KeyBindingMixin.java +++ b/src/main/java/com/therandomlabs/randompatches/mixin/client/keybindings/KeyBindingMixin.java @@ -29,6 +29,7 @@ import com.therandomlabs.randompatches.RandomPatches; import com.therandomlabs.randompatches.client.BoundKeyAccessor; import com.therandomlabs.randompatches.client.RPKeyBindingHandler; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.options.KeyBinding; import net.minecraft.client.util.InputUtil; @@ -106,6 +107,11 @@ private void conflicts(KeyBinding keyBinding, CallbackInfoReturnable in @SuppressWarnings("ConstantConditions") @Inject(method = "setKeyPressed", at = @At("HEAD"), cancellable = true) private static void setKeyPressed(InputUtil.Key key, boolean pressed, CallbackInfo info) { + // Amecs implements the same fix. Performing it twice breaks sticky key bindings + if (FabricLoader.getInstance().isModLoaded("amecsapi")) { + return; + } + //In vanilla, setPressed is only called on the most recently registered KeyBinding. keysById.values().stream().filter(keyBinding -> key.equals( ((KeyBindingMixin) (Object) keyBinding).getBoundKey())