diff --git a/src/main/java/dev/isxander/controlify/config/gui/YACLHelper.java b/src/main/java/dev/isxander/controlify/config/gui/YACLHelper.java index 69701c5..f57b47e 100644 --- a/src/main/java/dev/isxander/controlify/config/gui/YACLHelper.java +++ b/src/main/java/dev/isxander/controlify/config/gui/YACLHelper.java @@ -96,6 +96,12 @@ public class YACLHelper { .binding(def.toggleSneak, () -> config.toggleSneak, v -> config.toggleSneak = v) .controller(opt -> new BooleanController(opt, v -> Component.translatable("controlify.gui.format.hold_toggle." + (v ? "toggle" : "hold")), false)) .build()) + .option(Option.createBuilder(boolean.class) + .name(Component.translatable("controlify.gui.auto_jump")) + .tooltip(Component.translatable("controlify.gui.auto_jump.tooltip")) + .binding(def.autoJump, () -> config.autoJump, v -> config.autoJump = v) + .controller(BooleanController::new) + .build()) .option(Option.createBuilder(boolean.class) .name(Component.translatable("controlify.gui.show_guide")) .tooltip(Component.translatable("controlify.gui.show_guide.tooltip")) diff --git a/src/main/java/dev/isxander/controlify/controller/Controller.java b/src/main/java/dev/isxander/controlify/controller/Controller.java index a2fdb44..01f6825 100644 --- a/src/main/java/dev/isxander/controlify/controller/Controller.java +++ b/src/main/java/dev/isxander/controlify/controller/Controller.java @@ -178,6 +178,7 @@ public final class Controller { public ControllerTheme theme = type().theme(); + public boolean autoJump = false; public boolean toggleSprint = true; public boolean toggleSneak = true; diff --git a/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java b/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java new file mode 100644 index 0000000..a1a8a24 --- /dev/null +++ b/src/main/java/dev/isxander/controlify/mixins/feature/accessibility/LocalPlayerMixin.java @@ -0,0 +1,19 @@ +package dev.isxander.controlify.mixins.feature.accessibility; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import dev.isxander.controlify.Controlify; +import dev.isxander.controlify.InputMode; +import net.minecraft.client.player.LocalPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(LocalPlayer.class) +public class LocalPlayerMixin { + @ModifyExpressionValue(method = "sendPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;")) + private Object shouldUseAutoJump(Object keyboardAutoJump) { + if (Controlify.instance().currentInputMode() == InputMode.CONTROLLER) { + return Controlify.instance().currentController().config().autoJump; + } + return keyboardAutoJump; + } +}