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 1/2] 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"); + } +} From 5315d808590e41478dc9c3cdc1ca6fdf983cf98d Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 10 Jul 2023 09:01:18 -0400 Subject: [PATCH 2/2] Use synchronized HashMap instead of CHM to permit null keys for buggy mods Related: #157 --- .../modernfix/common/mixin/safety/ItemPropertiesMixin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/safety/ItemPropertiesMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/safety/ItemPropertiesMixin.java index 7429ea3d..883b5dab 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/safety/ItemPropertiesMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/safety/ItemPropertiesMixin.java @@ -13,8 +13,8 @@ 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.Collections; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; @Mixin(value = ItemProperties.class, priority = 700) @ClientOnlyMixin @@ -24,7 +24,7 @@ public class ItemPropertiesMixin { @Inject(method = "", at = @At("RETURN")) private static void useConcurrentMaps(CallbackInfo ci) { - GENERIC_PROPERTIES = new ConcurrentHashMap<>(GENERIC_PROPERTIES); - PROPERTIES = new ConcurrentHashMap<>(PROPERTIES); + GENERIC_PROPERTIES = Collections.synchronizedMap(GENERIC_PROPERTIES); + PROPERTIES = Collections.synchronizedMap(PROPERTIES); } }