From 740ae1c77a977657b33747176fb2276d9610eee2 Mon Sep 17 00:00:00 2001 From: isXander Date: Fri, 5 May 2023 17:40:16 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20issues=20with=20'out=20of?= =?UTF-8?q?=20focus=20input'=20option=20(close=20#58)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controlify/ingame/InGameInputHandler.java | 3 ++- .../feature/oofinput/GameRendererMixin.java | 16 ++++++++++++++++ src/main/resources/controlify.mixins.json | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/main/java/dev/isxander/controlify/mixins/feature/oofinput/GameRendererMixin.java diff --git a/src/main/java/dev/isxander/controlify/ingame/InGameInputHandler.java b/src/main/java/dev/isxander/controlify/ingame/InGameInputHandler.java index 6fe86ba..f81fa71 100644 --- a/src/main/java/dev/isxander/controlify/ingame/InGameInputHandler.java +++ b/src/main/java/dev/isxander/controlify/ingame/InGameInputHandler.java @@ -1,5 +1,6 @@ package dev.isxander.controlify.ingame; +import dev.isxander.controlify.Controlify; import dev.isxander.controlify.InputMode; import dev.isxander.controlify.api.ingameinput.LookInputModifier; import dev.isxander.controlify.controller.Controller; @@ -116,7 +117,7 @@ public class InGameInputHandler { impulseX = lookInputModifier.modifyX(impulseX, controller); impulseY = lookInputModifier.modifyY(impulseY, controller); - if (minecraft.mouseHandler.isMouseGrabbed() && minecraft.isWindowActive() && player != null) { + if (minecraft.mouseHandler.isMouseGrabbed() && (minecraft.isWindowActive() || Controlify.instance().config().globalSettings().outOfFocusInput) && player != null) { lookInputX = impulseX * controller.config().horizontalLookSensitivity * 65f; lookInputY = impulseY * controller.config().verticalLookSensitivity * 65f; } else { diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/oofinput/GameRendererMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/oofinput/GameRendererMixin.java new file mode 100644 index 0000000..b04bb53 --- /dev/null +++ b/src/main/java/dev/isxander/controlify/mixins/feature/oofinput/GameRendererMixin.java @@ -0,0 +1,16 @@ +package dev.isxander.controlify.mixins.feature.oofinput; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import dev.isxander.controlify.Controlify; +import net.minecraft.client.renderer.GameRenderer; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(GameRenderer.class) +public class GameRendererMixin { + @ModifyExpressionValue(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Options;pauseOnLostFocus:Z", opcode = Opcodes.GETFIELD)) + private boolean shouldPauseOnLossFocus(boolean original) { + return original && !(Controlify.instance().config().globalSettings().outOfFocusInput && Controlify.instance().getCurrentController().isPresent()); + } +} diff --git a/src/main/resources/controlify.mixins.json b/src/main/resources/controlify.mixins.json index 4f758cd..2ed4398 100644 --- a/src/main/resources/controlify.mixins.json +++ b/src/main/resources/controlify.mixins.json @@ -37,6 +37,7 @@ "feature.guide.screen.AbstractButtonMixin", "feature.guide.screen.AbstractWidgetMixin", "feature.guide.screen.TabNavigationBarMixin", + "feature.oofinput.GameRendererMixin", "feature.reacharound.GameRendererMixin", "feature.rumble.blockbreak.MultiPlayerGameModeMixin", "feature.rumble.damage.LocalPlayerMixin",