diff --git a/patches/unapplied-server/0045-Add-redstone-implementation-API.patch b/patches/server/0038-Add-redstone-implementation-API.patch similarity index 100% rename from patches/unapplied-server/0045-Add-redstone-implementation-API.patch rename to patches/server/0038-Add-redstone-implementation-API.patch diff --git a/patches/unapplied-server/0055-Optimise-check-inside-blocks-and-fluids.patch b/patches/unapplied-server/0055-Optimise-check-inside-blocks-and-fluids.patch deleted file mode 100644 index 70e5546..0000000 --- a/patches/unapplied-server/0055-Optimise-check-inside-blocks-and-fluids.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samsuik -Date: Sun, 24 Dec 2023 16:54:07 +0000 -Subject: [PATCH] Optimise check inside blocks and fluids - - -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6591dc7d43c0f2086328c8704b130ccca8e097cc..1a873b14ccf65a62ed5f6fe41e281bda1a799636 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1933,18 +1933,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - BlockPos blockposition1 = BlockPos.containing(axisalignedbb.maxX - offset, axisalignedbb.maxY - offset, axisalignedbb.maxZ - offset); - // Sakura end - physics version api - -- if (this.level().hasChunksAt(blockposition, blockposition1)) { -+ // Sakura start - optimise check inside blocks -+ if (blockposition1.getY() >= level.getMinBuildHeight() || blockposition.getY() < level.getMaxBuildHeight()) { - BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); - -+ net.minecraft.world.level.chunk.ChunkAccess chunk = null; -+ int lastChunkX = Integer.MIN_VALUE; -+ int lastChunkZ = Integer.MIN_VALUE; -+ - for (int i = blockposition.getX(); i <= blockposition1.getX(); ++i) { -- for (int j = blockposition.getY(); j <= blockposition1.getY(); ++j) { -- for (int k = blockposition.getZ(); k <= blockposition1.getZ(); ++k) { -+ final int chunkX = i >> 4; -+ for (int k = blockposition.getZ(); k <= blockposition1.getZ(); ++k) { -+ final int chunkZ = k >> 4; -+ -+ if (lastChunkX != chunkX || lastChunkZ != chunkZ) { -+ chunk = level.getChunkIfLoadedImmediately(chunkX, chunkZ); -+ lastChunkX = chunkX; -+ lastChunkZ = chunkZ; -+ } -+ -+ if (chunk == null) { -+ continue; -+ } -+ -+ for (int j = blockposition.getY(); j <= blockposition1.getY(); ++j) { - if (!this.isAlive()) { - return; - } - - blockposition_mutableblockposition.set(i, j, k); -- BlockState iblockdata = this.level().getBlockState(blockposition_mutableblockposition); -+ BlockState iblockdata = chunk.getBlockState(blockposition_mutableblockposition); -+ // Sakura end - - try { - iblockdata.entityInside(this.level(), blockposition_mutableblockposition, this); -@@ -4723,7 +4742,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { -- if (this.touchingUnloadedChunk()) { -+ if (false) { // Sakura - return false; - } else { - AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); -@@ -4740,11 +4759,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - int k1 = 0; - BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); - -+ // Sakura start -+ net.minecraft.world.level.chunk.ChunkAccess chunk = null; -+ int lastChunkX = Integer.MIN_VALUE; -+ int lastChunkZ = Integer.MIN_VALUE; -+ - for (int l1 = i; l1 < j; ++l1) { -- for (int i2 = k; i2 < l; ++i2) { -- for (int j2 = i1; j2 < j1; ++j2) { -+ final int chunkX = l1 >> 4; -+ for (int j2 = i1; j2 < j1; ++j2) { -+ final int chunkZ = j2 >> 4; -+ -+ if (chunkX != lastChunkX || chunkZ != lastChunkZ) { -+ chunk = level.getChunkIfLoadedImmediately(chunkX, chunkZ); -+ lastChunkX = chunkX; -+ lastChunkZ = chunkZ; -+ } -+ -+ if (chunk == null) { -+ return false; -+ } -+ -+ for (int i2 = k; i2 < l; ++i2) { - blockposition_mutableblockposition.set(l1, i2, j2); -- FluidState fluid = this.level().getFluidState(blockposition_mutableblockposition); -+ FluidState fluid = chunk.getFluidState(blockposition_mutableblockposition); -+ // Sakura end - - if (fluid.is(tag)) { - double d2 = (double) ((float) i2 + fluid.getHeight(this.level(), blockposition_mutableblockposition));