From d13acce9a720636967faaea7f9277bdd03ff60a6 Mon Sep 17 00:00:00 2001 From: My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> Date: Fri, 7 Jan 2022 20:14:10 -0500 Subject: [PATCH] fix a bug where items were placed onto armor slots --- .../mixins/transformers/gui/MixinGuiContainer.java | 2 +- src/main/kotlin/skytils/skytilsmod/Skytils.kt | 5 +++++ .../skytils/skytilsmod/events/impl/GuiContainerEvent.kt | 1 + .../skytilsmod/features/impl/protectitems/ProtectItems.kt | 8 +++++--- .../skytilsmod/mixins/hooks/gui/GuiContainerHook.kt | 2 +- src/main/kotlin/skytils/skytilsmod/utils/DevTools.kt | 2 +- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiContainer.java b/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiContainer.java index ce1cbae1b..3233132fb 100644 --- a/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiContainer.java +++ b/src/main/java/skytils/skytilsmod/mixins/transformers/gui/MixinGuiContainer.java @@ -34,7 +34,7 @@ public abstract class MixinGuiContainer extends GuiScreen { @Unique private final GuiContainerHook hook = new GuiContainerHook(this); - @Inject(method = "keyTyped", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/EntityPlayerSP;closeScreen()V", shift = At.Shift.BEFORE)) + @Inject(method = "keyTyped", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/EntityPlayerSP;closeScreen()V", shift = At.Shift.BEFORE), cancellable = true) private void closeWindowPressed(CallbackInfo ci) { hook.closeWindowPressed(ci); } diff --git a/src/main/kotlin/skytils/skytilsmod/Skytils.kt b/src/main/kotlin/skytils/skytilsmod/Skytils.kt index 1272d8dc1..0a4651020 100644 --- a/src/main/kotlin/skytils/skytilsmod/Skytils.kt +++ b/src/main/kotlin/skytils/skytilsmod/Skytils.kt @@ -310,6 +310,11 @@ class Skytils { Utils.inDungeons = Utils.inSkyblock && ScoreboardUtil.sidebarLines.any { (it.contains("The Catacombs") && !it.contains("Queue")) || it.contains("Dungeon Cleared:") } + if (deobfEnvironment) { + if (DevTools.toggles.getOrDefault("forcehypixel", false)) Utils.isOnHypixel = true + if (DevTools.toggles.getOrDefault("forceskyblock", false)) Utils.inSkyblock = true + if (DevTools.toggles.getOrDefault("forcedungeons", false)) Utils.inDungeons = true + } if (DevTools.getToggle("sprint")) KeyBinding.setKeyBindState(mc.gameSettings.keyBindSprint.keyCode, true) } diff --git a/src/main/kotlin/skytils/skytilsmod/events/impl/GuiContainerEvent.kt b/src/main/kotlin/skytils/skytilsmod/events/impl/GuiContainerEvent.kt index c5f7e5a41..e4aa8e1a0 100644 --- a/src/main/kotlin/skytils/skytilsmod/events/impl/GuiContainerEvent.kt +++ b/src/main/kotlin/skytils/skytilsmod/events/impl/GuiContainerEvent.kt @@ -32,6 +32,7 @@ abstract class GuiContainerEvent(open val gui: GuiContainer, open val container: val partialTicks: Float ) : GuiContainerEvent(gui, container) + @Cancelable data class CloseWindowEvent(override val gui: GuiContainer, override val container: Container) : GuiContainerEvent(gui, container) diff --git a/src/main/kotlin/skytils/skytilsmod/features/impl/protectitems/ProtectItems.kt b/src/main/kotlin/skytils/skytilsmod/features/impl/protectitems/ProtectItems.kt index b1a872ca7..4e69f8083 100644 --- a/src/main/kotlin/skytils/skytilsmod/features/impl/protectitems/ProtectItems.kt +++ b/src/main/kotlin/skytils/skytilsmod/features/impl/protectitems/ProtectItems.kt @@ -40,12 +40,14 @@ class ProtectItems { val item = mc.thePlayer.inventory.itemStack val extraAttr = ItemUtil.getExtraAttributes(item) if (ItemProtectStrategy.isAnyWorth(item, extraAttr, ItemProtectStrategy.ProtectType.USERCLOSEWINDOW)) { - notifyStopped(null, "dropping") for (slot in event.container.inventorySlots) { - if (slot.inventory !== mc.thePlayer.inventory || slot.hasStack) continue + if (slot.inventory !== mc.thePlayer.inventory || slot.hasStack || !slot.isItemValid(item)) continue mc.playerController.windowClick(event.container.windowId, slot.slotNumber, 0, 0, mc.thePlayer) - break + notifyStopped(null, "dropping") + return } + notifyStopped(null, "closing the window on") + event.isCanceled = true } } } diff --git a/src/main/kotlin/skytils/skytilsmod/mixins/hooks/gui/GuiContainerHook.kt b/src/main/kotlin/skytils/skytilsmod/mixins/hooks/gui/GuiContainerHook.kt index 26c48fecb..0333ed8e6 100644 --- a/src/main/kotlin/skytils/skytilsmod/mixins/hooks/gui/GuiContainerHook.kt +++ b/src/main/kotlin/skytils/skytilsmod/mixins/hooks/gui/GuiContainerHook.kt @@ -33,7 +33,7 @@ class GuiContainerHook(guiAny: Any) { } fun closeWindowPressed(ci: CallbackInfo) { - CloseWindowEvent(gui, gui.inventorySlots).postAndCatch() + if (CloseWindowEvent(gui, gui.inventorySlots).postAndCatch()) ci.cancel() } fun backgroundDrawn(mouseX: Int, mouseY: Int, partialTicks: Float, ci: CallbackInfo) { diff --git a/src/main/kotlin/skytils/skytilsmod/utils/DevTools.kt b/src/main/kotlin/skytils/skytilsmod/utils/DevTools.kt index 415bae83c..91905a3d1 100644 --- a/src/main/kotlin/skytils/skytilsmod/utils/DevTools.kt +++ b/src/main/kotlin/skytils/skytilsmod/utils/DevTools.kt @@ -21,7 +21,7 @@ package skytils.skytilsmod.utils import gg.essential.universal.UChat object DevTools { - private val toggles = HashMap() + val toggles = HashMap() var allToggle = false private set