From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Wed, 26 Mar 2025 15:47:14 -0400 Subject: [PATCH] Prevent double chunk retrieving in entity fluid pushing check and fluid height updating This patch is based on the following patch: "Reduce entity fluid lookups if no fluids" By: Paul Sauve As part of: Airplane (https://github.com/TECHNOVE/Airplane) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java index 334a47659ba75fade062bc79df3731d1e449114b..0903508d2cd3c78602e62dbcff4aa70285bc4c4f 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -4621,10 +4621,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { - if (this.touchingUnloadedChunk()) { - return false; - } - + // Leaf - Prevent double chunk retrieving in entity fluid pushing check and fluid height updating final AABB boundingBox = this.getBoundingBox().deflate(1.0E-3); final Level world = this.level; @@ -4660,7 +4657,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess for (int currChunkZ = minChunkZ; currChunkZ <= maxChunkZ; ++currChunkZ) { for (int currChunkX = minChunkX; currChunkX <= maxChunkX; ++currChunkX) { - final net.minecraft.world.level.chunk.LevelChunkSection[] sections = chunkSource.getChunk(currChunkX, currChunkZ, net.minecraft.world.level.chunk.status.ChunkStatus.FULL, false).getSections(); + // Leaf start - Prevent double chunk retrieving in entity fluid pushing check and fluid height updating + final net.minecraft.world.level.chunk.ChunkAccess chunk = chunkSource.getChunk(currChunkX, currChunkZ, net.minecraft.world.level.chunk.status.ChunkStatus.FULL, false); + if (chunk == null) continue; + final net.minecraft.world.level.chunk.LevelChunkSection[] sections = chunk.getSections(); + // Leaf end - Prevent double chunk retrieving in entity fluid pushing check and fluid height updating // bound y for (int currChunkY = minChunkY; currChunkY <= maxChunkY; ++currChunkY) {