From d9540ae6c79950f064abeaa02ef1181ec125a621 Mon Sep 17 00:00:00 2001 From: Colton Date: Sun, 5 May 2024 10:51:52 -0400 Subject: [PATCH] Fixed issue with Mouse and Keyboard actions crashing client on launch. --- .../java/net/aoba/mixin/KeyboardMixin.java | 14 ++++-- src/main/java/net/aoba/mixin/MouseMixin.java | 50 +++++++++++-------- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/aoba/mixin/KeyboardMixin.java b/src/main/java/net/aoba/mixin/KeyboardMixin.java index a6f3ed83..65333438 100644 --- a/src/main/java/net/aoba/mixin/KeyboardMixin.java +++ b/src/main/java/net/aoba/mixin/KeyboardMixin.java @@ -25,6 +25,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.aoba.Aoba; +import net.aoba.AobaClient; import net.aoba.event.events.KeyDownEvent; import net.minecraft.client.Keyboard; @@ -34,11 +35,14 @@ public class KeyboardMixin { @Inject(at = {@At("HEAD")}, method = {"onKey(JIIII)V" }, cancellable = true) private void OnKeyDown(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) { - if(action == GLFW.GLFW_PRESS) { - KeyDownEvent event = new KeyDownEvent(window, key, scancode, action, modifiers); - Aoba.getInstance().eventManager.Fire(event); - if(event.IsCancelled()) { - ci.cancel(); + AobaClient aoba = Aoba.getInstance(); + if(aoba != null && aoba.eventManager != null) { + if(action == GLFW.GLFW_PRESS) { + KeyDownEvent event = new KeyDownEvent(window, key, scancode, action, modifiers); + Aoba.getInstance().eventManager.Fire(event); + if(event.IsCancelled()) { + ci.cancel(); + } } } } diff --git a/src/main/java/net/aoba/mixin/MouseMixin.java b/src/main/java/net/aoba/mixin/MouseMixin.java index 0da89166..fa09d83d 100644 --- a/src/main/java/net/aoba/mixin/MouseMixin.java +++ b/src/main/java/net/aoba/mixin/MouseMixin.java @@ -41,37 +41,43 @@ public class MouseMixin { @Inject(at = { @At("HEAD") }, method = { "onMouseButton(JIII)V" }, cancellable = true) private void onMouseButton(long window, int button, int action, int mods, CallbackInfo ci) { - switch (button) { - case GLFW.GLFW_MOUSE_BUTTON_LEFT: - if (action == 1) { - LeftMouseDownEvent event = new LeftMouseDownEvent(x, y); - Aoba.getInstance().eventManager.Fire(event); + AobaClient aoba = Aoba.getInstance(); + if(aoba != null && aoba.eventManager != null) { + switch (button) { + case GLFW.GLFW_MOUSE_BUTTON_LEFT: + if (action == 1) { + LeftMouseDownEvent event = new LeftMouseDownEvent(x, y); + aoba.eventManager.Fire(event); - if (event.IsCancelled()) { - ci.cancel(); - } - } else { - LeftMouseUpEvent event = new LeftMouseUpEvent(x, y); - Aoba.getInstance().eventManager.Fire(event); + if (event.IsCancelled()) { + ci.cancel(); + } + } else { + LeftMouseUpEvent event = new LeftMouseUpEvent(x, y); + aoba.eventManager.Fire(event); - if (event.IsCancelled()) { - ci.cancel(); + if (event.IsCancelled()) { + ci.cancel(); + } } - } - break; - case GLFW.GLFW_MOUSE_BUTTON_MIDDLE: + break; + case GLFW.GLFW_MOUSE_BUTTON_MIDDLE: - break; + break; + } } } @Inject(at = { @At("HEAD") }, method = { "onMouseScroll(JDD)V" }, cancellable = true) private void onMouseScroll(long window, double horizontal, double vertical, CallbackInfo ci) { - MouseScrollEvent event = new MouseScrollEvent(horizontal, vertical); - Aoba.getInstance().eventManager.Fire(event); + AobaClient aoba = Aoba.getInstance(); + if(aoba != null && aoba.eventManager != null) { + MouseScrollEvent event = new MouseScrollEvent(horizontal, vertical); + aoba.eventManager.Fire(event); - if (event.IsCancelled()) { - ci.cancel(); + if (event.IsCancelled()) { + ci.cancel(); + } } } @@ -84,7 +90,7 @@ private void onLockCursor(CallbackInfo ci) { @Inject(at = { @At("HEAD") }, method = { "onCursorPos(JDD)V" }, cancellable = true) private void onCursorPos(long window, double x, double y, CallbackInfo ci) { AobaClient aoba = Aoba.getInstance(); - if(aoba.eventManager != null) { + if(aoba != null && aoba.eventManager != null) { MouseMoveEvent event = new MouseMoveEvent(x, y); aoba.eventManager.Fire(event);