diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/API.java b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/API.java index d13580e..78aa72b 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/API.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/API.java @@ -3,23 +3,19 @@ import io.github.kurrycat.mpkmod.Main; import io.github.kurrycat.mpkmod.compatibility.MCClasses.FunctionHolder; import io.github.kurrycat.mpkmod.compatibility.MCClasses.Minecraft; -import io.github.kurrycat.mpkmod.compatibility.MCClasses.WorldInteraction; import io.github.kurrycat.mpkmod.discord.DiscordRPC; import io.github.kurrycat.mpkmod.events.*; import io.github.kurrycat.mpkmod.gui.MPKGuiScreen; -import io.github.kurrycat.mpkmod.gui.infovars.InfoString; -import io.github.kurrycat.mpkmod.gui.screens.LandingBlockGuiScreen; -import io.github.kurrycat.mpkmod.gui.screens.main_gui.MainGuiScreen; import io.github.kurrycat.mpkmod.gui.screens.options_gui.Option; -import io.github.kurrycat.mpkmod.gui.screens.options_gui.OptionsGuiScreen; -import io.github.kurrycat.mpkmod.landingblock.LandingBlock; import io.github.kurrycat.mpkmod.modules.MPKModule; import io.github.kurrycat.mpkmod.modules.MPKModuleImpl; import io.github.kurrycat.mpkmod.modules.ModuleFinder; import io.github.kurrycat.mpkmod.modules.ModuleManager; import io.github.kurrycat.mpkmod.save.Serializer; -import io.github.kurrycat.mpkmod.ticks.TimingStorage; -import io.github.kurrycat.mpkmod.util.*; +import io.github.kurrycat.mpkmod.util.ClassUtil; +import io.github.kurrycat.mpkmod.util.JSONConfig; +import io.github.kurrycat.mpkmod.util.Mouse; +import io.github.kurrycat.mpkmod.util.Procedure; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; @@ -27,7 +23,6 @@ import java.time.Instant; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; @@ -175,5 +170,15 @@ public static void onKeyInput(int keyCode, String key, boolean pressed) { public static void onMouseInput(Mouse.Button button, Mouse.State state, int x, int y, int dx, int dy, int dwheel, long nanos) { EventAPI.postEvent(new OnMouseInputEvent(button, state, x, y, dx, dy, dwheel, nanos)); } + + public static void onKeybind(String id) { + MPKGuiScreen guiScreen = guiScreenMap.get(id); + if (guiScreen != null) guiScreen.onKeybindPressed(); + + Procedure keyBinding = keyBindingMap.get(id); + if (keyBinding != null) keyBinding.run(); + + EventAPI.postEvent(new OnKeybindEvent(id)); + } } } diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/events/Event.java b/common/src/main/java/io/github/kurrycat/mpkmod/events/Event.java index 7972801..732ef02 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/events/Event.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/events/Event.java @@ -19,7 +19,8 @@ public enum EventType { SERVER_CONNECT(OnServerConnect.class), SERVER_DISCONNECT(OnServerDisconnect.class), KEY_INPUT(OnKeyInputEvent.class), - MOUSE_INPUT(OnMouseInputEvent.class); + MOUSE_INPUT(OnMouseInputEvent.class), + KEYBIND(OnKeybindEvent.class); public final Class eventClass; diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/events/OnKeybindEvent.java b/common/src/main/java/io/github/kurrycat/mpkmod/events/OnKeybindEvent.java new file mode 100644 index 0000000..b6f6ba1 --- /dev/null +++ b/common/src/main/java/io/github/kurrycat/mpkmod/events/OnKeybindEvent.java @@ -0,0 +1,10 @@ +package io.github.kurrycat.mpkmod.events; + +public class OnKeybindEvent extends Event { + public String id; + + public OnKeybindEvent(String id) { + super(EventType.KEYBIND); + this.id = id; + } +} diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/gui/MPKGuiScreen.java b/common/src/main/java/io/github/kurrycat/mpkmod/gui/MPKGuiScreen.java index 97ecafd..74b8c4d 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/gui/MPKGuiScreen.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/gui/MPKGuiScreen.java @@ -93,6 +93,10 @@ public boolean shouldCreateKeyBind() { return false; } + public void onKeybindPressed() { + Minecraft.displayGuiScreen(this); + } + public final void close() { Minecraft.displayGuiScreen(null); } diff --git a/fabric-1.19.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_19_4/EventHandler.java b/fabric-1.19.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_19_4/EventHandler.java index 1a99842..3560941 100644 --- a/fabric-1.19.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_19_4/EventHandler.java +++ b/fabric-1.19.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_19_4/EventHandler.java @@ -59,15 +59,8 @@ public void onKey(int key, int scanCode, int action) { API.Events.onKeyInput(key, inputKey.getLocalizedText().getString(), action == 1); MPKMod.keyBindingMap.forEach((id, keyBinding) -> { - boolean keyBindingPressed = keyBinding.isPressed(); - if (keyBindingPressed && API.guiScreenMap.containsKey(id)) { - MinecraftClient.getInstance().setScreen( - new MPKGuiScreen(API.guiScreenMap.get(id)) - ); - } - - if (keyBindingPressed && API.keyBindingMap.containsKey(id)) { - API.keyBindingMap.get(id).run(); + if (keyBinding.isPressed()) { + API.Events.onKeybind(id); } }); } diff --git a/fabric-1.20.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_4/EventHandler.java b/fabric-1.20.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_4/EventHandler.java index 1ca0145..1d4db83 100644 --- a/fabric-1.20.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_4/EventHandler.java +++ b/fabric-1.20.4/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_4/EventHandler.java @@ -60,15 +60,8 @@ public void onKey(int key, int scanCode, int action) { API.Events.onKeyInput(key, inputKey.getLocalizedText().getString(), action == 1); MPKMod.keyBindingMap.forEach((id, keyBinding) -> { - boolean keyBindingPressed = keyBinding.isPressed(); - if (keyBindingPressed && API.guiScreenMap.containsKey(id)) { - MinecraftClient.getInstance().setScreen( - new MPKGuiScreen(API.guiScreenMap.get(id)) - ); - } - - if (keyBindingPressed && API.keyBindingMap.containsKey(id)) { - API.keyBindingMap.get(id).run(); + if (keyBinding.isPressed()) { + API.Events.onKeybind(id); } }); } diff --git a/fabric-1.20.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_6/EventHandler.java b/fabric-1.20.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_6/EventHandler.java index c0d48a1..b711d46 100644 --- a/fabric-1.20.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_6/EventHandler.java +++ b/fabric-1.20.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_20_6/EventHandler.java @@ -60,15 +60,8 @@ public void onKey(int key, int scanCode, int action) { API.Events.onKeyInput(key, inputKey.getLocalizedText().getString(), action == 1); MPKMod.keyBindingMap.forEach((id, keyBinding) -> { - boolean keyBindingPressed = keyBinding.isPressed(); - if (keyBindingPressed && API.guiScreenMap.containsKey(id)) { - MinecraftClient.getInstance().setScreen( - new MPKGuiScreen(API.guiScreenMap.get(id)) - ); - } - - if (keyBindingPressed && API.keyBindingMap.containsKey(id)) { - API.keyBindingMap.get(id).run(); + if (keyBinding.isPressed()) { + API.Events.onKeybind(id); } }); } diff --git a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java index f1c74c0..97753d5 100644 --- a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java +++ b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java @@ -57,15 +57,8 @@ public void onEvent(InputEvent.KeyInputEvent event) { API.Events.onKeyInput(InputConstants.convert(keyCode), key, pressed); MPKMod.keyBindingMap.forEach((id, keyBinding) -> { - boolean keyBindingPressed = keyBinding.isPressed(); - if (keyBindingPressed && API.guiScreenMap.containsKey(id)) { - Minecraft.getMinecraft().displayGuiScreen( - new MPKGuiScreen(API.guiScreenMap.get(id)) - ); - } - - if (keyBindingPressed && API.keyBindingMap.containsKey(id)) { - API.keyBindingMap.get(id).run(); + if (keyBinding.isPressed()) { + API.Events.onKeybind(id); } }); }