Add key to disable/enable slyde

This commit is contained in:
JFronny 2020-10-17 12:10:30 +02:00
parent 6d98a0b711
commit d517f1f641
6 changed files with 35 additions and 16 deletions

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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();
}

View File

@ -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<Integer> {
@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);

View File

@ -16,7 +16,7 @@
"environment": "*",
"entrypoints": {
"client": [
"io.gitlab.jfronny.slyde.client.SlydeClient"
"io.gitlab.jfronny.slyde.SlydeClient"
]
},
"mixins": [