diff --git a/src/main/java/chylex/bettercontrols/input/ToggleTracker.java b/src/main/java/chylex/bettercontrols/input/ToggleTracker.java index 7a4e389..25d9d16 100644 --- a/src/main/java/chylex/bettercontrols/input/ToggleTracker.java +++ b/src/main/java/chylex/bettercontrols/input/ToggleTracker.java @@ -6,15 +6,19 @@ public class ToggleTracker { protected final KeyMapping bindingToggle; protected final KeyMapping bindingReset; - protected boolean isToggled; - + private boolean isToggled; private boolean waitForRelease; private boolean hasToggledWhileHoldingReset; private boolean skipNextToggle; - public ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset) { + protected ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset, boolean initialState) { this.bindingToggle = bindingToggle; this.bindingReset = bindingReset; + this.isToggled = initialState; + } + + public ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset) { + this(bindingToggle, bindingReset, false); } /* diff --git a/src/main/java/chylex/bettercontrols/input/ToggleTrackerForStickyKey.java b/src/main/java/chylex/bettercontrols/input/ToggleTrackerForStickyKey.java index c920700..ddaff66 100644 --- a/src/main/java/chylex/bettercontrols/input/ToggleTrackerForStickyKey.java +++ b/src/main/java/chylex/bettercontrols/input/ToggleTrackerForStickyKey.java @@ -1,31 +1,31 @@ package chylex.bettercontrols.input; import chylex.bettercontrols.Mixins; -import it.unimi.dsi.fastutil.booleans.BooleanConsumer; import net.minecraft.client.KeyMapping; +import net.minecraft.client.OptionInstance; import java.util.HashSet; import java.util.Set; public final class ToggleTrackerForStickyKey extends ToggleTracker { private static final Set<KeyMapping> enabledOverrides = new HashSet<>(); + @SuppressWarnings("StaticMethodOnlyUsedInOneClass") public static boolean isOverrideEnabled(KeyMapping binding) { return enabledOverrides.contains(binding); } - private final BooleanConsumer setToggleState; + private final OptionInstance<Boolean> toggleOption; - public ToggleTrackerForStickyKey(KeyMapping bindingToggle, KeyMapping bindingStickyReset, BooleanConsumer setToggleState) { - super(bindingToggle, bindingStickyReset); - this.setToggleState = setToggleState; - this.setToggleState.accept(false); + public ToggleTrackerForStickyKey(KeyMapping bindingToggle, KeyMapping bindingStickyReset, OptionInstance<Boolean> toggleOption) { + super(bindingToggle, bindingStickyReset, toggleOption.get().booleanValue()); + this.toggleOption = toggleOption; enabledOverrides.add(bindingStickyReset); } @Override public boolean tick() { boolean isToggled = super.tick(); - setToggleState.accept(isToggled); + toggleOption.set(Boolean.valueOf(isToggled)); return isToggled; } diff --git a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java index b9adcfa..7607369 100644 --- a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java +++ b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java @@ -46,8 +46,8 @@ public final class PlayerTicker { // Logic - private final ToggleTracker toggleSprint = new ToggleTrackerForStickyKey(getConfig().keyToggleSprint, KEY_SPRINT, OPTIONS.toggleSprint()::set); - private final ToggleTracker toggleSneak = new ToggleTrackerForStickyKey(getConfig().keyToggleSneak, KEY_SNEAK, OPTIONS.toggleCrouch()::set); + private final ToggleTracker toggleSprint = new ToggleTrackerForStickyKey(getConfig().keyToggleSprint, KEY_SPRINT, OPTIONS.toggleSprint()); + private final ToggleTracker toggleSneak = new ToggleTrackerForStickyKey(getConfig().keyToggleSneak, KEY_SNEAK, OPTIONS.toggleCrouch()); private final ToggleTracker toggleWalkForward = new ToggleTracker(getConfig().keyToggleWalkForward, KEY_FORWARD); private final ToggleTracker toggleJump = new ToggleTracker(getConfig().keyToggleJump, KEY_JUMP);