mirror of
https://github.com/chylex/Better-Controls.git
synced 2025-05-04 07:34:06 +02:00
Implement option to stop sprinting by pressing 'Sprint' key again
This commit is contained in:
parent
572e1f16c8
commit
d28ece5759
src/main/java/chylex/bettercontrols
@ -12,6 +12,7 @@ public final class BetterControlsConfig{
|
||||
|
||||
public final KeyBindingWithModifier keyToggleSprint = new KeyBindingWithModifier("key.bettercontrols.toggle_sprint");
|
||||
public boolean doubleTapForwardToSprint = true;
|
||||
public boolean tapSprintKeyAgainToStopSprinting = false;
|
||||
public boolean resumeSprintingAfterHittingObstacle = false;
|
||||
|
||||
public final KeyBindingWithModifier keyToggleSneak = new KeyBindingWithModifier("key.bettercontrols.toggle_sneak");
|
||||
|
@ -32,6 +32,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
|
||||
|
||||
Json.writeKeyBinding(obj, "Sprint.KeyToggle", cfg.keyToggleSprint);
|
||||
Json.setBool(obj, "Sprint.DoubleTapForward", cfg.doubleTapForwardToSprint);
|
||||
Json.setBool(obj, "Sprint.TapToStop", cfg.tapSprintKeyAgainToStopSprinting);
|
||||
Json.setBool(obj, "Sprint.ResumeAfterHittingObstacle", cfg.resumeSprintingAfterHittingObstacle);
|
||||
|
||||
Json.writeKeyBinding(obj, "Sneak.KeyToggle", cfg.keyToggleSneak);
|
||||
@ -58,6 +59,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
|
||||
|
||||
Json.readKeyBinding(obj, "Sprint.KeyToggle", cfg.keyToggleSprint);
|
||||
cfg.doubleTapForwardToSprint = Json.getBool(obj, "Sprint.DoubleTapForward", cfg.doubleTapForwardToSprint);
|
||||
cfg.tapSprintKeyAgainToStopSprinting = Json.getBool(obj, "Sprint.TapToStop", cfg.tapSprintKeyAgainToStopSprinting);
|
||||
cfg.resumeSprintingAfterHittingObstacle = Json.getBool(obj, "Sprint.ResumeAfterHittingObstacle", cfg.resumeSprintingAfterHittingObstacle);
|
||||
|
||||
Json.readKeyBinding(obj, "Sneak.KeyToggle", cfg.keyToggleSneak);
|
||||
|
@ -53,6 +53,11 @@ public class BetterControlsScreen extends GameOptionsScreen{
|
||||
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
generateLeftSideText(y, elements, Text.of("Tap 'Sprint' While Sprinting To Stop"));
|
||||
elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.tapSprintKeyAgainToStopSprinting, value -> cfg.tapSprintKeyAgainToStopSprinting = value));
|
||||
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
generateLeftSideText(y, elements, Text.of("Resume Sprinting After Hitting Obstacle"));
|
||||
elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.resumeSprintingAfterHittingObstacle, value -> cfg.resumeSprintingAfterHittingObstacle = value));
|
||||
|
||||
|
@ -44,6 +44,7 @@ public final class PlayerTicker{
|
||||
private final ToggleTracker toggleWalkForward = new ToggleTracker(cfg().keyToggleWalkForward, mc().options.keyForward);
|
||||
private final ToggleTracker toggleJump = new ToggleTracker(cfg().keyToggleJump, mc().options.keyJump);
|
||||
|
||||
private boolean waitingForSprintKeyRelease = false;
|
||||
private boolean stopSprintingAfterReleasingSprintKey = false;
|
||||
private boolean wasHittingObstacle = false;
|
||||
private boolean wasSprintingBeforeHittingObstacle = false;
|
||||
@ -67,9 +68,26 @@ public final class PlayerTicker{
|
||||
|
||||
if (isSprintToggled){
|
||||
stopSprintingAfterReleasingSprintKey = false;
|
||||
waitingForSprintKeyRelease = false;
|
||||
}
|
||||
else if (wasSprintToggled){
|
||||
stopSprintingAfterReleasingSprintKey = true;
|
||||
waitingForSprintKeyRelease = false;
|
||||
}
|
||||
else if (cfg().tapSprintKeyAgainToStopSprinting){
|
||||
if (opts.keySprint.isPressed()){
|
||||
if (!waitingForSprintKeyRelease){
|
||||
waitingForSprintKeyRelease = true;
|
||||
stopSprintingAfterReleasingSprintKey = player.isSprinting();
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (player.isSprinting() && !waitingForSprintKeyRelease){
|
||||
stopSprintingAfterReleasingSprintKey = false;
|
||||
}
|
||||
|
||||
waitingForSprintKeyRelease = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (stopSprintingAfterReleasingSprintKey && !opts.keySprint.isPressed()){
|
||||
|
Loading…
Reference in New Issue
Block a user