1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2025-05-03 13:34:06 +02:00

Do not reset Toggle Sprint/Sneak after switching worlds to maintain consistency with vanilla toggles

Closes 
This commit is contained in:
chylex 2025-01-31 00:46:07 +01:00
parent 9da758937e
commit ee3db91f0c
Signed by: chylex
SSH Key Fingerprint: SHA256:WqM8X/1DDn11LbYM0H5wsqZUjbcKxVsic37L+ERcF4o
3 changed files with 16 additions and 12 deletions
src/main/java/chylex/bettercontrols

View File

@ -6,15 +6,19 @@ public class ToggleTracker {
protected final KeyMapping bindingToggle; protected final KeyMapping bindingToggle;
protected final KeyMapping bindingReset; protected final KeyMapping bindingReset;
protected boolean isToggled; private boolean isToggled;
private boolean waitForRelease; private boolean waitForRelease;
private boolean hasToggledWhileHoldingReset; private boolean hasToggledWhileHoldingReset;
private boolean skipNextToggle; private boolean skipNextToggle;
public ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset) { protected ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset, boolean initialState) {
this.bindingToggle = bindingToggle; this.bindingToggle = bindingToggle;
this.bindingReset = bindingReset; this.bindingReset = bindingReset;
this.isToggled = initialState;
}
public ToggleTracker(KeyMapping bindingToggle, KeyMapping bindingReset) {
this(bindingToggle, bindingReset, false);
} }
/* /*

View File

@ -1,31 +1,31 @@
package chylex.bettercontrols.input; package chylex.bettercontrols.input;
import chylex.bettercontrols.Mixins; import chylex.bettercontrols.Mixins;
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
import net.minecraft.client.OptionInstance;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
public final class ToggleTrackerForStickyKey extends ToggleTracker { public final class ToggleTrackerForStickyKey extends ToggleTracker {
private static final Set<KeyMapping> enabledOverrides = new HashSet<>(); private static final Set<KeyMapping> enabledOverrides = new HashSet<>();
@SuppressWarnings("StaticMethodOnlyUsedInOneClass")
public static boolean isOverrideEnabled(KeyMapping binding) { public static boolean isOverrideEnabled(KeyMapping binding) {
return enabledOverrides.contains(binding); return enabledOverrides.contains(binding);
} }
private final BooleanConsumer setToggleState; private final OptionInstance<Boolean> toggleOption;
public ToggleTrackerForStickyKey(KeyMapping bindingToggle, KeyMapping bindingStickyReset, BooleanConsumer setToggleState) { public ToggleTrackerForStickyKey(KeyMapping bindingToggle, KeyMapping bindingStickyReset, OptionInstance<Boolean> toggleOption) {
super(bindingToggle, bindingStickyReset); super(bindingToggle, bindingStickyReset, toggleOption.get().booleanValue());
this.setToggleState = setToggleState; this.toggleOption = toggleOption;
this.setToggleState.accept(false);
enabledOverrides.add(bindingStickyReset); enabledOverrides.add(bindingStickyReset);
} }
@Override @Override
public boolean tick() { public boolean tick() {
boolean isToggled = super.tick(); boolean isToggled = super.tick();
setToggleState.accept(isToggled); toggleOption.set(Boolean.valueOf(isToggled));
return isToggled; return isToggled;
} }

View File

@ -46,8 +46,8 @@ public final class PlayerTicker {
// Logic // Logic
private final ToggleTracker toggleSprint = new ToggleTrackerForStickyKey(getConfig().keyToggleSprint, KEY_SPRINT, OPTIONS.toggleSprint()::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()::set); 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 toggleWalkForward = new ToggleTracker(getConfig().keyToggleWalkForward, KEY_FORWARD);
private final ToggleTracker toggleJump = new ToggleTracker(getConfig().keyToggleJump, KEY_JUMP); private final ToggleTracker toggleJump = new ToggleTracker(getConfig().keyToggleJump, KEY_JUMP);