From 6868404b9653bc3dbc8000e14be3bb00e0c0f8da Mon Sep 17 00:00:00 2001 From: c0508383 Date: Wed, 10 Aug 2022 01:04:59 -0500 Subject: [PATCH] Alternative fix for invtweaks using optional methods that avoids duplication. --- .../asm/fixes/MysteriumPatchesFixesO.java | 4 +- .../backhand/client/ClientTickHandler.java | 39 ++++++++++++++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/tclproject/mysteriumlib/asm/fixes/MysteriumPatchesFixesO.java b/src/main/java/net/tclproject/mysteriumlib/asm/fixes/MysteriumPatchesFixesO.java index a52313a..e955293 100644 --- a/src/main/java/net/tclproject/mysteriumlib/asm/fixes/MysteriumPatchesFixesO.java +++ b/src/main/java/net/tclproject/mysteriumlib/asm/fixes/MysteriumPatchesFixesO.java @@ -654,7 +654,7 @@ public static InvTweaksContainerManager getContainerManager(InvTweaksContainerSe // inv tweaks compat starts here - @Optional.Method(modid="inventorytweaks") + /*@Optional.Method(modid="inventorytweaks") @Fix(returnSetting = EnumReturnSetting.ALWAYS) public static boolean move(InvTweaksContainerSectionManager itcm, int srcIndex, int destIndex) { if (CommonProxy.invTweaksDisableMove > 0) { @@ -663,5 +663,5 @@ public static boolean move(InvTweaksContainerSectionManager itcm, int srcIndex, } return getContainerManager(itcm).move(getContainerSection(itcm), srcIndex, getContainerSection(itcm), destIndex); - } + }*/ } diff --git a/src/main/java/xonin/backhand/client/ClientTickHandler.java b/src/main/java/xonin/backhand/client/ClientTickHandler.java index fb2a20e..df5f50b 100644 --- a/src/main/java/xonin/backhand/client/ClientTickHandler.java +++ b/src/main/java/xonin/backhand/client/ClientTickHandler.java @@ -1,10 +1,12 @@ package xonin.backhand.client; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import invtweaks.InvTweaks; import mods.battlegear2.BattlemodeHookContainerClass; import mods.battlegear2.api.core.BattlegearUtils; import mods.battlegear2.api.core.InventoryPlayerBattle; @@ -19,17 +21,25 @@ public class ClientTickHandler { public static int delay; + public static int swapDelay; + public static boolean prevInvTweaksAutoRefill; + public static boolean prevInvTweaksBreakRefill; @SubscribeEvent public void onKeyInputEvent(InputEvent.KeyInputEvent event) { Minecraft mc = Minecraft.getMinecraft(); EntityClientPlayerMP player = mc.thePlayer; - if (ClientProxy.swapOffhand.getIsKeyPressed() && Keyboard.isKeyDown(Keyboard.getEventKey())) { + if (ClientProxy.swapOffhand.getIsKeyPressed() && Keyboard.isKeyDown(Keyboard.getEventKey()) && swapDelay <= 0) { ItemStack offhandItem = ((InventoryPlayerBattle) player.inventory).getOffhandItem(); if (Backhand.isOffhandBlacklisted(player.getCurrentEquippedItem()) || Backhand.isOffhandBlacklisted(offhandItem)) { return; } + swapDelay = 5; + try { + this.getClass().getMethod("invTweaksSwapPatch"); + invTweaksSwapPatch(); + } catch (Exception ignored) {} player.sendQueue.addToSendQueue( new OffhandSwapPacket(player.getCurrentEquippedItem(), offhandItem, player).generatePacket() @@ -39,6 +49,33 @@ public void onKeyInputEvent(InputEvent.KeyInputEvent event) { } } + @Optional.Method(modid="inventorytweaks") + public void invTweaksSwapPatch() { + prevInvTweaksAutoRefill = Boolean.parseBoolean(InvTweaks.getConfigManager().getConfig().getProperty("enableAutoRefill")); + prevInvTweaksBreakRefill = Boolean.parseBoolean(InvTweaks.getConfigManager().getConfig().getProperty("autoRefillBeforeBreak")); + InvTweaks.getConfigManager().getConfig().setProperty("enableAutoRefill", "false"); + InvTweaks.getConfigManager().getConfig().setProperty("autoRefillBeforeBreak","false"); + } + + @SubscribeEvent + public void onClientTick(TickEvent.ClientTickEvent event) { + if (swapDelay > 0) { + swapDelay--; + if (swapDelay == 0) { + try { + this.getClass().getMethod("restoreInvTweaksConfigs"); + restoreInvTweaksConfigs(); + } catch (Exception ignored) {} + } + } + } + + @Optional.Method(modid="inventorytweaks") + public void restoreInvTweaksConfigs() { + InvTweaks.getConfigManager().getConfig().setProperty("enableAutoRefill",String.valueOf(prevInvTweaksAutoRefill)); + InvTweaks.getConfigManager().getConfig().setProperty("autoRefillBeforeBreak",String.valueOf(prevInvTweaksBreakRefill)); + } + @SideOnly(Side.CLIENT) @SubscribeEvent public void clientHelper(TickEvent.PlayerTickEvent event) {