From 281301ea34485ba0536b3901578ee7ffdd97238c Mon Sep 17 00:00:00 2001 From: Cat Core Date: Tue, 2 Jul 2024 19:00:22 +0200 Subject: [PATCH] [1.6.4] Fix crash when trying to register more than one keybinding. --- .../fabric/test/client/keybinding/KeybindingTest.java | 1 + .../fabric/test/client/keybinding/KeybindingTest.java | 1 + .../fabric/test/client/keybinding/KeybindingTest.java | 1 + .../fabric/test/client/keybinding/KeybindingTest.java | 1 + legacy-fabric-keybindings-api-v1/common/build.gradle | 3 +++ .../impl/client/keybinding/KeyBindingRegistryImpl.java | 6 +++--- .../common/src/main/resources/fabric.mod.json | 1 + .../legacy-fabric-keybinding-api-v1-common.accesswidener | 3 +++ 8 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 legacy-fabric-keybindings-api-v1/common/src/main/resources/legacy-fabric-keybinding-api-v1-common.accesswidener diff --git a/legacy-fabric-keybindings-api-v1/1.12.2/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java b/legacy-fabric-keybindings-api-v1/1.12.2/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java index 3c10a1d9b..e9882cf4e 100644 --- a/legacy-fabric-keybindings-api-v1/1.12.2/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java +++ b/legacy-fabric-keybindings-api-v1/1.12.2/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java @@ -30,6 +30,7 @@ public class KeybindingTest implements ClientModInitializer { @Override public void onInitializeClient() { KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey", Keyboard.KEY_F, "key.categories.lftesting")); + KeyBinding keyBinding2 = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey2", Keyboard.KEY_G, "key.categories.lftesting")); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (keyBinding.wasPressed()) { System.out.printf("The key %s was pressed%n", Keyboard.getKeyName(keyBinding.getCode())); diff --git a/legacy-fabric-keybindings-api-v1/1.6.4/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java b/legacy-fabric-keybindings-api-v1/1.6.4/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java index bcb65a476..3911ad261 100644 --- a/legacy-fabric-keybindings-api-v1/1.6.4/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java +++ b/legacy-fabric-keybindings-api-v1/1.6.4/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java @@ -30,6 +30,7 @@ public class KeybindingTest implements ClientModInitializer { @Override public void onInitializeClient() { KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey", Keyboard.KEY_F)); + KeyBinding keyBinding2 = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey2", Keyboard.KEY_G)); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (keyBinding.wasPressed()) { System.out.printf("The key %s was pressed%n", Keyboard.getKeyName(keyBinding.code)); diff --git a/legacy-fabric-keybindings-api-v1/1.7.10/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java b/legacy-fabric-keybindings-api-v1/1.7.10/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java index 3c10a1d9b..e9882cf4e 100644 --- a/legacy-fabric-keybindings-api-v1/1.7.10/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java +++ b/legacy-fabric-keybindings-api-v1/1.7.10/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java @@ -30,6 +30,7 @@ public class KeybindingTest implements ClientModInitializer { @Override public void onInitializeClient() { KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey", Keyboard.KEY_F, "key.categories.lftesting")); + KeyBinding keyBinding2 = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey2", Keyboard.KEY_G, "key.categories.lftesting")); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (keyBinding.wasPressed()) { System.out.printf("The key %s was pressed%n", Keyboard.getKeyName(keyBinding.getCode())); diff --git a/legacy-fabric-keybindings-api-v1/1.8.9/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java b/legacy-fabric-keybindings-api-v1/1.8.9/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java index 3c10a1d9b..e9882cf4e 100644 --- a/legacy-fabric-keybindings-api-v1/1.8.9/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java +++ b/legacy-fabric-keybindings-api-v1/1.8.9/src/testmod/java/net/legacyfabric/fabric/test/client/keybinding/KeybindingTest.java @@ -30,6 +30,7 @@ public class KeybindingTest implements ClientModInitializer { @Override public void onInitializeClient() { KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey", Keyboard.KEY_F, "key.categories.lftesting")); + KeyBinding keyBinding2 = KeyBindingHelper.registerKeyBinding(new KeyBinding("api.keybinding.testTranslationKey2", Keyboard.KEY_G, "key.categories.lftesting")); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (keyBinding.wasPressed()) { System.out.printf("The key %s was pressed%n", Keyboard.getKeyName(keyBinding.getCode())); diff --git a/legacy-fabric-keybindings-api-v1/common/build.gradle b/legacy-fabric-keybindings-api-v1/common/build.gradle index e69de29bb..15bef660f 100644 --- a/legacy-fabric-keybindings-api-v1/common/build.gradle +++ b/legacy-fabric-keybindings-api-v1/common/build.gradle @@ -0,0 +1,3 @@ +loom { + accessWidenerPath = file("src/main/resources/legacy-fabric-keybinding-api-v1-common.accesswidener") +} diff --git a/legacy-fabric-keybindings-api-v1/common/src/main/java/net/legacyfabric/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java b/legacy-fabric-keybindings-api-v1/common/src/main/java/net/legacyfabric/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java index 6981cd670..4adeb727b 100644 --- a/legacy-fabric-keybindings-api-v1/common/src/main/java/net/legacyfabric/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java +++ b/legacy-fabric-keybindings-api-v1/common/src/main/java/net/legacyfabric/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java @@ -35,9 +35,9 @@ private KeyBindingRegistryImpl() { public static KeyBinding registerKeyBinding(KeyBinding binding) { for (KeyBinding existingKeyBindings : moddedKeyBindings) { if (existingKeyBindings == binding) { - throw new RuntimeException("Attempted to register same key binding twice " + binding.getTranslationKey() + "!"); - } else if (existingKeyBindings.getTranslationKey().equals(binding.getTranslationKey())) { - throw new RuntimeException("Attempted to register two key bindings with equal ID: " + binding.getTranslationKey() + "!"); + throw new RuntimeException("Attempted to register same key binding twice " + binding.translationKey + "!"); + } else if (existingKeyBindings.translationKey.equals(binding.translationKey)) { + throw new RuntimeException("Attempted to register two key bindings with equal ID: " + binding.translationKey + "!"); } } diff --git a/legacy-fabric-keybindings-api-v1/common/src/main/resources/fabric.mod.json b/legacy-fabric-keybindings-api-v1/common/src/main/resources/fabric.mod.json index 0e5f2bd74..66441620c 100644 --- a/legacy-fabric-keybindings-api-v1/common/src/main/resources/fabric.mod.json +++ b/legacy-fabric-keybindings-api-v1/common/src/main/resources/fabric.mod.json @@ -21,6 +21,7 @@ "mixins": [ "legacy-fabric-keybinding-api-v1-common.mixins.json" ], + "accessWidener": "legacy-fabric-keybinding-api-v1-common.accesswidener", "description": "Hooks that help adding keybindings", "custom": { "modmenu": { diff --git a/legacy-fabric-keybindings-api-v1/common/src/main/resources/legacy-fabric-keybinding-api-v1-common.accesswidener b/legacy-fabric-keybindings-api-v1/common/src/main/resources/legacy-fabric-keybinding-api-v1-common.accesswidener new file mode 100644 index 000000000..2926fbc85 --- /dev/null +++ b/legacy-fabric-keybindings-api-v1/common/src/main/resources/legacy-fabric-keybinding-api-v1-common.accesswidener @@ -0,0 +1,3 @@ +accessWidener v1 named + +accessible field net/minecraft/client/option/KeyBinding translationKey Ljava/lang/String;