From b0c630de6ed0aa5563d25c6da909ceed455d9811 Mon Sep 17 00:00:00 2001 From: Zpiboo Date: Sun, 7 Sep 2025 21:19:50 +0200 Subject: [PATCH 1/2] fix: stop airtime from incrementing when flying Fixes #21 --- .../kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java | 6 ++++++ .../kurrycat/mpkmod/compatibility/MCClasses/Player.java | 2 +- .../compatibility/fabric_1_21_6/FunctionCompatibility.java | 6 ++++++ .../compatibility/forge_1_8/FunctionCompatibility.java | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java index eefbc348..d7450bf7 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java @@ -109,6 +109,10 @@ public static boolean isF3Enabled() { return Interface.get().map(Interface::isF3Enabled).orElse(false); } + public static boolean isFlying() { + return Interface.get().map(Interface::isFlying).orElse(false); + } + public enum WorldState { MENU, SINGLE_PLAYER, @@ -142,6 +146,8 @@ static Optional get() { boolean isF3Enabled(); + boolean isFlying(); + void sendPacket(MPKPacket packet); } } diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java index 2bc6ba9f..27eee98f 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java @@ -225,7 +225,7 @@ public Player buildAndSave() { Player.updateDisplayInstance(); return this; } - if (prev.onGround) airtime = 0; + if (prev.onGround || Minecraft.isFlying()) airtime = 0; else airtime = prev.airtime + 1; if (prev.onGround && !onGround) airtime = 1; diff --git a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java index 4d157734..f428601a 100644 --- a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java +++ b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java @@ -356,6 +356,12 @@ public boolean isF3Enabled() { return MinecraftClient.getInstance().getDebugHud().shouldShowDebugHud(); } + public boolean isFlying() { + ClientPlayerEntity player = MinecraftClient.getInstance().player; + if (player == null) return false; + return player.getAbilities().flying; + } + public void sendPacket(MPKPacket packet) { ClientPlayNetworking.send(new DataCustomPayload(packet.getData())); } diff --git a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java index ba491be0..f488e222 100644 --- a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java +++ b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java @@ -381,6 +381,10 @@ public boolean isF3Enabled() { return Minecraft.getMinecraft().gameSettings.showDebugInfo; } + public boolean isFlying() { + return Minecraft.getMinecraft().thePlayer.capabilities.isFlying; + } + public void sendPacket(MPKPacket packet) { MPKMod.FORGE_NETWORKING.sendPacket(packet); } From 3774b906aae813e4a5183b71d3898cfce901d28f Mon Sep 17 00:00:00 2001 From: Zpiboo Date: Mon, 8 Sep 2025 19:28:48 +0200 Subject: [PATCH 2/2] refactor: move fly handling to the Player class --- .../mpkmod/compatibility/MCClasses/Minecraft.java | 6 ------ .../mpkmod/compatibility/MCClasses/Player.java | 13 ++++++++++++- .../compatibility/fabric_1_21_6/EventHandler.java | 1 + .../fabric_1_21_6/FunctionCompatibility.java | 6 ------ .../compatibility/forge_1_8/EventListener.java | 1 + .../forge_1_8/FunctionCompatibility.java | 12 ++---------- 6 files changed, 16 insertions(+), 23 deletions(-) diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java index d7450bf7..eefbc348 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Minecraft.java @@ -109,10 +109,6 @@ public static boolean isF3Enabled() { return Interface.get().map(Interface::isF3Enabled).orElse(false); } - public static boolean isFlying() { - return Interface.get().map(Interface::isFlying).orElse(false); - } - public enum WorldState { MENU, SINGLE_PLAYER, @@ -146,8 +142,6 @@ static Optional get() { boolean isF3Enabled(); - boolean isFlying(); - void sendPacket(MPKPacket packet); } } diff --git a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java index 27eee98f..33c01972 100644 --- a/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java +++ b/common/src/main/java/io/github/kurrycat/mpkmod/compatibility/MCClasses/Player.java @@ -54,6 +54,7 @@ public class Player { public BoundingBox3D boundingBox = null; public String sidestep = "None"; public boolean wadStart = false; + public boolean flying = false; @InfoString.Getter public static LandingBlock getLatestLB() { @@ -225,7 +226,7 @@ public Player buildAndSave() { Player.updateDisplayInstance(); return this; } - if (prev.onGround || Minecraft.isFlying()) airtime = 0; + if (prev.onGround || flying) airtime = 0; else airtime = prev.airtime + 1; if (prev.onGround && !onGround) airtime = 1; @@ -391,6 +392,16 @@ public String getSidestep() { return sidestep; } + @InfoString.Getter + public boolean isFlying() { + return flying; + } + + public Player setFlying(boolean flying) { + this.flying = flying; + return this; + } + @InfoString.DataClass public static class Blip implements FormatDecimals { @InfoString.Field diff --git a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/EventHandler.java b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/EventHandler.java index cca17edc..1c9ad1ba 100644 --- a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/EventHandler.java +++ b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/EventHandler.java @@ -103,6 +103,7 @@ public void onClientTickEnd(MinecraftClient mc) { new Vector3D(playerBB.minX, playerBB.minY, playerBB.minZ), new Vector3D(playerBB.maxX, playerBB.maxY, playerBB.maxZ) )) + .setFlying(mcPlayer.getAbilities().flying) .constructKeyInput() .setKeyMSList(timeQueue) .buildAndSave(); diff --git a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java index f428601a..4d157734 100644 --- a/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java +++ b/fabric-1.21.6/src/main/java/io/github/kurrycat/mpkmod/compatibility/fabric_1_21_6/FunctionCompatibility.java @@ -356,12 +356,6 @@ public boolean isF3Enabled() { return MinecraftClient.getInstance().getDebugHud().shouldShowDebugHud(); } - public boolean isFlying() { - ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (player == null) return false; - return player.getAbilities().flying; - } - public void sendPacket(MPKPacket packet) { ClientPlayNetworking.send(new DataCustomPayload(packet.getData())); } diff --git a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java index 0a5ae6b0..5e7a6684 100644 --- a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java +++ b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/EventListener.java @@ -96,6 +96,7 @@ public void onTick(TickEvent.ClientTickEvent e) { new Vector3D(playerBB.minX, playerBB.minY, playerBB.minZ), new Vector3D(playerBB.maxX, playerBB.maxY, playerBB.maxZ) )) + .setFlying(mcPlayer.capabilities.isFlying) .constructKeyInput() .setKeyMSList(timeQueue.copy()) .buildAndSave(); diff --git a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java index f488e222..4eebaf54 100644 --- a/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java +++ b/forge-1.8.9/src/main/java/io/github/kurrycat/mpkmod/compatibility/forge_1_8/FunctionCompatibility.java @@ -1,11 +1,7 @@ package io.github.kurrycat.mpkmod.compatibility.forge_1_8; import io.github.kurrycat.mpkmod.compatibility.MCClasses.*; -import io.github.kurrycat.mpkmod.util.BoundingBox3D; -import io.github.kurrycat.mpkmod.util.Debug; -import io.github.kurrycat.mpkmod.util.Vector2D; -import io.github.kurrycat.mpkmod.util.Vector3D; -import io.github.kurrycat.mpkmod.util.ScissorBox; +import io.github.kurrycat.mpkmod.util.*; import io.github.kurrycat.mpknetapi.common.network.packet.MPKPacket; import net.minecraft.block.Block; import net.minecraft.block.properties.IProperty; @@ -35,8 +31,8 @@ import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; -import java.util.List; import java.util.*; +import java.util.List; import java.util.stream.Collectors; public class FunctionCompatibility implements FunctionHolder, @@ -381,10 +377,6 @@ public boolean isF3Enabled() { return Minecraft.getMinecraft().gameSettings.showDebugInfo; } - public boolean isFlying() { - return Minecraft.getMinecraft().thePlayer.capabilities.isFlying; - } - public void sendPacket(MPKPacket packet) { MPKMod.FORGE_NETWORKING.sendPacket(packet); }