From ee458972396a079719cf2115564a04b3232ed90d Mon Sep 17 00:00:00 2001 From: hayanesuru Date: Sun, 6 Jul 2025 00:41:59 +0900 Subject: [PATCH] fix reduce chunk source updates position check and mark experimental --- .../0241-Reduce-PlayerChunk-Updates.patch | 15 +++------------ .../modules/opt/ReduceChunkSourceUpdates.java | 16 +++++++++++----- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/leaf-server/minecraft-patches/features/0241-Reduce-PlayerChunk-Updates.patch b/leaf-server/minecraft-patches/features/0241-Reduce-PlayerChunk-Updates.patch index 076fdaa1..3932b45b 100644 --- a/leaf-server/minecraft-patches/features/0241-Reduce-PlayerChunk-Updates.patch +++ b/leaf-server/minecraft-patches/features/0241-Reduce-PlayerChunk-Updates.patch @@ -5,24 +5,15 @@ Subject: [PATCH] Reduce PlayerChunk Updates diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 983f2b1c12d2e64c099ba7c717b9d2bc7f1770ce..6dc940aa6ee513e5c87b6058ccaa90bba91bade9 100644 +index 7c12d65849a975aedfb94fc135bad7071908a02b..d6078ccf648c77717291e784200f952633fbbacf 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1457,6 +1457,8 @@ public class ServerGamePacketListenerImpl - this.resetPosition(); - } - -+ final net.minecraft.world.level.ChunkPos playerStartChunkPosition = this.player.chunkPosition(); // Leaf - Reduce PlayerChunk Updates -+ - if (this.player.hasClientLoaded()) { - float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot())); final float toYaw = f; // Paper - OBFHELPER - float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot())); final float toPitch = f1; // Paper - OBFHELPER -@@ -1734,7 +1736,7 @@ public class ServerGamePacketListenerImpl +@@ -1734,7 +1734,7 @@ public class ServerGamePacketListenerImpl && !isFallFlying && !isAutoSpinAttack && this.noBlocksAround(this.player); - this.player.level().getChunkSource().move(this.player); -+ if (!org.dreeam.leaf.config.modules.opt.ReduceChunkSourceUpdates.enabled || this.player.level() != serverLevel || this.player.chunkPosition() == playerStartChunkPosition) this.player.level().getChunkSource().move(this.player); // Leaf - Reduce PlayerChunk Updates ++ if (!org.dreeam.leaf.config.modules.opt.ReduceChunkSourceUpdates.enabled || this.player.getLastSectionPos().asLong() != net.minecraft.core.SectionPos.asLong(this.player.blockPosition())) this.player.level().getChunkSource().move(this.player); // Leaf - Reduce PlayerChunk Updates Vec3 vec3 = new Vec3(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.player.setOnGroundWithMovement(packet.isOnGround(), packet.horizontalCollision(), vec3); this.player.doCheckFallDamage(vec3.x, vec3.y, vec3.z, packet.isOnGround()); diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/ReduceChunkSourceUpdates.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/ReduceChunkSourceUpdates.java index 77fb1a41..42e82d5a 100644 --- a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/ReduceChunkSourceUpdates.java +++ b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/opt/ReduceChunkSourceUpdates.java @@ -2,6 +2,7 @@ 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 ReduceChunkSourceUpdates extends ConfigModules { @@ -9,15 +10,20 @@ public class ReduceChunkSourceUpdates extends ConfigModules { return EnumConfigCategory.PERF.getBaseKeyName() + ".reduce-chunk-source-updates"; } + @Experimental public static boolean enabled = false; @Override public void onLoaded() { - enabled = config.getBoolean(getBasePath() + ".enabled", enabled, - config.pickStringRegionBased( - "Reduces chunk source updates on inter-chunk player moves.", - "减少玩家跨区块移动时的区块源更新。" - ) + config.addCommentRegionBased(getBasePath(), """ + *** Experimental Feature *** + Reduces chunk source updates on inter-chunk player moves.""", """ + *** 实验性功能 *** + 减少玩家跨区块移动时的区块源更新.""" ); + enabled = config.getBoolean(getBasePath() + ".force-enabled", enabled); + if (config.getBoolean(getBasePath() + ".enabled", enabled)) { + LOGGER.warn("Disabled reduce-chunk-source-updates due to its experimental"); + } } }