From dd0795bc56f05d1f4435c752bc899dee734c5017 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 14 Feb 2024 10:36:27 +0100 Subject: [PATCH 1/3] Fix virtual mouse --- .../midnightcontrols/client/MidnightInput.java | 1 - .../client/controller/InputHandlers.java | 6 +----- .../client/controller/InputManager.java | 2 +- .../client/mixin/MouseAccessor.java | 4 ++-- .../client/mixin/MouseMixin.java | 7 ++++--- .../client/util/MouseAccessor.java | 18 ------------------ 6 files changed, 8 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/eu/midnightdust/midnightcontrols/client/util/MouseAccessor.java diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java index 18ca643..e4a7671 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java @@ -25,7 +25,6 @@ import eu.midnightdust.midnightcontrols.client.mixin.*; import eu.midnightdust.midnightcontrols.client.ring.RingPage; import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; import eu.midnightdust.midnightcontrols.client.util.MathUtil; -import eu.midnightdust.midnightcontrols.client.util.MouseAccessor; import dev.lambdaurora.spruceui.navigation.NavigationDirection; import dev.lambdaurora.spruceui.screen.SpruceScreen; import dev.lambdaurora.spruceui.widget.AbstractSprucePressableButtonWidget; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java index 2cbc4f8..4df71af 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java @@ -21,12 +21,8 @@ import eu.midnightdust.midnightcontrols.client.compat.SodiumCompat; import eu.midnightdust.midnightcontrols.client.compat.YACLCompat; import eu.midnightdust.midnightcontrols.client.gui.RingScreen; import eu.midnightdust.midnightcontrols.client.gui.TouchscreenOverlay; -import eu.midnightdust.midnightcontrols.client.mixin.AdvancementsScreenAccessor; -import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor; -import eu.midnightdust.midnightcontrols.client.mixin.RecipeBookWidgetAccessor; -import eu.midnightdust.midnightcontrols.client.mixin.TabNavigationWidgetAccessor; +import eu.midnightdust.midnightcontrols.client.mixin.*; import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; -import eu.midnightdust.midnightcontrols.client.util.MouseAccessor; import net.fabricmc.fabric.impl.client.itemgroup.CreativeGuiExtensions; import net.fabricmc.fabric.impl.client.itemgroup.FabricCreativeGuiComponents; import net.fabricmc.fabric.impl.itemgroup.FabricItemGroup; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputManager.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputManager.java index 2feea52..1e4528b 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputManager.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputManager.java @@ -12,7 +12,7 @@ package eu.midnightdust.midnightcontrols.client.controller; import eu.midnightdust.midnightcontrols.ControlsMode; import eu.midnightdust.midnightcontrols.client.enums.ButtonState; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; -import eu.midnightdust.midnightcontrols.client.util.MouseAccessor; +import eu.midnightdust.midnightcontrols.client.mixin.MouseAccessor; import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseAccessor.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseAccessor.java index ee6261e..b9c90b6 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseAccessor.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseAccessor.java @@ -7,9 +7,9 @@ import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(Mouse.class) public interface MouseAccessor { + @Invoker("onCursorPos") + void midnightcontrols$onCursorPos(long window, double x, double y); @Accessor void setLeftButtonClicked(boolean value); - @Invoker("onCursorPos") - void midnightcontrols$onCursorPos(long window, double x, double y); } 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 04dc524..c7fe2b4 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MouseMixin.java @@ -15,7 +15,6 @@ import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import eu.midnightdust.midnightcontrols.client.gui.TouchscreenOverlay; import eu.midnightdust.midnightcontrols.client.touch.TouchInput; import eu.midnightdust.midnightcontrols.client.touch.TouchUtils; -import eu.midnightdust.midnightcontrols.client.util.MouseAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; import net.minecraft.client.util.GlfwUtil; @@ -66,7 +65,7 @@ public abstract class MouseMixin implements MouseAccessor { if (action == 1 && button == GLFW.GLFW_MOUSE_BUTTON_4 && client.currentScreen != null) { MidnightControlsClient.get().input.tryGoBack(client.currentScreen); } - else if ((doMixedInput() || client.currentScreen instanceof TouchscreenOverlay) && client.player != null && button == GLFW_MOUSE_BUTTON_1) { + else if ((client.currentScreen == null && doMixedInput() || client.currentScreen instanceof TouchscreenOverlay) && client.player != null && button == GLFW_MOUSE_BUTTON_1) { double mouseX = x / client.getWindow().getScaleFactor(); double mouseY = y / client.getWindow().getScaleFactor(); int centerX = client.getWindow().getScaledWidth() / 2; @@ -95,6 +94,7 @@ public abstract class MouseMixin implements MouseAccessor { private void midnightcontrols$isCursorLocked(CallbackInfoReturnable ci) { if (this.client.currentScreen == null) { if (MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER && MidnightControlsConfig.virtualMouse) { + ci.setReturnValue(true); ci.cancel(); } } @@ -102,7 +102,8 @@ public abstract class MouseMixin implements MouseAccessor { @Inject(method = "lockCursor", at = @At("HEAD"), cancellable = true) private void midnightcontrols$onCursorLocked(CallbackInfo ci) { - if (MidnightControlsConfig.controlsMode == ControlsMode.TOUCHSCREEN || doMixedInput()) + if ((MidnightControlsConfig.controlsMode == ControlsMode.CONTROLLER && MidnightControlsConfig.virtualMouse) || + MidnightControlsConfig.controlsMode == ControlsMode.TOUCHSCREEN || doMixedInput()) ci.cancel(); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/util/MouseAccessor.java b/src/main/java/eu/midnightdust/midnightcontrols/client/util/MouseAccessor.java deleted file mode 100644 index 0b6e004..0000000 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/util/MouseAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright © 2021 LambdAurora - * - * This file is part of midnightcontrols. - * - * Licensed under the MIT license. For more information, - * see the LICENSE file. - */ - -package eu.midnightdust.midnightcontrols.client.util; - -/** - * Represents mouse's extra access. - */ -public interface MouseAccessor { - void midnightcontrols$onCursorPos(long window, double x, double y); - void setLeftButtonClicked(boolean value); -} From cba8a4e1d416b4b57446fcbf47585243d9d65758 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 14 Feb 2024 10:47:52 +0100 Subject: [PATCH 2/3] Fix EMI compat --- gradle.properties | 2 +- .../midnightcontrols/client/compat/EMICompat.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8581208..37ece25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ midnightlib_version=1.5.3-fabric modmenu_version=7.0.0 emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric bendylib_version=2.0.+ -emi_version=0.5.0+1.19.3 +emi_version=1.1.1+1.20.4+fabric libgui_version=6.0.0+1.19 inventorytabs_version=inventorytabs-0.9.beta-1.19.x clothconfig_version=7.0.72 diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java index 7809fab..bcbbd3e 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java @@ -1,13 +1,12 @@ package eu.midnightdust.midnightcontrols.client.compat; +import dev.emi.emi.api.EmiApi; import dev.emi.emi.config.EmiConfig; -import dev.emi.emi.screen.EmiScreen; import dev.emi.emi.screen.EmiScreenManager; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding; import eu.midnightdust.midnightcontrols.client.controller.ButtonCategory; import eu.midnightdust.midnightcontrols.client.controller.InputManager; -import net.minecraft.client.gui.screen.ingame.HandledScreen; import org.aperlambda.lambdacommon.Identifier; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; @@ -30,13 +29,13 @@ public class EMICompat implements CompatHandler { .buttons(GLFW.GLFW_GAMEPAD_BUTTON_LEFT_BUMPER, ButtonBinding.axisAsButton(GLFW.GLFW_GAMEPAD_AXIS_LEFT_TRIGGER, true)) .category(category) .action((client,action,value,buttonState)->handleTabs(false)).cooldown() - .filter(((client, buttonBinding) -> client.currentScreen instanceof HandledScreen || client.currentScreen instanceof EmiScreen)) + .filter(((client, buttonBinding) -> EmiApi.getHandledScreen() != null)) .register(); new ButtonBinding.Builder("emi_page_right") .buttons(GLFW.GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER, ButtonBinding.axisAsButton(GLFW.GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER, true)) .category(category) .action((client,action,value,buttonState)->handleTabs(true)).cooldown() - .filter(((client, buttonBinding) -> client.currentScreen instanceof HandledScreen || client.currentScreen instanceof EmiScreen)) + .filter(((client, buttonBinding) -> EmiApi.getHandledScreen() != null)) .register(); } public static boolean isEMIEnabled() { From 8e05b658c26739c031fbc3dc1c156947a39e2946 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 14 Feb 2024 10:48:28 +0100 Subject: [PATCH 3/3] Bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 37ece25..58b556e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=1.20.4+build.3 loader_version=0.15.3 # Mod Properties -mod_version = 1.9.3 +mod_version = 1.9.4 maven_group = eu.midnightdust archives_base_name = midnightcontrols modrinth_id = bXX9h73M