From ae98df0fe99e18460d7132c448bab2ecd6d951c6 Mon Sep 17 00:00:00 2001 From: Najoan <68422289+najoan125@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:03:54 +0900 Subject: [PATCH 1/2] add comment --- gradle.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gradle.properties b/gradle.properties index 3430d56..9168c56 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,6 +27,7 @@ parchment_minecraft=1.21 parchment_version=2024.06.23 # Fabric +# https://fabricmc.net/develop/ fabric_version=0.100.1+1.21 fabric_loader_version=0.15.11 @@ -36,10 +37,12 @@ command_block_ide_version = 0.4.8 better_command_block_ui_version = XCUcnTCS # Forge +# https://files.minecraftforge.net/net/minecraftforge/forge/ forge_version=51.0.17 forge_loader_version_range=[51,) # NeoForge +# https://projects.neoforged.net/neoforged/neoforge neoforge_version=21.0.37-beta neoforge_loader_version_range=[4,) From a0b556f734ac5c177cdc428b8509747f752bdef0 Mon Sep 17 00:00:00 2001 From: Najoan <68422289+najoan125@users.noreply.github.com> Date: Sat, 28 Sep 2024 16:09:24 +0900 Subject: [PATCH 2/2] fix key binding issue --- .../najoan/koreanpatch/client/KeyBinds.java | 19 ++++++--- .../koreanpatch/mixin/OptionsMixin.java | 22 ---------- .../mixin/accessor/KeyMappingAccessor.java | 15 ------- .../mixin/accessor/OptionsAccessor.java | 15 ------- .../util/minecraft/KeyMappingUtil.java | 41 ------------------- .../main/resources/koreanpatch.mixins.json | 3 -- .../koreanpatch/client/KoreanPatchFabric.java | 9 ++++ .../koreanpatch/client/KoreanPatchForge.java | 6 ++- .../client/KoreanPatchNeoForge.java | 6 ++- 9 files changed, 30 insertions(+), 106 deletions(-) delete mode 100644 common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/OptionsMixin.java delete mode 100644 common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/KeyMappingAccessor.java delete mode 100644 common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/OptionsAccessor.java delete mode 100644 common/src/main/java/com/hyfata/najoan/koreanpatch/util/minecraft/KeyMappingUtil.java diff --git a/common/src/main/java/com/hyfata/najoan/koreanpatch/client/KeyBinds.java b/common/src/main/java/com/hyfata/najoan/koreanpatch/client/KeyBinds.java index 3d14914..c84d1a8 100644 --- a/common/src/main/java/com/hyfata/najoan/koreanpatch/client/KeyBinds.java +++ b/common/src/main/java/com/hyfata/najoan/koreanpatch/client/KeyBinds.java @@ -1,13 +1,14 @@ package com.hyfata.najoan.koreanpatch.client; -import com.hyfata.najoan.koreanpatch.util.minecraft.KeyMappingUtil; import com.mojang.blaze3d.platform.InputConstants; import com.sun.jna.Platform; import net.minecraft.client.KeyMapping; import org.lwjgl.glfw.GLFW; +import java.util.ArrayList; + public class KeyBinds { - private static KeyMapping langBinding, imeBinding; + private static final ArrayList keyMappings = new ArrayList<>(); public static void register() { int keycode; @@ -17,14 +18,16 @@ public static void register() { keycode = GLFW.GLFW_KEY_LEFT_CONTROL; } - langBinding = KeyMappingUtil.registerKeyMapping(new KeyMapping( + // 0: lang binding + keyMappings.add(new KeyMapping( "key.koreanpatch.toggle_langtype", InputConstants.Type.KEYSYM, keycode, "key.categories.koreanpatch" )); - imeBinding = KeyMappingUtil.registerKeyMapping(new KeyMapping( + // 1: ime binding + keyMappings.add(new KeyMapping( "key.koreanpatch.toggle_ime", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_I, @@ -32,11 +35,15 @@ public static void register() { )); } + public static ArrayList getKeyMappings() { + return keyMappings; + } + public static KeyMapping getLangBinding() { - return langBinding; + return keyMappings.getFirst(); } public static KeyMapping getImeBinding() { - return imeBinding; + return keyMappings.get(1); } } diff --git a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/OptionsMixin.java b/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/OptionsMixin.java deleted file mode 100644 index 1b74de2..0000000 --- a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/OptionsMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.hyfata.najoan.koreanpatch.mixin; - -import com.hyfata.najoan.koreanpatch.mixin.accessor.OptionsAccessor; -import com.hyfata.najoan.koreanpatch.util.minecraft.KeyMappingUtil; -import net.minecraft.client.KeyMapping; -import net.minecraft.client.Options; -import org.apache.commons.lang3.ArrayUtils; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(Options.class) -public class OptionsMixin { - @Inject(method = "load", at = @At("HEAD")) - public void load(CallbackInfo ci) { - OptionsAccessor accessor = (OptionsAccessor) this; - for (KeyMapping keyMapping : KeyMappingUtil.getModdedKeyBindings()) { - accessor.setKeyMappings(ArrayUtils.add(accessor.getKeyMappings(), keyMapping)); - } - } -} diff --git a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/KeyMappingAccessor.java b/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/KeyMappingAccessor.java deleted file mode 100644 index e8c82bc..0000000 --- a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/KeyMappingAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hyfata.najoan.koreanpatch.mixin.accessor; - -import net.minecraft.client.KeyMapping; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -@Mixin(KeyMapping.class) -public interface KeyMappingAccessor { - @Accessor("CATEGORY_SORT_ORDER") - static Map getCategoryMap() { - throw new AssertionError(); - } -} diff --git a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/OptionsAccessor.java b/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/OptionsAccessor.java deleted file mode 100644 index 68c7789..0000000 --- a/common/src/main/java/com/hyfata/najoan/koreanpatch/mixin/accessor/OptionsAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hyfata.najoan.koreanpatch.mixin.accessor; - -import net.minecraft.client.KeyMapping; -import net.minecraft.client.Options; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(Options.class) -public interface OptionsAccessor { - @Accessor("keyMappings") - KeyMapping[] getKeyMappings(); - - @Accessor("keyMappings") - void setKeyMappings(KeyMapping[] keyMappings); -} diff --git a/common/src/main/java/com/hyfata/najoan/koreanpatch/util/minecraft/KeyMappingUtil.java b/common/src/main/java/com/hyfata/najoan/koreanpatch/util/minecraft/KeyMappingUtil.java deleted file mode 100644 index 881fbbb..0000000 --- a/common/src/main/java/com/hyfata/najoan/koreanpatch/util/minecraft/KeyMappingUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.hyfata.najoan.koreanpatch.util.minecraft; - -import com.hyfata.najoan.koreanpatch.mixin.accessor.KeyMappingAccessor; -import it.unimi.dsi.fastutil.objects.ReferenceArrayList; -import net.minecraft.client.KeyMapping; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -public class KeyMappingUtil { - private static final List MODDED_KEY_BINDINGS = new ReferenceArrayList<>(); - - public static KeyMapping registerKeyMapping(KeyMapping binding) { - // This will do nothing if the category already exists. - addCategory(binding.getCategory()); - MODDED_KEY_BINDINGS.add(binding); - return binding; - } - - public static List getModdedKeyBindings() { - return MODDED_KEY_BINDINGS; - } - - private static Map getCategoryMap() { - return KeyMappingAccessor.getCategoryMap(); - } - - public static void addCategory(String categoryTranslationKey) { - Map map = getCategoryMap(); - - if (map.containsKey(categoryTranslationKey)) { - return; - } - - Optional largest = map.values().stream().max(Integer::compareTo); - int largestInt = largest.orElse(0); - map.put(categoryTranslationKey, largestInt + 1); - System.out.println(map.toString()); - } -} diff --git a/common/src/main/resources/koreanpatch.mixins.json b/common/src/main/resources/koreanpatch.mixins.json index cb06bcd..ce1a7f5 100644 --- a/common/src/main/resources/koreanpatch.mixins.json +++ b/common/src/main/resources/koreanpatch.mixins.json @@ -8,15 +8,12 @@ "client": [ "EditBoxMixin", "KeyboardHandlerMixin", - "OptionsMixin", "TextFieldHelperMixin", "accessor.BookEditScreenDisplayCacheAccessor", "accessor.CommandSuggestionsAccessor", "accessor.CreateWorldScreenGameTabAccessor", "accessor.CreativeModeInventoryScreenInvoker", "accessor.EditBoxAccessor", - "accessor.KeyMappingAccessor", - "accessor.OptionsAccessor", "accessor.TabNavigationBarInvoker", "indicator.AnvilScreenMixin", "indicator.BookEditScreenMixin", diff --git a/fabric/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchFabric.java b/fabric/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchFabric.java index 50bf8d4..45563f2 100644 --- a/fabric/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchFabric.java +++ b/fabric/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchFabric.java @@ -3,13 +3,16 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import net.minecraft.client.KeyMapping; public class KoreanPatchFabric implements ClientModInitializer { @Override public void onInitializeClient() { KoreanPatchClient.init(); + registerKeys(); registerEvents(); } @@ -18,4 +21,10 @@ public void registerEvents() { ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> EventListener.afterScreenChange()); ClientTickEvents.END_CLIENT_TICK.register(client -> EventListener.onClientTick()); } + + public void registerKeys() { + for (KeyMapping key : KeyBinds.getKeyMappings()) { + KeyBindingHelper.registerKeyBinding(key); + } + } } diff --git a/forge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchForge.java b/forge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchForge.java index e842276..88c1d4d 100644 --- a/forge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchForge.java +++ b/forge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchForge.java @@ -1,5 +1,6 @@ package com.hyfata.najoan.koreanpatch.client; +import net.minecraft.client.KeyMapping; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.common.MinecraftForge; @@ -39,8 +40,9 @@ public static void registerEvents(IEventBus bus) { @SubscribeEvent public void registerKeys(RegisterKeyMappingsEvent event) { - event.register(KeyBinds.getImeBinding()); - event.register(KeyBinds.getLangBinding()); + for (KeyMapping key : KeyBinds.getKeyMappings()) { + event.register(key); + } } @SubscribeEvent diff --git a/neoforge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchNeoForge.java b/neoforge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchNeoForge.java index 2ef8b83..8b2e63b 100644 --- a/neoforge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchNeoForge.java +++ b/neoforge/src/main/java/com/hyfata/najoan/koreanpatch/client/KoreanPatchNeoForge.java @@ -1,5 +1,6 @@ package com.hyfata.najoan.koreanpatch.client; +import net.minecraft.client.KeyMapping; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; @@ -29,8 +30,9 @@ public void registerEvents(IEventBus bus) { @SubscribeEvent public void registerKeys(RegisterKeyMappingsEvent event) { - event.register(KeyBinds.getImeBinding()); - event.register(KeyBinds.getLangBinding()); + for (KeyMapping key : KeyBinds.getKeyMappings()) { + event.register(key); + } } @SubscribeEvent