From a189927b227c28cfce7c4287e9724ac6828a3fa5 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 9 Jul 2023 21:15:39 -0400 Subject: [PATCH] Fix Decorative Blocks keybind being unconfigurable --- .../modernfix/ModernFixClientFabric.java | 1 + .../fabric/modfixs/DecorativeBlocksFix.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 fabric/src/main/java/org/embeddedt/modernfix/fabric/modfixs/DecorativeBlocksFix.java diff --git a/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java b/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java index 7fd97b77..f4c420f6 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java @@ -31,6 +31,7 @@ public class ModernFixClientFabric implements ClientModInitializer { ServerLifecycleEvents.SERVER_STARTED.register(server -> { commonMod.onServerStarted(server); }); + org.embeddedt.modernfix.fabric.modfixs.DecorativeBlocksFix.fix(); if(FabricLoader.getInstance().isModLoaded("fabric-data-generation-api-v1")) { RuntimeDatagen.init(); } diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/modfixs/DecorativeBlocksFix.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/modfixs/DecorativeBlocksFix.java new file mode 100644 index 00000000..67d7c7a6 --- /dev/null +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/modfixs/DecorativeBlocksFix.java @@ -0,0 +1,22 @@ +package org.embeddedt.modernfix.fabric.modfixs; + +import net.minecraft.client.KeyMapping; +import org.embeddedt.modernfix.util.CommonModUtil; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public class DecorativeBlocksFix { + public static void fix() { + CommonModUtil.runWithoutCrash(() -> { + Class decorativeBlocksSetup = Class.forName("lilypuree.decorative_blocks.client.ClientSetup"); + Field keybindField = decorativeBlocksSetup.getDeclaredField("switchItemState"); + keybindField.setAccessible(true); + KeyMapping keybinding = (KeyMapping)keybindField.get(null); + Class keyBindHelper = Class.forName("net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper"); + Method keyBindRegister = keyBindHelper.getDeclaredMethod("registerKeyBinding", KeyMapping.class); + keyBindRegister.setAccessible(true); + keyBindRegister.invoke(null, keybinding); + }, "registering Decorative Blocks keybind to allow configuration"); + } +}