From 3d764e5594556b876e0568236766c6c1ec0a8d6f Mon Sep 17 00:00:00 2001 From: VeVeVeVel <147647046+VeVeVeVel@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:40:11 +0900 Subject: [PATCH 1/3] optimize-movement-vector-normalization --- ...timize-movement-vector-normalization.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch diff --git a/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch new file mode 100644 index 000000000..49b298ada --- /dev/null +++ b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: VeVeVeVel <147647046+VeVeVeVel@users.noreply.github.com> +Date: Mon, 26 Jan 2026 22:24:02 +0900 +Subject: [PATCH] optimize movement vector normalization + + +diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java +index 8d092716cdcc48b829a1c0ee2e5416d648143a37..310fcb589f515b223d2b263ee99f734cd876f926 100644 +--- a/net/minecraft/world/entity/Entity.java ++++ b/net/minecraft/world/entity/Entity.java +@@ -1262,8 +1262,16 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name + double d = vec3.lengthSqr(); + if (d > 1.0E-7 || movement.lengthSqr() - d < 1.0E-7) { + if (this.fallDistance != 0.0 && d >= 1.0) { +- double min = Math.min(vec3.length(), 8.0); +- Vec3 vec31 = this.position().add(vec3.normalize().scale(min)); ++ // Leaf start - optimize movement vector normalization ++ //double min = Math.min(vec3.length(), 8.0); ++ //Vec3 vec31 = this.position().add(vec3.normalize().scale(min)); ++ Vec3 vec31; ++ if (d > 64.0) { ++ vec31 = this.position().add(vec3.normalize().scale(8.0)); ++ } else { ++ vec31 = this.position().add(vec3); ++ } ++ // Leaf end - optimize movement vector normalization + BlockHitResult blockHitResult = this.level() + .clip(new ClipContext(this.position(), vec31, ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); + if (blockHitResult.getType() != HitResult.Type.MISS) { From e7d30a11e271693c0d1923e4a5fb219cad6fe8a9 Mon Sep 17 00:00:00 2001 From: VeVeVeVel <147647046+VeVeVeVel@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:24:59 +0900 Subject: [PATCH 2/3] Update --- .../0294-optimize-movement-vector-normalization.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch index 49b298ada..1c3ad96c6 100644 --- a/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch +++ b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch @@ -5,21 +5,20 @@ Subject: [PATCH] optimize movement vector normalization diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 8d092716cdcc48b829a1c0ee2e5416d648143a37..310fcb589f515b223d2b263ee99f734cd876f926 100644 +index 8d092716cdcc48b829a1c0ee2e5416d648143a37..11b9dd30605926e6cc1c1a750be945c0f3063edc 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -1262,8 +1262,16 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1262,8 +1262,15 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name double d = vec3.lengthSqr(); if (d > 1.0E-7 || movement.lengthSqr() - d < 1.0E-7) { if (this.fallDistance != 0.0 && d >= 1.0) { - double min = Math.min(vec3.length(), 8.0); - Vec3 vec31 = this.position().add(vec3.normalize().scale(min)); + // Leaf start - optimize movement vector normalization -+ //double min = Math.min(vec3.length(), 8.0); -+ //Vec3 vec31 = this.position().add(vec3.normalize().scale(min)); + Vec3 vec31; + if (d > 64.0) { -+ vec31 = this.position().add(vec3.normalize().scale(8.0)); ++ double scale = 8.0 / Math.sqrt(d); ++ vec31 = this.position().add(vec3.x * scale, vec3.y * scale, vec3.z * scale); + } else { + vec31 = this.position().add(vec3); + } From 4304a8489f08d51aa0272796b8c0a7fa2a02b95e Mon Sep 17 00:00:00 2001 From: VeVeVeVel <147647046+VeVeVeVel@users.noreply.github.com> Date: Thu, 5 Feb 2026 20:34:49 +0900 Subject: [PATCH 3/3] Update --- .../0294-optimize-movement-vector-normalization.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch index 1c3ad96c6..1cfca2dd4 100644 --- a/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch +++ b/leaf-server/minecraft-patches/features/0294-optimize-movement-vector-normalization.patch @@ -5,7 +5,7 @@ Subject: [PATCH] optimize movement vector normalization diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 8d092716cdcc48b829a1c0ee2e5416d648143a37..11b9dd30605926e6cc1c1a750be945c0f3063edc 100644 +index 8d092716cdcc48b829a1c0ee2e5416d648143a37..10406c921f85ddc983264d4a17a048397db9bd8f 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -1262,8 +1262,15 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -20,7 +20,7 @@ index 8d092716cdcc48b829a1c0ee2e5416d648143a37..11b9dd30605926e6cc1c1a750be945c0 + double scale = 8.0 / Math.sqrt(d); + vec31 = this.position().add(vec3.x * scale, vec3.y * scale, vec3.z * scale); + } else { -+ vec31 = this.position().add(vec3); ++ vec31 = this.position().add(vec3.x, vec3.y, vec3.z); + } + // Leaf end - optimize movement vector normalization BlockHitResult blockHitResult = this.level()