浏览代码

Add key binding to reset all toggles at once

chylex 4 年之前
父节点
当前提交
90c3379d57

+ 2 - 0
src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java

@@ -29,6 +29,7 @@ public final class BetterControlsConfig{
 	
 	public final KeyBindingWithModifier keyToggleWalkForward = new KeyBindingWithModifier("key.bettercontrols.toggle_forward");
 	public final KeyBindingWithModifier keyToggleJump = new KeyBindingWithModifier("key.bettercontrols.toggle_jump");
+	public final KeyBindingWithModifier keyResetAllToggles = new KeyBindingWithModifier("key.bettercontrols.reset_all_toggles");
 	public final KeyBindingWithModifier keyOpenMenu = new KeyBindingWithModifier("key.bettercontrols.open_menu");
 	
 	BetterControlsConfig(){}
@@ -45,6 +46,7 @@ public final class BetterControlsConfig{
 			keyToggleFlight,
 			keyToggleWalkForward,
 			keyToggleJump,
+			keyResetAllToggles,
 			keyOpenMenu
 		};
 	}

+ 2 - 0
src/main/java/chylex/bettercontrols/config/ConfigSerializer.java

@@ -50,6 +50,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		
 		Json.writeKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
 		Json.writeKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
+		Json.writeKeyBinding(obj, "Misc.KeyResetAllToggles", cfg.keyResetAllToggles);
 		Json.writeKeyBinding(obj, "Misc.KeyOpenMenu", cfg.keyOpenMenu);
 		
 		return obj;
@@ -82,6 +83,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		
 		Json.readKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
 		Json.readKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
+		Json.readKeyBinding(obj, "Misc.KeyResetAllToggles", cfg.keyResetAllToggles);
 		Json.readKeyBinding(obj, "Misc.KeyOpenMenu", cfg.keyOpenMenu);
 		
 		return cfg;

+ 4 - 0
src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java

@@ -148,6 +148,10 @@ public class BetterControlsScreen extends GameOptionsScreen{
 		
 		generateKeyBindingWithModifierOption(y, elements, Text.of("Toggle Jump"), cfg.keyToggleJump);
 		
+		y += ROW_HEIGHT;
+		
+		generateKeyBindingWithModifierOption(y, elements, Text.of("Reset All Toggles"), cfg.keyResetAllToggles);
+		
 		y += ROW_HEIGHT * 4 / 3;
 		
 		generateKeyBindingWithModifierOption(y, elements, Text.of("Open Better Controls Menu"), cfg.keyOpenMenu);

+ 5 - 0
src/main/java/chylex/bettercontrols/input/ToggleTracker.java

@@ -80,4 +80,9 @@ public class ToggleTracker{
 	protected boolean isResetKeyPressed(){
 		return bindingReset.isPressed();
 	}
+	
+	public void reset(){
+		isToggled = false;
+		waitForRelease = false;
+	}
 }

+ 7 - 0
src/main/java/chylex/bettercontrols/player/PlayerTicker.java

@@ -255,6 +255,13 @@ public final class PlayerTicker{
 			}
 		}
 		
+		if (cfg().keyResetAllToggles.wasPressed()){
+			toggleSprint.reset();
+			toggleSneak.reset();
+			toggleWalkForward.reset();
+			toggleJump.reset();
+		}
+		
 		if (cfg().keyOpenMenu.isPressed()){
 			mc().openScreen(new BetterControlsScreen(null));
 		}

+ 1 - 0
src/main/resources/assets/bettercontrols/lang/en_us.json

@@ -5,5 +5,6 @@
   "key.bettercontrols.toggle_flight": "Toggle Flight",
   "key.bettercontrols.toggle_forward": "Toggle Walk Forwards",
   "key.bettercontrols.toggle_jump": "Toggle Jump",
+  "key.bettercontrols.reset_all_toggles": "Reset All Toggles",
   "key.bettercontrols.open_menu": "Open Menu"
 }