From 28de7312f84991682182ff5931988588cd560896 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 7 May 2025 15:08:52 +0200 Subject: [PATCH] fix: get touchscreen controls working again --- .../client/MidnightControlsClient.java | 4 ++-- .../client/mixin/GameRendererMixin.java | 2 +- .../client/mixin/MinecraftClientMixin.java | 11 ++++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java index 21df7d7..09c6718 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java @@ -89,8 +89,8 @@ public class MidnightControlsClient extends MidnightControls { public void run() { try { if (lateInitDone && client.isRunning()) { - if (MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER && (client.isWindowFocused() || MidnightControlsConfig.unfocusedInput)) { - input.tickCameraStick(); + if (MidnightControlsConfig.controlsMode != ControlsMode.DEFAULT && (client.isWindowFocused() || MidnightControlsConfig.unfocusedInput)) { + if (MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER) input.tickCameraStick(); input.updateCamera(); } } diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java index af4e086..99ae52f 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameRendererMixin.java @@ -44,7 +44,7 @@ public abstract class GameRendererMixin { drawContext.draw(); } @Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z"), method = "renderWorld") - private void midnigtcontrols$captureMatrices(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 1) Matrix4f matrices) { + private void midnigtcontrols$captureMatrices(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 2) Matrix4f matrices) { TouchUtils.lastProjMat.set(RenderSystem.getProjectionMatrix()); TouchUtils.lastModMat.set(RenderSystem.getModelViewMatrix()); TouchUtils.lastWorldSpaceMatrix.set(matrices); diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java index d4f8d8b..cdcad30 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java @@ -36,6 +36,7 @@ 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.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.reacharound; @@ -145,9 +146,9 @@ public abstract class MinecraftClientMixin { } } // This is always supposed to be located at before the line 'this.profiler.swap("Keybindings");' -// @Redirect(method = "tick", at = @At(value = "FIELD",target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", ordinal = 6)) -// private Screen midnightcontrols$ignoreTouchOverlay(MinecraftClient instance) { -// if (instance.currentScreen instanceof TouchscreenOverlay) return null; -// return instance.currentScreen; -// } + @Redirect(method = "tick", at = @At(value = "FIELD",target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", ordinal = 6)) + private Screen midnightcontrols$keybindsIgnoreTouchOverlay(MinecraftClient instance) { + if (instance.currentScreen instanceof TouchscreenOverlay) return null; + return instance.currentScreen; + } }