From 9bf04bdb113e8c9def82a760c5616a168bb3917c Mon Sep 17 00:00:00 2001 From: hayanesuru Date: Fri, 4 Jul 2025 03:13:33 +0900 Subject: [PATCH] optimize waypoint --- .../features/0276-optimize-waypoint.patch | 35 +++++++++++++++++++ .../config/modules/opt/OptimizeBiome.java | 2 +- .../config/modules/opt/OptimizeWaypoint.java | 19 ++++++++++ .../modules/opt/OptimizedPoweredRails.java | 2 +- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 leaf-server/minecraft-patches/features/0276-optimize-waypoint.patch create mode 100644 leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeWaypoint.java diff --git a/leaf-server/minecraft-patches/features/0276-optimize-waypoint.patch b/leaf-server/minecraft-patches/features/0276-optimize-waypoint.patch new file mode 100644 index 00000000..df9f4fd1 --- /dev/null +++ b/leaf-server/minecraft-patches/features/0276-optimize-waypoint.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: hayanesuru +Date: Fri, 4 Jul 2025 03:13:33 +0900 +Subject: [PATCH] optimize waypoint + + +diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java +index 5ee9394fd35a9f61e6a54126ed2c567dff19c05b..502c6afe9ff8cb3d163862920794f15cec2f78a8 100644 +--- a/net/minecraft/world/entity/Entity.java ++++ b/net/minecraft/world/entity/Entity.java +@@ -5117,12 +5117,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return; + } + // Paper end - Block invalid positions and bounding box ++ boolean blockUpdated; // Leaf - optimize waypoint + if (this.position.x != x || this.position.y != y || this.position.z != z) { + this.position = new Vec3(x, y, z); + int floor = Mth.floor(x); + int floor1 = Mth.floor(y); + int floor2 = Mth.floor(z); +- if (floor != this.blockPosition.getX() || floor1 != this.blockPosition.getY() || floor2 != this.blockPosition.getZ()) { ++ blockUpdated = floor != this.blockPosition.getX() || floor1 != this.blockPosition.getY() || floor2 != this.blockPosition.getZ(); // Leaf - optimize waypoint ++ if (blockUpdated) { // Leaf - optimize waypoint + this.blockPosition = new BlockPos(floor, floor1, floor2); + this.inBlockState = null; + if (SectionPos.blockToSectionCoord(floor) != this.chunkPosition.x || SectionPos.blockToSectionCoord(floor2) != this.chunkPosition.z) { +@@ -5131,7 +5133,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + } + + this.levelCallback.onMove(); +- if (!this.firstTick && this.level instanceof ServerLevel serverLevel && !this.isRemoved()) { ++ if ((org.dreeam.leaf.config.modules.opt.OptimizeWaypoint.enabled && blockUpdated) && !this.firstTick && this.level instanceof ServerLevel serverLevel && !this.isRemoved()) { // Leaf - optimize waypoint + if (this instanceof WaypointTransmitter waypointTransmitter && waypointTransmitter.isTransmittingWaypoint()) { + serverLevel.getWaypointManager().updateWaypoint(waypointTransmitter); + } diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeBiome.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeBiome.java index 27d2a9d3..40a24876 100644 --- a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeBiome.java +++ b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeBiome.java @@ -14,7 +14,7 @@ public class OptimizeBiome extends ConfigModules { @Override public void onLoaded() { - enabled = config().getBoolean(getBasePath() + ".enabled", enabled); + enabled = config.getBoolean(getBasePath() + ".enabled", enabled); mobSpawn = config.getBoolean(getBasePath() + ".mob-spawning", false); advancement = config.getBoolean(getBasePath() + ".advancements", false); } diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeWaypoint.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeWaypoint.java new file mode 100644 index 00000000..d11fabf8 --- /dev/null +++ b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizeWaypoint.java @@ -0,0 +1,19 @@ +package org.dreeam.leaf.config.modules.opt; + +import org.dreeam.leaf.config.ConfigModules; +import org.dreeam.leaf.config.EnumConfigCategory; +import org.dreeam.leaf.config.annotations.Experimental; + +public class OptimizeWaypoint extends ConfigModules { + public String getBasePath() { + return EnumConfigCategory.PERF.getBaseKeyName() + ".optimize-waypoint"; + } + + @Experimental + public static boolean enabled = false; + + @Override + public void onLoaded() { + enabled = config.getBoolean(getBasePath(), enabled); + } +} diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizedPoweredRails.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizedPoweredRails.java index b71f3702..fb7f0f61 100644 --- a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizedPoweredRails.java +++ b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/OptimizedPoweredRails.java @@ -13,6 +13,6 @@ public class OptimizedPoweredRails extends ConfigModules { @Override public void onLoaded() { - enabled = config().getBoolean(getBasePath(), enabled); + enabled = config.getBoolean(getBasePath(), enabled); } }