From a5554ee21d419ef1195d8f6c8e4dddad20024b7b Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Mon, 29 Apr 2024 20:24:42 +0200 Subject: [PATCH] Improve Ranged Combat code --- .../client/mixin/MouseMixin.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java index 8ce7768..151af5e 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java @@ -19,10 +19,14 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; import net.minecraft.client.util.GlfwUtil; import net.minecraft.client.util.SmoothUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ThrowablePotionItem; +import net.minecraft.util.UseAction; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -115,15 +119,8 @@ public abstract class MouseMixin implements MouseAccessor { cursorXSmoother.clear(); cursorYSmoother.clear(); } - net.minecraft.item.ItemStack items = client.player != null ? client.player.getActiveItem() : net.minecraft.item.ItemStack.EMPTY; - boolean isUsingLongRangedTool = (leftButtonClicked && - items.getUseAction() == net.minecraft.util.UseAction.BOW && - items.getUseAction() == net.minecraft.util.UseAction.CROSSBOW && - items.getUseAction() == net.minecraft.util.UseAction.SPEAR) - || - items.getItem() instanceof net.minecraft.item.ThrowablePotionItem; EyeTrackerHandler.updateMouseWithEyeTracking(x + cursorDeltaX, y + cursorDeltaY, client, - glfwTime, leftButtonClicked, isUsingLongRangedTool, cursorXSmoother, cursorYSmoother); + glfwTime, leftButtonClicked, isUsingLongRangedTool(), cursorXSmoother, cursorYSmoother); glfwTime = GlfwUtil.getTime(); cursorDeltaX = 0.0; cursorDeltaY = 0.0; @@ -134,6 +131,14 @@ public abstract class MouseMixin implements MouseAccessor { } } + @Unique + private boolean isUsingLongRangedTool() { + if (client.player == null) return false; + ItemStack stack = client.player.getActiveItem(); + return (leftButtonClicked && (stack.getUseAction() == UseAction.BOW || stack.getUseAction() == UseAction.CROSSBOW || + stack.getUseAction() == UseAction.SPEAR || stack.getItem() instanceof ThrowablePotionItem)); + } + @Inject(method = "lockCursor", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/InputUtil;setCursorParameters(JIDD)V",shift = At.Shift.BEFORE), cancellable = true) private void midnightcontrols$lockCursor(CallbackInfo ci) { if ((doMixedInput() || MidnightControlsConfig.eyeTrackerAsMouse)) {