summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/GuiData.kt72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/GuiData.kt b/src/main/java/at/hannibal2/skyhanni/data/GuiData.kt
new file mode 100644
index 000000000..c0cd46365
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/data/GuiData.kt
@@ -0,0 +1,72 @@
+package at.hannibal2.skyhanni.data
+
+import at.hannibal2.skyhanni.events.GuiContainerEvent
+import at.hannibal2.skyhanni.events.InventoryCloseEvent
+import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
+import at.hannibal2.skyhanni.events.NEURenderEvent
+import at.hannibal2.skyhanni.utils.DelayedRun
+import at.hannibal2.skyhanni.utils.KeyboardManager.isKeyHeld
+import io.github.moulberry.notenoughupdates.NEUApi
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.inventory.GuiChest
+import net.minecraftforge.client.event.GuiOpenEvent
+import net.minecraftforge.client.event.GuiScreenEvent
+import net.minecraftforge.fml.common.eventhandler.EventPriority
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.network.FMLNetworkEvent
+import org.lwjgl.input.Keyboard
+
+object GuiData {
+
+ var preDrawEventCanceled = false
+
+ @SubscribeEvent(priority = EventPriority.HIGH)
+ fun onNeuRenderEvent(event: NEURenderEvent) {
+ if (preDrawEventCanceled) event.cancel()
+ }
+
+ @SubscribeEvent(priority = EventPriority.HIGH)
+ fun onClick(event: GuiContainerEvent.SlotClickEvent) {
+ if (preDrawEventCanceled) event.cancel()
+ }
+
+ @SubscribeEvent(priority = EventPriority.HIGH)
+ fun onGuiClick(event: GuiScreenEvent.MouseInputEvent.Pre) {
+ if (preDrawEventCanceled) event.isCanceled = true
+ }
+
+ @SubscribeEvent(priority = EventPriority.HIGH)
+ fun onGuiKeyPress(event: GuiScreenEvent.KeyboardInputEvent.Pre) {
+ val (escKey, invKey) = Minecraft.getMinecraft().gameSettings.let {
+ Keyboard.KEY_ESCAPE to it.keyBindInventory.keyCode
+ }
+ if (escKey.isKeyHeld() || invKey.isKeyHeld()) return
+ if (preDrawEventCanceled) event.isCanceled = true
+ }
+
+ @SubscribeEvent
+ fun onInventoryClose(event: InventoryCloseEvent) {
+ DelayedRun.runNextTick {
+ if (Minecraft.getMinecraft().currentScreen !is GuiChest) {
+ preDrawEventCanceled = false
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldChange(event: LorenzWorldChangeEvent) {
+ preDrawEventCanceled = false
+ }
+
+ @SubscribeEvent
+ fun onDisconnect(event: FMLNetworkEvent.ClientDisconnectionFromServerEvent) {
+ preDrawEventCanceled = false
+ }
+
+ @SubscribeEvent(priority = EventPriority.LOW)
+ fun onGuiOpen(event: GuiOpenEvent) {
+ if (preDrawEventCanceled) {
+ NEUApi.setInventoryButtonsToDisabled()
+ }
+ }
+}