From 31990e0284ab6c28a637f2ceebd2736cd5cd2992 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Tue, 26 Sep 2023 00:49:19 -0400 Subject: [PATCH] Fix Optimize mob spawning temporarily --- ...005-Pufferfish-Optimize-mob-spawning.patch | 18 ++-------- .../server/0009-Purpur-Server-Changes.patch | 34 +++++++++---------- patches/server/0010-Remove-Timings.patch | 30 ++++++++-------- ...-Purpur-Configurable-server-mod-name.patch | 4 +-- .../0027-Leaves-Appleskin-Protocol.patch | 4 +-- patches/server/0033-Fix-tracker-NPE.patch | 4 +-- 6 files changed, 41 insertions(+), 53 deletions(-) diff --git a/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch b/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch index 780d41ea..17a34a43 100644 --- a/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch +++ b/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch @@ -20,14 +20,15 @@ and, in my opinion, worth the low risk of minor mob-spawning-related inconsistencies. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 889886a949df9eb49a26c6fec9a32ddfbf938847..3c8c30829298adc1eb1b1b34160480dcbbb446b6 100644 +index 889886a949df9eb49a26c6fec9a32ddfbf938847..a8535f791188b2d8ba8d663372e688a1bfebe3c0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -295,6 +295,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system @@ -43,19 +44,6 @@ index f74efb12626a3f027d716bcd3bdb69d9225b3fac..6ae953902a9ed246246660c8da7654c7 return true; } } -diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 1d6b75467166def7f0573f5cabe19aafb18de3c7..e7ba192bd8493e273afb36f8c7da374147c337cd 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -206,7 +206,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - // Paper end - // Paper start - optimise chunk tick iteration - public final it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); -- public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets); -+ public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = org.dreeam.leaf.LeafConfig.enableAsyncMobSpawning ? new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets) : new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish - // Paper end - optimise chunk tick iteration - - public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java index 18e521e77e58a9f786937192249c884aa317988c..f5584de85ca4b95be9b107df562ebf3963ad1b5a 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0009-Purpur-Server-Changes.patch index 278ba744..cf78f971 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0009-Purpur-Server-Changes.patch @@ -700,7 +700,7 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3c8c30829298adc1eb1b1b34160480dcbbb446b6..b22ac919761c54b5f466bd35740710445ce3dd8f 100644 +index a8535f791188b2d8ba8d663372e688a1bfebe3c0..995dd071082e482785448678b9189f0715a75308 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -273,6 +273,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -809,7 +809,7 @@ index 3c8c30829298adc1eb1b1b34160480dcbbb446b6..b22ac919761c54b5f466bd3574071044 /* Drop global time updates if (this.tickCount % 20 == 0) { -@@ -2541,6 +2567,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, CommandSource, AutoCloseable { public static final int SERVER_THREAD_PRIORITY = Integer.getInteger("gale.thread.priority.server", -1); // Gale - server thread priority environment variable -@@ -916,7 +914,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return !this.canSleepForTickNoOversleep(); // Paper - move oversleep into full server tick -@@ -1376,15 +1373,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -1035,7 +1035,7 @@ index b22ac919761c54b5f466bd35740710445ce3dd8f..07ea151777da3c233177642c56fb47ad // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1493,20 +1481,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur -@@ -1546,14 +1528,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); + public final Set needsChangeBroadcasting = Sets.newConcurrentHashSet(); // Leaf - public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = org.dreeam.leaf.LeafConfig.enableAsyncMobSpawning ? new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets) : new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish + public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets); // Paper end - optimise chunk tick iteration @@ -1212,7 +1212,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider