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 #30
This commit is contained in:
parent
9da758937e
commit
ee3db91f0c
src/main/java/chylex/bettercontrols
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user