From 7faafe51c4dbc1b61bfb468b93d0451d14f3ad27 Mon Sep 17 00:00:00 2001 From: Boy Date: Mon, 2 Sep 2024 15:13:30 +0200 Subject: [PATCH] fix: bobbing in water not resetting fall-distance --- patches/server/0002-Block-Falldamage-tweaks.patch | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/patches/server/0002-Block-Falldamage-tweaks.patch b/patches/server/0002-Block-Falldamage-tweaks.patch index c2a662d..6b3d65c 100644 --- a/patches/server/0002-Block-Falldamage-tweaks.patch +++ b/patches/server/0002-Block-Falldamage-tweaks.patch @@ -77,7 +77,7 @@ index 0e0c9a54df98413b0ad4d195dd5ba21132cf4065..027d4e5dffb0d7f085b9a7792ad61b90 return this.tags; } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6c280abdef5f80b668d6090f9d35283a33e21e0c..460091ab362965032ea64823c24fc872dbc84c93 100644 +index 6c280abdef5f80b668d6090f9d35283a33e21e0c..ae6cb670bcd24a422a5b126a38d4633968d70e5c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -333,6 +333,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -91,19 +91,20 @@ index 6c280abdef5f80b668d6090f9d35283a33e21e0c..460091ab362965032ea64823c24fc872 public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); this.chatVisibility = ChatVisiblity.FULL; -@@ -1645,6 +1649,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1645,6 +1649,12 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.spawnExtraParticlesOnFall = false; } + if (hasLandedInLiquid()) { -+ if (fallDistance < getMaxFallDistance() || getBlockStateOn().liquid()) onGround = false; -+ if (getBlockStateOn().liquid() && isEyeInFluid(FluidTags.WATER)) onGround = true; ++ if (fallDistance < getMaxFallDistance() && level().getBlockStates(this.getBoundingBox().move(0,-2,0)).allMatch(b -> b.liquid() || b.isSolid())) onGround = true; ++ else if (fallDistance < getMaxFallDistance() || getBlockStateOn().liquid()) onGround = false; ++ if (getBlockStateOn().liquid() && (isEyeInFluid(FluidTags.WATER))) onGround = true; + if (getBlockStateOn().isSolid()) onGround = true; + } super.checkFallDamage(yDifference, onGround, iblockdata, blockposition); } } -@@ -1654,7 +1663,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1654,7 +1664,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple super.onExplosionHit(entity); this.currentImpulseImpactPos = this.position(); this.currentExplosionCause = entity;