diff --git a/patches/work/server/0007-Pufferfish-Optimize-mob-spawning.patch b/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch similarity index 65% rename from patches/work/server/0007-Pufferfish-Optimize-mob-spawning.patch rename to patches/server/0006-Pufferfish-Optimize-mob-spawning.patch index 1f870a36..c47a7a08 100644 --- a/patches/work/server/0007-Pufferfish-Optimize-mob-spawning.patch +++ b/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch @@ -20,10 +20,10 @@ 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 17af0e5be9245573bfcd2ead2be3b6434cd8f576..a976002437a5d9c761835691213e11b14d9a7d45 100644 +index 208b9558d9019cd00f7ed270d2a36f9a28464e65..e2f2bc175d94110e32b412b73528686661b79809 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -303,6 +303,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop atomicreference = new AtomicReference(); Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 8c74652ffa2c1263c835381bc27ffdc6d272dbf7..05e214ca14240ba635927c9f2a71d19ba1e9aa45 100644 +index 42ac2efb4c84c5f15c10934f928183962f179626..944ada1e0f4e4a8460ec3c8e1d9a0de7469d395b 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -364,6 +364,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -373,6 +373,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.info("JMX monitoring enabled"); } @@ -44,26 +44,13 @@ index 8c74652ffa2c1263c835381bc27ffdc6d272dbf7..05e214ca14240ba635927c9f2a71d19b 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 7bac7112b520286ebe9e8d36dc0932900e76eb52..54c3e32c7ae869d55408d77ea2aa1635f980a39b 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -246,7 +246,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 = new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(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 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547d8f57f1d 100644 +index fe96ee6b36d38a7da61c80715716365d2a33f07d..e59f0957b664c0ae3c4c7ce7d9ab68b038985870 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -74,6 +74,9 @@ public class ServerChunkCache extends ChunkSource { - private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4]; - // Paper end +@@ -128,6 +128,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } + // Paper end - rewrite chunk system + public boolean firstRunSpawnCounts = true; // Pufferfish + public final java.util.concurrent.atomic.AtomicBoolean _pufferfish_spawnCountsReady = new java.util.concurrent.atomic.AtomicBoolean(false); // Pufferfish - optimize countmobs @@ -71,7 +58,7 @@ index 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547 public ServerChunkCache(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, int simulationDistance, boolean dsync, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory) { this.level = world; this.mainThreadProcessor = new ServerChunkCache.MainThreadExecutor(world); -@@ -508,6 +511,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -442,6 +445,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // Paper start - Optional per player mob spawns int naturalSpawnChunkCount = k; if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled @@ -79,7 +66,7 @@ index 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547 // re-set mob counts for (ServerPlayer player : this.level.players) { // Paper start - per player mob spawning backoff -@@ -522,14 +526,18 @@ public class ServerChunkCache extends ChunkSource { +@@ -456,14 +460,18 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } // Paper end - per player mob spawning backoff } @@ -101,20 +88,20 @@ index 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547 // Gale start - MultiPaper - skip unnecessary mob spawning computations } else { spawnercreature_d = null; -@@ -622,8 +630,8 @@ public class ServerChunkCache extends ChunkSource { - if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { - // Paper end - optimise chunk tick iteration +@@ -491,8 +499,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + + if (this.level.isNaturalSpawningAllowed(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair)) { chunk1.incrementInhabitedTime(j); -- if (spawn && flagAndHasNaturalSpawn && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Gale - MultiPaper - skip unnecessary mob spawning computations +- if (flagAndHasNaturalSpawn && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot // Gale - MultiPaper - skip unnecessary mob spawning computations - NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); -+ if (spawn && flagAndHasNaturalSpawn && (!org.dreeam.leaf.config.modules.async.AsyncMobSpawning.enabled || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Gale - MultiPaper - skip unnecessary mob spawning computations // Pufferfish ++ if (flagAndHasNaturalSpawn && (!org.dreeam.leaf.config.modules.async.AsyncMobSpawning.enabled || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot // Gale - MultiPaper - skip unnecessary mob spawning computations // Pufferfish + NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish } - if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration -@@ -666,6 +674,40 @@ public class ServerChunkCache extends ChunkSource { + if (this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { +@@ -520,6 +528,40 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing - // Paper - optimise chunk tick iteration + }); } + + // Pufferfish start - optimize mob spawning @@ -139,7 +126,7 @@ index 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547 + if (_pufferfish_spawnCountsReady.getAndSet(false)) { + net.minecraft.server.MinecraftServer.getServer().mobSpawnExecutor.submit(() -> { + int mapped = distanceManager.getNaturalSpawnChunkCount(); -+ io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet.Iterator objectiterator = ++ ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet.Iterator objectiterator = + level.entityTickList.entities.iterator(io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet.ITERATOR_FLAG_SEE_ADDITIONS); + gg.pufferfish.pufferfish.util.IterableWrapper wrappedIterator = + new gg.pufferfish.pufferfish.util.IterableWrapper<>(objectiterator); @@ -154,52 +141,41 @@ index 94689992b4d159ab996e00ae20afa8fef0e84db2..af4fe64e190e73dcc5f2495d0b533547 // Gale start - MultiPaper - skip unnecessary mob spawning computations diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -index 83a39f900551e39d5af6f17a339a386ddee4feef..0c8c534fc69172387f188af5282accfed7597ac7 100644 +index d8b4196adf955f8d414688dc451caac2d9c609d9..80a43def4912a3228cd95117d5c2aac68798b4ec 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java +++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java @@ -9,7 +9,7 @@ import javax.annotation.Nullable; import net.minecraft.world.entity.Entity; public class EntityTickList { -- private final io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet entities = new io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet<>(true); // Paper - rewrite this, always keep this updated - why would we EVER tick an entity that's not ticking? -+ public final io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet entities = new io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet<>(true); // Paper - rewrite this, always keep this updated - why would we EVER tick an entity that's not ticking? // Pufferfish - private->public +- private final ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet entities = new ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<>(); // Paper - rewrite chunk system ++ public final ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet entities = new ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<>(); // Paper - rewrite chunk system // Pufferfish - private->public private void ensureActiveIsNotIterated() { - // Paper - replace with better logic, do not delay removals + // Paper - rewrite chunk system diff --git a/src/main/java/org/dreeam/leaf/config/modules/async/AsyncMobSpawning.java b/src/main/java/org/dreeam/leaf/config/modules/async/AsyncMobSpawning.java new file mode 100644 -index 0000000000000000000000000000000000000000..67c575439f7d60046586972dfc3212bb36a3d033 +index 0000000000000000000000000000000000000000..8a3726a747ff4640f9936a9eae1dca34e5203029 --- /dev/null +++ b/src/main/java/org/dreeam/leaf/config/modules/async/AsyncMobSpawning.java -@@ -0,0 +1,41 @@ +@@ -0,0 +1,30 @@ +package org.dreeam.leaf.config.modules.async; + -+import com.electronwill.nightconfig.core.file.CommentedFileConfig; -+import org.dreeam.leaf.config.ConfigInfo; -+import org.dreeam.leaf.config.DoNotLoad; ++import org.dreeam.leaf.config.ConfigModules; +import org.dreeam.leaf.config.EnumConfigCategory; -+import org.dreeam.leaf.config.IConfigModule; + -+public class AsyncMobSpawning implements IConfigModule { ++public class AsyncMobSpawning extends ConfigModules { + -+ @Override -+ public EnumConfigCategory getCategory() { -+ return EnumConfigCategory.ASYNC; ++ public String getBasePath() { ++ return EnumConfigCategory.ASYNC.getBaseKeyName() + ".async-mob-spawning"; + } + -+ @Override -+ public String getBaseName() { -+ return "async_mob_spawning"; -+ } -+ -+ @ConfigInfo(baseName = "enabled") + public static boolean enabled = true; -+ @DoNotLoad + public static boolean asyncMobSpawningInitialized; + + @Override -+ public void onLoaded(CommentedFileConfig config) { -+ config.setComment("async.async_mob_spawning", """ ++ public void onLoaded() { ++ config.addComment(getBasePath(), """ + Whether or not asynchronous mob spawning should be enabled. + On servers with many entities, this can improve performance by up to 15%. You must have + paper's per-player-mob-spawns setting set to true for this to work. @@ -209,7 +185,7 @@ index 0000000000000000000000000000000000000000..67c575439f7d60046586972dfc3212bb + // This prevents us from changing the value during a reload. + if (!asyncMobSpawningInitialized) { + asyncMobSpawningInitialized = true; -+ this.get("async.async_mob_spawning.enabled", enabled, config); ++ enabled = config.getBoolean(getBasePath() + ".enabled", enabled); + } + } +} diff --git a/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch b/patches/server/0007-Pufferfish-Dynamic-Activation-of-Brain.patch similarity index 100% rename from patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch rename to patches/server/0007-Pufferfish-Dynamic-Activation-of-Brain.patch diff --git a/patches/server/0007-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch b/patches/server/0008-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch similarity index 100% rename from patches/server/0007-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch rename to patches/server/0008-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch diff --git a/patches/server/0008-Pufferfish-Entity-TTL.patch b/patches/server/0009-Pufferfish-Entity-TTL.patch similarity index 97% rename from patches/server/0008-Pufferfish-Entity-TTL.patch rename to patches/server/0009-Pufferfish-Entity-TTL.patch index 6354499b..1b3385fe 100644 --- a/patches/server/0008-Pufferfish-Entity-TTL.patch +++ b/patches/server/0009-Pufferfish-Entity-TTL.patch @@ -7,7 +7,7 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e4081783fb55ee1d804af3947be76d400f2834d4..e8b651e628e8ab2033dbf2ee3eb5d38ff22c9f45 100644 +index bdd61610c9f1c380a8e5e068a5ad85dea86c26b9..109106fb93dd2b05363a1d89d38a9ccf09ae5195 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -849,6 +849,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch similarity index 99% rename from patches/server/0009-Purpur-Server-Changes.patch rename to patches/server/0010-Purpur-Server-Changes.patch index e57f5297..61064a68 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -699,7 +699,7 @@ index d2ea951c7e5899d0e2edb52064e35c23965c4230..b929842514a97ca993ead608d355a4af Bootstrap.bootStrap(); Bootstrap.validate(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 208b9558d9019cd00f7ed270d2a36f9a28464e65..7f12e6fc9ff0c6f0e2659886f2cf1efb117f78d6 100644 +index e2f2bc175d94110e32b412b73528686661b79809..a94cb6810de2a7c9f1425d421e77f84c9471805a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -868,7 +868,7 @@ index 0d9de4c61c7b26a6ff37c12fde629161fd0c3d5a..2f7897744f4aea718170698881773e90 entityitem = entityplayer.drop(itemstack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event if (entityitem != null) { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 42ac2efb4c84c5f15c10934f928183962f179626..ca31ceb08099324df560bfc4f7888a509ad75307 100644 +index 944ada1e0f4e4a8460ec3c8e1d9a0de7469d395b..e9d6f0cdb5b1f15e1536844b6a8637f3e7d21c6f 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -118,6 +118,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -926,10 +926,10 @@ index 42ac2efb4c84c5f15c10934f928183962f179626..ca31ceb08099324df560bfc4f7888a50 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up -@@ -373,6 +407,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - DedicatedServer.LOGGER.info("JMX monitoring enabled"); +@@ -374,6 +408,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } + if (org.dreeam.leaf.config.modules.async.AsyncMobSpawning.enabled) mobSpawnExecutor.start(); // Pufferfish + org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur + if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur return true; diff --git a/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch b/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch similarity index 95% rename from patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch rename to patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch index 99cc5d6d..9ac424b1 100644 --- a/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch +++ b/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch @@ -27,7 +27,7 @@ index e94224ed280247ee69dfdff8dc960f2b8729be33..5b9725a9a81c0850dc2809c150529e5f for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7f12e6fc9ff0c6f0e2659886f2cf1efb117f78d6..ff2e76176e0c49aae4115d5c2f764dbf2926e33c 100644 +index a94cb6810de2a7c9f1425d421e77f84c9471805a..dfe1b32ff274f8620a953303873e046c4eeea4ec 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -300,7 +300,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 -@@ -1045,6 +1047,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayListWithCapacity(this.chunkMap.size()); Iterator iterator = this.chunkMap.getChunks().iterator(); @@ -1182,7 +1182,7 @@ index 2474c0b4eec44dda25f389feff7c71cec99d7483..6216eded6cbe3c98c706f3a51b379e02 while (iterator.hasNext()) { ChunkHolder playerchunk = (ChunkHolder) iterator.next(); -@@ -437,7 +428,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -440,7 +431,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon boolean flagAndHasNaturalSpawn = flag && this.anySpawnCategoryIsSpawnedThisTick(); if (flagAndHasNaturalSpawn) { // Gale end - MultiPaper - skip unnecessary mob spawning computations @@ -1190,15 +1190,15 @@ index 2474c0b4eec44dda25f389feff7c71cec99d7483..6216eded6cbe3c98c706f3a51b379e02 int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns int naturalSpawnChunkCount = k; -@@ -461,7 +451,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); +@@ -469,7 +459,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Pufferfish end } // Paper end - Optional per player mob spawns - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings - this.lastSpawnState = spawnercreature_d; + //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously // Gale start - MultiPaper - skip unnecessary mob spawning computations -@@ -506,19 +495,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -513,19 +502,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } } } @@ -1217,7 +1217,7 @@ index 2474c0b4eec44dda25f389feff7c71cec99d7483..6216eded6cbe3c98c706f3a51b379e02 - this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing }); } - } + diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2a3ae961d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/patches/server/0014-Bump-Dependencies.patch b/patches/server/0015-Bump-Dependencies.patch similarity index 100% rename from patches/server/0014-Bump-Dependencies.patch rename to patches/server/0015-Bump-Dependencies.patch diff --git a/patches/server/0015-Remove-vanilla-username-check.patch b/patches/server/0016-Remove-vanilla-username-check.patch similarity index 100% rename from patches/server/0015-Remove-vanilla-username-check.patch rename to patches/server/0016-Remove-vanilla-username-check.patch diff --git a/patches/server/0016-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch b/patches/server/0017-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch similarity index 100% rename from patches/server/0016-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch rename to patches/server/0017-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch diff --git a/patches/server/0017-Remove-UseItemOnPacket-Too-Far-Check.patch b/patches/server/0018-Remove-UseItemOnPacket-Too-Far-Check.patch similarity index 100% rename from patches/server/0017-Remove-UseItemOnPacket-Too-Far-Check.patch rename to patches/server/0018-Remove-UseItemOnPacket-Too-Far-Check.patch diff --git a/patches/server/0018-KTP-Allow-unknown-event-thread-execution.patch b/patches/server/0019-KTP-Allow-unknown-event-thread-execution.patch similarity index 100% rename from patches/server/0018-KTP-Allow-unknown-event-thread-execution.patch rename to patches/server/0019-KTP-Allow-unknown-event-thread-execution.patch diff --git a/patches/server/0019-KeYi-Player-Skull-API.patch b/patches/server/0020-KeYi-Player-Skull-API.patch similarity index 100% rename from patches/server/0019-KeYi-Player-Skull-API.patch rename to patches/server/0020-KeYi-Player-Skull-API.patch diff --git a/patches/server/0020-KeYi-Disable-arrow-despawn-counter-by-default.patch b/patches/server/0021-KeYi-Disable-arrow-despawn-counter-by-default.patch similarity index 100% rename from patches/server/0020-KeYi-Disable-arrow-despawn-counter-by-default.patch rename to patches/server/0021-KeYi-Disable-arrow-despawn-counter-by-default.patch diff --git a/patches/server/0021-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch b/patches/server/0022-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch similarity index 100% rename from patches/server/0021-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch rename to patches/server/0022-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch diff --git a/patches/server/0022-Carpet-Fixes-Optimized-getBiome-method.patch b/patches/server/0023-Carpet-Fixes-Optimized-getBiome-method.patch similarity index 100% rename from patches/server/0022-Carpet-Fixes-Optimized-getBiome-method.patch rename to patches/server/0023-Carpet-Fixes-Optimized-getBiome-method.patch diff --git a/patches/server/0023-Carpet-Fixes-Use-optimized-RecipeManager.patch b/patches/server/0024-Carpet-Fixes-Use-optimized-RecipeManager.patch similarity index 100% rename from patches/server/0023-Carpet-Fixes-Use-optimized-RecipeManager.patch rename to patches/server/0024-Carpet-Fixes-Use-optimized-RecipeManager.patch diff --git a/patches/server/0024-Rail-Optimization-optimized-PoweredRailBlock-logic.patch b/patches/server/0025-Rail-Optimization-optimized-PoweredRailBlock-logic.patch similarity index 100% rename from patches/server/0024-Rail-Optimization-optimized-PoweredRailBlock-logic.patch rename to patches/server/0025-Rail-Optimization-optimized-PoweredRailBlock-logic.patch diff --git a/patches/server/0025-Akarin-Save-Json-list-asynchronously.patch b/patches/server/0026-Akarin-Save-Json-list-asynchronously.patch similarity index 100% rename from patches/server/0025-Akarin-Save-Json-list-asynchronously.patch rename to patches/server/0026-Akarin-Save-Json-list-asynchronously.patch diff --git a/patches/server/0026-Slice-Smooth-Teleports.patch b/patches/server/0027-Slice-Smooth-Teleports.patch similarity index 95% rename from patches/server/0026-Slice-Smooth-Teleports.patch rename to patches/server/0027-Slice-Smooth-Teleports.patch index c56438fe..4b8f8650 100644 --- a/patches/server/0026-Slice-Smooth-Teleports.patch +++ b/patches/server/0027-Slice-Smooth-Teleports.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d573ae3fee994614bcc6c699bcbe8210874ca414..30f984553e823b3c928b0e2181baf5d2058c2d84 100644 +index 250b23672ff509f9972ad6c91112d161b3068933..3926782762ecd3003138d8792a144b0353d4991c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -306,6 +306,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -36,7 +36,7 @@ index 75728fe1e02cc7042e30d954bc913fefd107ef94..5a46f2b5f2903adbb5410c509aac62a5 entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel)); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7a7a2acca5980ab3d79346f47e4153dd6c98939b..cf85b3af38258fa34e8f67d1f002a521cc59c81b 100644 +index ee1d4d83b856b9a7eba28a6f72256bb5dc33b67b..9325d2c676899fcedc360ea9183339c91af026dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1361,6 +1361,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0027-Parchment-Make-FixLight-use-action-bar.patch b/patches/server/0028-Parchment-Make-FixLight-use-action-bar.patch similarity index 100% rename from patches/server/0027-Parchment-Make-FixLight-use-action-bar.patch rename to patches/server/0028-Parchment-Make-FixLight-use-action-bar.patch diff --git a/patches/server/0028-Leaves-Server-Utils.patch b/patches/server/0029-Leaves-Server-Utils.patch similarity index 100% rename from patches/server/0028-Leaves-Server-Utils.patch rename to patches/server/0029-Leaves-Server-Utils.patch diff --git a/patches/server/0029-Leaves-Protocol-Core.patch b/patches/server/0030-Leaves-Protocol-Core.patch similarity index 99% rename from patches/server/0029-Leaves-Protocol-Core.patch rename to patches/server/0030-Leaves-Protocol-Core.patch index 0d649049..bad4ca71 100644 --- a/patches/server/0029-Leaves-Protocol-Core.patch +++ b/patches/server/0030-Leaves-Protocol-Core.patch @@ -51,7 +51,7 @@ index 1967c43ee3a12e63365cc40ee6565307e2fd73cf..6e376d0db5321d8e9b6e0b54617ffd17 assert isValidPath(path); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 65d89562f96c20e20649c049370dca0ef3f059b5..36940bc192088233842d8fa7a37b84657552ceff 100644 +index 4468ec76c0b12726313add26c2abdaaaea2691c0..8bfb77148aab03a4d031d700ee03483e125017f2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1806,6 +1806,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) public static S spin(Function serverFactory) { diff --git a/patches/server/0053-SparklyPaper-Optimize-canSee-checks.patch b/patches/server/0054-SparklyPaper-Optimize-canSee-checks.patch similarity index 100% rename from patches/server/0053-SparklyPaper-Optimize-canSee-checks.patch rename to patches/server/0054-SparklyPaper-Optimize-canSee-checks.patch diff --git a/patches/server/0054-Polpot-Make-egg-and-snowball-can-knockback-player.patch b/patches/server/0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch similarity index 100% rename from patches/server/0054-Polpot-Make-egg-and-snowball-can-knockback-player.patch rename to patches/server/0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch diff --git a/patches/server/0055-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch b/patches/server/0056-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch similarity index 100% rename from patches/server/0055-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch rename to patches/server/0056-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch diff --git a/patches/server/0056-Fix-MC-65198.patch b/patches/server/0057-Fix-MC-65198.patch similarity index 100% rename from patches/server/0056-Fix-MC-65198.patch rename to patches/server/0057-Fix-MC-65198.patch diff --git a/patches/server/0057-Including-5s-in-getTPS.patch b/patches/server/0058-Including-5s-in-getTPS.patch similarity index 100% rename from patches/server/0057-Including-5s-in-getTPS.patch rename to patches/server/0058-Including-5s-in-getTPS.patch diff --git a/patches/server/0058-Remove-useless-creating-stats-json-bases-on-player-n.patch b/patches/server/0059-Remove-useless-creating-stats-json-bases-on-player-n.patch similarity index 100% rename from patches/server/0058-Remove-useless-creating-stats-json-bases-on-player-n.patch rename to patches/server/0059-Remove-useless-creating-stats-json-bases-on-player-n.patch diff --git a/patches/server/0059-Fix-NPE-during-creating-GUI-graph.patch b/patches/server/0060-Fix-NPE-during-creating-GUI-graph.patch similarity index 100% rename from patches/server/0059-Fix-NPE-during-creating-GUI-graph.patch rename to patches/server/0060-Fix-NPE-during-creating-GUI-graph.patch diff --git a/patches/server/0060-Don-t-throw-exception-on-missing-ResourceKey-value.patch b/patches/server/0061-Don-t-throw-exception-on-missing-ResourceKey-value.patch similarity index 100% rename from patches/server/0060-Don-t-throw-exception-on-missing-ResourceKey-value.patch rename to patches/server/0061-Don-t-throw-exception-on-missing-ResourceKey-value.patch diff --git a/patches/server/0061-Improve-Purpur-AFK-system.patch b/patches/server/0062-Improve-Purpur-AFK-system.patch similarity index 100% rename from patches/server/0061-Improve-Purpur-AFK-system.patch rename to patches/server/0062-Improve-Purpur-AFK-system.patch diff --git a/patches/server/0062-Virtual-Thread-for-async-scheduler.patch b/patches/server/0063-Virtual-Thread-for-async-scheduler.patch similarity index 100% rename from patches/server/0062-Virtual-Thread-for-async-scheduler.patch rename to patches/server/0063-Virtual-Thread-for-async-scheduler.patch diff --git a/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch b/patches/server/0064-Mirai-Configurable-chat-message-signatures.patch similarity index 98% rename from patches/server/0063-Mirai-Configurable-chat-message-signatures.patch rename to patches/server/0064-Mirai-Configurable-chat-message-signatures.patch index 4ba28a16..50420b12 100644 --- a/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch +++ b/patches/server/0064-Mirai-Configurable-chat-message-signatures.patch @@ -71,10 +71,10 @@ index 50dc68a005490415b88780397ef6c26859596dd5..162115048cffc824376e54b7f60ae071 public static record Favicon(byte[] iconBytes) { private static final String PREFIX = "data:image/png;base64,"; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index b38470108f0842ee65cb55ff7e376105cc7ba2f6..9bf4b58f056172d88365197352b1d434b7170769 100644 +index 020a0f033f64875bb04d1dead332d471d480935f..f26cec20aa9f52b5dd090107fa76fcd390fc1067 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -708,6 +708,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -709,6 +709,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @Override public boolean enforceSecureProfile() { diff --git a/patches/server/0064-Block-log4j-rce-exploit-in-chat.patch b/patches/server/0065-Block-log4j-rce-exploit-in-chat.patch similarity index 100% rename from patches/server/0064-Block-log4j-rce-exploit-in-chat.patch rename to patches/server/0065-Block-log4j-rce-exploit-in-chat.patch diff --git a/patches/server/0065-Cache-player-profileResult.patch b/patches/server/0066-Cache-player-profileResult.patch similarity index 100% rename from patches/server/0065-Cache-player-profileResult.patch rename to patches/server/0066-Cache-player-profileResult.patch diff --git a/patches/server/0066-Prevent-change-non-editable-sign-warning-spam-in-con.patch b/patches/server/0067-Prevent-change-non-editable-sign-warning-spam-in-con.patch similarity index 100% rename from patches/server/0066-Prevent-change-non-editable-sign-warning-spam-in-con.patch rename to patches/server/0067-Prevent-change-non-editable-sign-warning-spam-in-con.patch diff --git a/patches/server/0067-Ignore-terminal-provider-warning.patch b/patches/server/0068-Ignore-terminal-provider-warning.patch similarity index 100% rename from patches/server/0067-Ignore-terminal-provider-warning.patch rename to patches/server/0068-Ignore-terminal-provider-warning.patch diff --git a/patches/server/0068-Fix-console-freeze-above-JAVA-22.patch b/patches/server/0069-Fix-console-freeze-above-JAVA-22.patch similarity index 100% rename from patches/server/0068-Fix-console-freeze-above-JAVA-22.patch rename to patches/server/0069-Fix-console-freeze-above-JAVA-22.patch diff --git a/patches/server/0069-Fix-console-output-display-on-Pterodactyl-panel.patch b/patches/server/0070-Fix-console-output-display-on-Pterodactyl-panel.patch similarity index 100% rename from patches/server/0069-Fix-console-output-display-on-Pterodactyl-panel.patch rename to patches/server/0070-Fix-console-output-display-on-Pterodactyl-panel.patch diff --git a/patches/server/0070-Faster-Random-Generator.patch b/patches/server/0071-Faster-Random-Generator.patch similarity index 100% rename from patches/server/0070-Faster-Random-Generator.patch rename to patches/server/0071-Faster-Random-Generator.patch diff --git a/patches/server/0071-Don-t-save-primed-tnt-entity.patch b/patches/server/0072-Don-t-save-primed-tnt-entity.patch similarity index 100% rename from patches/server/0071-Don-t-save-primed-tnt-entity.patch rename to patches/server/0072-Don-t-save-primed-tnt-entity.patch diff --git a/patches/server/0072-Don-t-save-falling-block-entity.patch b/patches/server/0073-Don-t-save-falling-block-entity.patch similarity index 100% rename from patches/server/0072-Don-t-save-falling-block-entity.patch rename to patches/server/0073-Don-t-save-falling-block-entity.patch diff --git a/patches/server/0073-Configurable-connection-message.patch b/patches/server/0074-Configurable-connection-message.patch similarity index 100% rename from patches/server/0073-Configurable-connection-message.patch rename to patches/server/0074-Configurable-connection-message.patch diff --git a/patches/server/0074-Remove-stream-in-BlockBehaviour-cache-blockstate.patch b/patches/server/0075-Remove-stream-in-BlockBehaviour-cache-blockstate.patch similarity index 100% rename from patches/server/0074-Remove-stream-in-BlockBehaviour-cache-blockstate.patch rename to patches/server/0075-Remove-stream-in-BlockBehaviour-cache-blockstate.patch diff --git a/patches/server/0075-Reduce-worldgen-allocations.patch b/patches/server/0076-Reduce-worldgen-allocations.patch similarity index 100% rename from patches/server/0075-Reduce-worldgen-allocations.patch rename to patches/server/0076-Reduce-worldgen-allocations.patch diff --git a/patches/server/0076-Fix-MC-183518.patch b/patches/server/0077-Fix-MC-183518.patch similarity index 100% rename from patches/server/0076-Fix-MC-183518.patch rename to patches/server/0077-Fix-MC-183518.patch diff --git a/patches/server/0077-Use-caffeine-cache-kickPermission-instead-of-using-g.patch b/patches/server/0078-Use-caffeine-cache-kickPermission-instead-of-using-g.patch similarity index 100% rename from patches/server/0077-Use-caffeine-cache-kickPermission-instead-of-using-g.patch rename to patches/server/0078-Use-caffeine-cache-kickPermission-instead-of-using-g.patch diff --git a/patches/server/0078-Do-not-place-player-if-the-server-is-full.patch b/patches/server/0079-Do-not-place-player-if-the-server-is-full.patch similarity index 100% rename from patches/server/0078-Do-not-place-player-if-the-server-is-full.patch rename to patches/server/0079-Do-not-place-player-if-the-server-is-full.patch diff --git a/patches/server/0079-Fix-MC-200418.patch b/patches/server/0080-Fix-MC-200418.patch similarity index 100% rename from patches/server/0079-Fix-MC-200418.patch rename to patches/server/0080-Fix-MC-200418.patch diff --git a/patches/server/0080-Fix-MC-119417.patch b/patches/server/0081-Fix-MC-119417.patch similarity index 100% rename from patches/server/0080-Fix-MC-119417.patch rename to patches/server/0081-Fix-MC-119417.patch diff --git a/patches/server/0081-Fix-MC-223153.patch b/patches/server/0082-Fix-MC-223153.patch similarity index 100% rename from patches/server/0081-Fix-MC-223153.patch rename to patches/server/0082-Fix-MC-223153.patch