From 3e4c1757c54a3f781e0b84175a0d326527488eb7 Mon Sep 17 00:00:00 2001 From: XIAYM-gh Date: Sat, 13 Jul 2024 20:02:39 +0800 Subject: [PATCH] Apply old fixes from 1.2.0 - I just wrongly worked on the 1.1.x base :( --- src/main/java/cn/xiaym/skin/Main.java | 2 -- .../cn/xiaym/skin/mixin/KeyBindingHandler.java | 16 ++++++++++++++++ .../resources/show-my-skin-parts.mixins.json | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/xiaym/skin/Main.java b/src/main/java/cn/xiaym/skin/Main.java index 3f76d2f..a5b4f6a 100644 --- a/src/main/java/cn/xiaym/skin/Main.java +++ b/src/main/java/cn/xiaym/skin/Main.java @@ -3,7 +3,6 @@ import net.fabricmc.api.ClientModInitializer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.InputUtil; import org.lwjgl.glfw.GLFW; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,7 +10,6 @@ public class Main implements ClientModInitializer { public static final KeyBinding MANUAL_KEY = new KeyBinding( "keybinding.skinpr.refreshManually", - InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_N, "category.skinpr.keybindings" ); diff --git a/src/main/java/cn/xiaym/skin/mixin/KeyBindingHandler.java b/src/main/java/cn/xiaym/skin/mixin/KeyBindingHandler.java index 297b993..8611c47 100644 --- a/src/main/java/cn/xiaym/skin/mixin/KeyBindingHandler.java +++ b/src/main/java/cn/xiaym/skin/mixin/KeyBindingHandler.java @@ -11,11 +11,22 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.util.Map; + public class KeyBindingHandler { + @Mixin(KeyBinding.class) + public interface CategoryAccessor { + @Accessor("CATEGORY_ORDER_MAP") + static Map getCategoryMap() { + throw new AssertionError(); + } + } + @Mixin(GameOptions.class) public static class Binder { @Shadow @@ -23,8 +34,13 @@ public static class Binder { @Mutable public KeyBinding[] allKeys; + @SuppressWarnings("all") @Inject(method = "load()V", at = @At("HEAD")) public void registerKey(CallbackInfo info) { + Map categories = CategoryAccessor.getCategoryMap(); + categories.put(Main.MANUAL_KEY.getCategory(), + categories.values().stream().max(Integer::compareTo).orElse(0) + 1); + KeyBinding[] bindings = new KeyBinding[allKeys.length + 1]; System.arraycopy(allKeys, 0, bindings, 0, allKeys.length); bindings[bindings.length - 1] = Main.MANUAL_KEY; diff --git a/src/main/resources/show-my-skin-parts.mixins.json b/src/main/resources/show-my-skin-parts.mixins.json index e0b95d9..67ca812 100644 --- a/src/main/resources/show-my-skin-parts.mixins.json +++ b/src/main/resources/show-my-skin-parts.mixins.json @@ -5,6 +5,7 @@ "client": [ "DimensionChangeHandler", "KeyBindingHandler$Binder", + "KeyBindingHandler$CategoryAccessor", "KeyBindingHandler$PressHandler", "PlayerRendererMixin", "RespawnHandler"