From ac774bb511db16a8d2e72c31f3ca7ee0799b0f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=91=A9=F0=9D=92=8A=F0=9D=92=92=F0=9D=92=96?= =?UTF-8?q?=F0=9D=92=82=F0=9D=92=95=F0=9D=92=86=F0=9D=92=93=F0=9D=92=8F?= =?UTF-8?q?=F0=9D=92=8A=F0=9D=92=90=F0=9D=92=8F=F0=9D=92=94?= Date: Sun, 3 Aug 2025 12:04:21 -0500 Subject: [PATCH] Added back `getHighestBlockYAt` validation in CraftWorld (#444) --- ...0050-SparklyPaper-Parallel-world-ticking.patch | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch index 4730a3f2..416668e5 100644 --- a/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch @@ -251,7 +251,7 @@ index a4aa2615823d77920ff55b8aa0bcc27a54b8c3e1..e1bf7dfdb3be8f92ef2cb86d7f15a613 + // SparklyPaper end - parallel world ticking } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index adb2324949484bc543bab25a79ed6d2c39bcba42..728c8a554af42e71dbcc1656563bafcd4d976a02 100644 +index adb2324949484bc543bab25a79ed6d2c39bcba42..43efa9ce8262a0118328c555a146dca10d4f9367 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -479,7 +479,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -309,7 +309,16 @@ index adb2324949484bc543bab25a79ed6d2c39bcba42..728c8a554af42e71dbcc1656563bafcd net.minecraft.world.level.Level.ExplosionInteraction explosionType; if (!breakBlocks) { explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks -@@ -1010,6 +1026,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -980,6 +996,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { + + @Override + public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { ++ if (org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled) // Leaf - SparklyPaper - parallel world ticking mod (make configurable) ++ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this.world, x >> 4, z >> 4, "Cannot retrieve chunk asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs) + warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper + // Transient load for this tick + return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); +@@ -1010,6 +1028,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setBiome(int x, int y, int z, Holder bb) { BlockPos pos = new BlockPos(x, 0, z); @@ -318,7 +327,7 @@ index adb2324949484bc543bab25a79ed6d2c39bcba42..728c8a554af42e71dbcc1656563bafcd if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2357,6 +2375,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2357,6 +2377,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {