From d517f1f641e21086ddf924e47b6bebe096bfaec1 Mon Sep 17 00:00:00 2001 From: JFronny <33260128+JFronny@users.noreply.github.com> Date: Sat, 17 Oct 2020 12:10:30 +0200 Subject: [PATCH] Add key to disable/enable slyde --- .../java/io/gitlab/jfronny/slyde/Cfg.java | 2 ++ .../io/gitlab/jfronny/slyde/SlydeClient.java | 25 +++++++++++++++++++ .../jfronny/slyde/client/SlydeClient.java | 14 ----------- .../slyde/mixin/SliderWidgetMixin.java | 4 ++- .../slyde/mixin/SodiumSliderControlMixin.java | 4 +++ src/main/resources/fabric.mod.json | 2 +- 6 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 src/main/java/io/gitlab/jfronny/slyde/SlydeClient.java delete mode 100644 src/main/java/io/gitlab/jfronny/slyde/client/SlydeClient.java diff --git a/src/main/java/io/gitlab/jfronny/slyde/Cfg.java b/src/main/java/io/gitlab/jfronny/slyde/Cfg.java index 3298975..7f15519 100644 --- a/src/main/java/io/gitlab/jfronny/slyde/Cfg.java +++ b/src/main/java/io/gitlab/jfronny/slyde/Cfg.java @@ -11,6 +11,7 @@ import java.util.Properties; public class Cfg { public boolean sodiumCompat = true; public boolean forceSodiumCompat = false; + public boolean holdKeyToActivate = false; private static Cfg conf = null; @@ -31,6 +32,7 @@ public class Cfg { } conf.sodiumCompat = getBool(p, "sodiumCompat", conf.sodiumCompat); conf.forceSodiumCompat = getBool(p, "forceSodiumCompat", conf.forceSodiumCompat); + conf.holdKeyToActivate = getBool(p, "holdKeyToActivate", conf.holdKeyToActivate); try { p.store(Files.newOutputStream(c), "Slyde config"); } catch (IOException e) { diff --git a/src/main/java/io/gitlab/jfronny/slyde/SlydeClient.java b/src/main/java/io/gitlab/jfronny/slyde/SlydeClient.java new file mode 100644 index 0000000..bb8dddc --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/slyde/SlydeClient.java @@ -0,0 +1,25 @@ +package io.gitlab.jfronny.slyde; + +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.InputUtil; +import org.lwjgl.glfw.GLFW; + +@Environment(EnvType.CLIENT) +public class SlydeClient implements ClientModInitializer { + @Override + public void onInitializeClient() { + Cfg.get(); + } + + public static boolean isActive() { + long handle = MinecraftClient.getInstance().getWindow().getHandle(); + boolean down = InputUtil.isKeyPressed(handle, GLFW.GLFW_KEY_LEFT_SHIFT) + || InputUtil.isKeyPressed(handle, GLFW.GLFW_KEY_RIGHT_SHIFT) + || InputUtil.isKeyPressed(handle, GLFW.GLFW_KEY_LEFT_CONTROL) + || InputUtil.isKeyPressed(handle, GLFW.GLFW_KEY_RIGHT_CONTROL); + return down == Cfg.get().holdKeyToActivate; + } +} diff --git a/src/main/java/io/gitlab/jfronny/slyde/client/SlydeClient.java b/src/main/java/io/gitlab/jfronny/slyde/client/SlydeClient.java deleted file mode 100644 index 5b9d35e..0000000 --- a/src/main/java/io/gitlab/jfronny/slyde/client/SlydeClient.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.gitlab.jfronny.slyde.client; - -import io.gitlab.jfronny.slyde.Cfg; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Environment(EnvType.CLIENT) -public class SlydeClient implements ClientModInitializer { - @Override - public void onInitializeClient() { - Cfg.get(); - } -} diff --git a/src/main/java/io/gitlab/jfronny/slyde/mixin/SliderWidgetMixin.java b/src/main/java/io/gitlab/jfronny/slyde/mixin/SliderWidgetMixin.java index 1f7edd3..3bac849 100644 --- a/src/main/java/io/gitlab/jfronny/slyde/mixin/SliderWidgetMixin.java +++ b/src/main/java/io/gitlab/jfronny/slyde/mixin/SliderWidgetMixin.java @@ -1,5 +1,6 @@ package io.gitlab.jfronny.slyde.mixin; +import io.gitlab.jfronny.slyde.SlydeClient; import net.minecraft.client.gui.widget.SliderWidget; import net.minecraft.util.math.MathHelper; import org.spongepowered.asm.mixin.Mixin; @@ -20,8 +21,9 @@ public abstract class SliderWidgetMixin { @Overwrite private void setValue(double mouseX) { double d = value; - //this.value = MathHelper.clamp(mouseX, 0.0D, 1.0D); value = mouseX; + if (!SlydeClient.isActive()) + value = MathHelper.clamp(value, 0.0D, 1.0D); if (d != value) { applyValue(); } diff --git a/src/main/java/io/gitlab/jfronny/slyde/mixin/SodiumSliderControlMixin.java b/src/main/java/io/gitlab/jfronny/slyde/mixin/SodiumSliderControlMixin.java index f647b32..38bf7f4 100644 --- a/src/main/java/io/gitlab/jfronny/slyde/mixin/SodiumSliderControlMixin.java +++ b/src/main/java/io/gitlab/jfronny/slyde/mixin/SodiumSliderControlMixin.java @@ -1,8 +1,10 @@ package io.gitlab.jfronny.slyde.mixin; +import io.gitlab.jfronny.slyde.SlydeClient; import me.jellysquid.mods.sodium.client.gui.options.Option; import me.jellysquid.mods.sodium.client.gui.options.control.ControlElement; import me.jellysquid.mods.sodium.client.util.Dim2i; +import net.minecraft.util.math.MathHelper; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; @@ -24,6 +26,8 @@ public abstract class SodiumSliderControlMixin extends ControlElement { @Overwrite(remap = false) private void setValue(double d) { this.thumbPosition = d; + if (!SlydeClient.isActive()) + this.thumbPosition = MathHelper.clamp(this.thumbPosition, 0.0D, 1.0D); int value = this.getIntValue(); if (this.option.getValue() != value) { this.option.setValue(value); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 30f8dd4..f4318ea 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "environment": "*", "entrypoints": { "client": [ - "io.gitlab.jfronny.slyde.client.SlydeClient" + "io.gitlab.jfronny.slyde.SlydeClient" ] }, "mixins": [