diff --git a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
index dd58602..ac72621 100644
--- a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
+++ b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
@@ -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;
diff --git a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
index c34cdcd..6ed3033 100644
--- a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
+++ b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
@@ -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);
diff --git a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
index 8653c40..55cbf17 100644
--- a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
+++ b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
@@ -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));
 		
diff --git a/src/main/java/chylex/bettercontrols/mixin/AccessPlayerFields.java b/src/main/java/chylex/bettercontrols/mixin/AccessPlayerFields.java
new file mode 100644
index 0000000..10baf34
--- /dev/null
+++ b/src/main/java/chylex/bettercontrols/mixin/AccessPlayerFields.java
@@ -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);
+}
diff --git a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
index 9c4f3de..0fe87b7 100644
--- a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
+++ b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java
@@ -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();
diff --git a/src/main/resources/bettercontrols.mixins.json b/src/main/resources/bettercontrols.mixins.json
index e37e753..d08aef1 100644
--- a/src/main/resources/bettercontrols.mixins.json
+++ b/src/main/resources/bettercontrols.mixins.json
@@ -10,6 +10,7 @@
     "AccessControlsListKeyBinding",
     "AccessGameRendererFields",
     "AccessKeyBindingFields",
+    "AccessPlayerFields",
     "AccessScreenButtons",
     "AccessStickyKeyBindingStateGetter",
     "HookClientPlayerInputTick",