1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2025-04-11 21:15:43 +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 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);
}
/*

View File

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

View File

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