diff --git a/patches/server/0088-Tracking-Optimize-Use-thread-safe-Collection.patch b/patches/server/0088-Tracking-Optimize-Use-thread-safe-Collection.patch index 7f360c78..5735801d 100644 --- a/patches/server/0088-Tracking-Optimize-Use-thread-safe-Collection.patch +++ b/patches/server/0088-Tracking-Optimize-Use-thread-safe-Collection.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tracking Optimize: Use thread-safe Collection diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index b0a6d5951b80a056c7f070188918cac50b0fe9ca..c564136c9304b0cf9aef22dba2fc3a53a1d7f30b 100644 +index b0a6d5951b80a056c7f070188918cac50b0fe9ca..3c9c9536202cc7fc6654675296444f512c9eb971 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -241,7 +241,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -17,6 +17,22 @@ index b0a6d5951b80a056c7f070188918cac50b0fe9ca..c564136c9304b0cf9aef22dba2fc3a53 public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish // Paper end - optimise chunk tick iteration +@@ -1158,11 +1158,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + } + // Leaf end - petal + for (TrackedEntity tracker : this.entityMap.values()) { ++ if (tracker == null) continue; // Leaf - Skip null tracker ++ + // update tracker entry + tracker.updatePlayers(tracker.entity.getPlayersInTrackRange()); + } + + for (TrackedEntity tracker : this.entityMap.values()) { ++ if (tracker == null) continue; // Leaf - Skip null tracker ++ + tracker.serverEntity.sendChanges(); + } + } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java index f1718d57dab1e81c906874f51986868d897f87f1..0e20bf94822dc0f56cfce3e3b4a54235f96d1ef9 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/patches/server/0089-Tracking-Optimize-Reduce-expensive-iteration.patch b/patches/server/0089-Tracking-Optimize-Reduce-expensive-iteration.patch index eb12d45b..dbb62a33 100644 --- a/patches/server/0089-Tracking-Optimize-Reduce-expensive-iteration.patch +++ b/patches/server/0089-Tracking-Optimize-Reduce-expensive-iteration.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tracking Optimize: Reduce expensive iteration diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index c564136c9304b0cf9aef22dba2fc3a53a1d7f30b..65b9af55c1137caee60159808f759d3d5c6fd2de 100644 +index 3c9c9536202cc7fc6654675296444f512c9eb971..6faf3ab4a871eaa966c82a28a60a443179846723 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1157,6 +1157,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -16,8 +16,8 @@ index c564136c9304b0cf9aef22dba2fc3a53a1d7f30b..65b9af55c1137caee60159808f759d3d + if (net.minecraft.server.MinecraftServer.getServer().getPlayerList().players.isEmpty()) return; // Leaf - Don't update since the server is empty + for (TrackedEntity tracker : this.entityMap.values()) { - // update tracker entry - tracker.updatePlayers(tracker.entity.getPlayersInTrackRange()); + if (tracker == null) continue; // Leaf - Skip null tracker + diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java index f45cf9c7c2d67fafee6bb5409ffc975dc0d3b133..07fb29f9bb5a3a4c1dd7d9e9cd9dbbdb62f07d5d 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java