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

Add option to disable double tapping 'Jump' key to flight

Fixes 
This commit is contained in:
chylex 2020-12-09 12:17:10 +01:00
parent 76387252c0
commit b23d1ebca5
6 changed files with 24 additions and 0 deletions

View File

@ -19,6 +19,7 @@ public final class BetterControlsConfig{
public boolean sneakingMovesCameraSmoothly = true;
public final KeyBindingWithModifier keyToggleFlight = new KeyBindingWithModifier("key.bettercontrols.toggle_flight");
public boolean doubleTapJumpToToggleFlight = true;
public boolean disableFlightInertia = false;
public boolean disableChangingFovWhileFlying = false;
public boolean flyOnGroundInCreative = false;

View File

@ -40,6 +40,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
Json.setBool(obj, "Sneak.SmoothCamera", cfg.sneakingMovesCameraSmoothly);
Json.writeKeyBinding(obj, "Flight.KeyToggle.Creative", cfg.keyToggleFlight);
Json.setBool(obj, "Flight.DoubleTapJump", cfg.doubleTapJumpToToggleFlight);
Json.setBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
Json.setBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
Json.setBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
@ -78,6 +79,7 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
cfg.sneakingMovesCameraSmoothly = Json.getBool(obj, "Sneak.SmoothCamera", cfg.sneakingMovesCameraSmoothly);
Json.readKeyBinding(obj, "Flight.KeyToggle.Creative", cfg.keyToggleFlight);
cfg.doubleTapJumpToToggleFlight = Json.getBool(obj, "Flight.DoubleTapJump", cfg.doubleTapJumpToToggleFlight);
cfg.disableFlightInertia = Json.getBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
cfg.disableChangingFovWhileFlying = Json.getBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
cfg.flyOnGroundInCreative = Json.getBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);

View File

@ -121,6 +121,11 @@ public class BetterControlsScreen extends GameOptionsScreen{
y += ROW_HEIGHT;
generateLeftSideText(y, elements, text("Double Tap 'Jump' To Fly (Creative)"));
elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.doubleTapJumpToToggleFlight, value -> cfg.doubleTapJumpToToggleFlight = value));
y += ROW_HEIGHT;
generateLeftSideText(y, elements, text("Disable Flight Inertia"));
elements.add(new BooleanValueWidget(col2(1), y, COL2_W, cfg.disableFlightInertia, value -> cfg.disableFlightInertia = value));

View File

@ -0,0 +1,10 @@
package chylex.bettercontrols.mixin;
import net.minecraft.entity.player.PlayerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(PlayerEntity.class)
public interface AccessPlayerFields{
@Accessor("abilityResyncCountdown")
void setTicksLeftToDoubleTapFlight(int value);
}

View File

@ -8,6 +8,7 @@ import chylex.bettercontrols.input.ToggleTrackerForStickyKey;
import chylex.bettercontrols.mixin.AccessCameraFields;
import chylex.bettercontrols.mixin.AccessClientPlayerFields;
import chylex.bettercontrols.mixin.AccessGameRendererFields;
import chylex.bettercontrols.mixin.AccessPlayerFields;
import chylex.bettercontrols.mixin.AccessStickyKeyBindingStateGetter;
import chylex.bettercontrols.util.Key;
import net.minecraft.client.input.Input;
@ -82,6 +83,10 @@ public final class PlayerTicker{
((AccessClientPlayerFields)player).setTicksLeftToDoubleTapSprint(0);
}
if (!cfg().doubleTapJumpToToggleFlight){
((AccessPlayerFields)player).setTicksLeftToDoubleTapFlight(0);
}
final SprintMode sprintMode = cfg().sprintMode;
final boolean wasSprintToggled = OPTIONS.sprintToggled;
final boolean isSprintToggled = toggleSprint.tick();

View File

@ -10,6 +10,7 @@
"AccessControlsListKeyBinding",
"AccessGameRendererFields",
"AccessKeyBindingFields",
"AccessPlayerFields",
"AccessScreenButtons",
"AccessStickyKeyBindingStateGetter",
"HookClientPlayerInputTick",