From be61a07bf60547c02657b39cb90ceb4c0dc68883 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 19 Sep 2024 19:21:27 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2aaf436 Validate slot in PlayerInventory#setSlot (#11399) PaperMC/Paper@5c82955 Only mark decorations dirty if a removal actually occurs (#11413) PaperMC/Paper@c5a1066 Remove wall-time / unused skip tick protection (#11412) --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 18 ++++---- patches/server/0009-Ridables.patch | 20 ++++---- ...-Configurable-entity-base-attributes.patch | 10 ++-- .../0015-Configurable-server-mod-name.patch | 4 +- patches/server/0016-Lagging-threshold.patch | 8 ++-- .../0046-Configurable-TPS-Catchup.patch | 4 +- ...0059-Add-5-second-tps-average-in-tps.patch | 8 ++-- .../server/0061-Item-entity-immunities.patch | 6 +-- .../0065-Configurable-jockey-options.patch | 6 +-- .../0095-Configurable-daylight-cycle.patch | 6 +-- patches/server/0115-Implement-TPSBar.patch | 6 +-- ...169-API-for-any-mob-to-burn-daylight.patch | 12 ++--- ...-Halloween-options-and-optimizations.patch | 4 +- .../server/0212-UPnP-Port-Forwarding.patch | 8 ++-- ...counts-in-beehives-to-Purpur-clients.patch | 4 +- patches/server/0253-Remove-Timings.patch | 18 ++++---- .../server/0254-Remove-Mojang-Profiler.patch | 46 +++++++++---------- .../0294-config-for-startup-commands.patch | 4 +- 19 files changed, 97 insertions(+), 97 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6ea326e6d..5c6d43452 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = 1348e44173f422a7bf6f162a28c70a229dfe827b +paperCommit = c5a10665b8b80af650500b9263036f778f06d500 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 3398581cb..d47c2b461 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 5e68a68d1ff920eb743795ae2048064a244a761c..ca4b66e690f69d2b815dcde3839ec14da6bd78a3 100644 +index 648281575eb8d45a5c06549eb3d0f517c086fe64..43120fb0c76af42211895f09816333a19e32bc84 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -1143,10 +1143,10 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 23ddd26af762c1cd7fb3920669abb96b3213ab37..30907b63234642a4e760ae865c4a91e3162e52f2 100644 +index 696d075ca2883f3c37e35f983c4d020e5db89d16..e63721261258dba60b1eef2eee011e0aa18b0fd2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -323,6 +323,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1314,6 +1315,12 @@ 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 @@ -34,7 +34,7 @@ index 30907b63234642a4e760ae865c4a91e3162e52f2..7910506ea405498826a3150af131f5b0 this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5a9712de8abe3c3ccd08c5699f89e3ce54b1f28d..13541b8d94981705bd32fdd8d8e9c170f9143317 100644 +index 67d4b15143358c8947a7102a325dad66967e73a6..29c4e56091822c95daa60c7f85f422b09188cbcc 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -46,7 +46,7 @@ index 5a9712de8abe3c3ccd08c5699f89e3ce54b1f28d..13541b8d94981705bd32fdd8d8e9c170 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ffc7f4f4544df21b713b780eded8aeba4090db52..6cad742f0141ac0e4b4b5a1dd07874eb7588e70f 100644 +index 98fd4d8aab273ab86bcb9b95a331cd8bbcb61373..be4226b968e02fa88deb851ecb76130034e56695 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -805,6 +805,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -66,7 +66,7 @@ index ffc7f4f4544df21b713b780eded8aeba4090db52..6cad742f0141ac0e4b4b5a1dd07874eb private void updatePlayerAttributes() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b4f4eec5bafb15488e7c5560206d672a27802296..068cfd5b0c36b1dcf823bc5d4a77749616f0a612 100644 +index 9422d8bd512555f54410391d55c4072474c1ae4e..cc801cbefbbb54b8f9fa29bb37c00eca8e7ae44b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2793,6 +2793,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -79,7 +79,7 @@ index b4f4eec5bafb15488e7c5560206d672a27802296..068cfd5b0c36b1dcf823bc5d4a777496 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e2907879dbe758ffe728d77ebde434b1e7382a96..cdd289a8a7e2560765c2e873e9d7eb698c9df273 100644 +index 46b485521660b2a93c5e261e6bc1072e8d1bea0a..5a1f7466ddbce4c889dc5d0c1fa53f212d20c5be 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ce0d28cafcae0b7edc861749a1652ecc08d298b5..e7b9f129a31c57df65e9be082de1d2f31a327599 100644 +index 731f5111127f048f8afed8ed970cd6cfc492fb89..ae97b6a5aa43889e48a422c9b1692308b7535b21 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -4301,7 +4301,7 @@ index adebb66e550f805f444bec22e9a4dd575a642b43..d34892ac85b08f017221c5bb98c7442a } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index e675f1e3e5b6f9e1aa0d928ebb9abe76458edb38..93d7cd8fe60b0c0bc3620bca2fe2cfbbee2e9421 100644 +index a30fb47559eb74b7fe634678e63a85e7e2cad9a4..6bc2d7d44a4c4dbf3163fd53300e8af6aacede35 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -51,9 +51,27 @@ public class Spider extends Monster { @@ -4668,7 +4668,7 @@ index aa458ede5bd645ebf524238179edb33f41bd683f..e683b14ed7bc0284fbbe93dedf6ab8c0 this.level().getProfiler().pop(); this.updateActivity(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 2280004638fd19ed018cb3e77d53a018b34ec516..ba630beb18830e92432669f643dfd4cf8d2386fb 100644 +index 2b43337ac63d051718a2074fcc46e128a1d65129..b261acfaf1d36e9299dc490752e5a503b46c2a11 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -108,11 +108,30 @@ public class Zombie extends Monster { @@ -5122,7 +5122,7 @@ index cd789c235acf740ec29c30b180e7fbe1a140caa9..edaaaf0ecc412504b32fe7481f95e594 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 77ef27f9254235180a8596c6c8c4af750dc759d1..220e663d7b1e134845e8d9b52ae104b77fb29c46 100644 +index 4632eb883e9f5efde520ee543bcad25827c0da2c..df37da354b5ffffc484a8660949c8969a5b3acc1 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -603,6 +603,15 @@ public class CraftEventFactory { diff --git a/patches/server/0010-Configurable-entity-base-attributes.patch b/patches/server/0010-Configurable-entity-base-attributes.patch index 14f2f2948..63b047fbe 100644 --- a/patches/server/0010-Configurable-entity-base-attributes.patch +++ b/patches/server/0010-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5d2d310da657963b830efa7de2486180736613f0..5ffab39e5159a7eb6360fd26043887da50936130 100644 +index 5a1f7466ddbce4c889dc5d0c1fa53f212d20c5be..34cdef4288f78c135a661d8900492bda7ac3c614 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -168,7 +168,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4..8211c152e6f4232e82e452b08047e457 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a4f2e5bb14ef28191a4955578e43ee856ab924b1..df19c74439e8855410446201135a997efcc88c24 100644 +index ae97b6a5aa43889e48a422c9b1692308b7535b21..a6086a7b7935c2ae83e90857d09b77115284e12a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -313,6 +313,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1345,7 +1345,7 @@ index d34892ac85b08f017221c5bb98c7442a8017afbe..d7d16e091f25db68d22b0609f5a16360 this.setHealth(this.getMaxHealth()); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 93d7cd8fe60b0c0bc3620bca2fe2cfbbee2e9421..472c271352aa80c6af497c8b913c034afd2f65a6 100644 +index 6bc2d7d44a4c4dbf3163fd53300e8af6aacede35..cf4175e1e0a457e459e1de23417a8c7cec9f285c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -68,6 +68,12 @@ public class Spider extends Monster { @@ -1480,7 +1480,7 @@ index e683b14ed7bc0284fbbe93dedf6ab8c0423e0764..28c400e1d8b56d1dd91d41a30b12543b protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index ba630beb18830e92432669f643dfd4cf8d2386fb..ea6ec8eae2306542a4d6b0b463b8d10abc0d0b37 100644 +index b261acfaf1d36e9299dc490752e5a503b46c2a11..6eda16520bc7fdd577ac7b223e3701858eaa48c5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -125,6 +125,12 @@ public class Zombie extends Monster { @@ -1496,7 +1496,7 @@ index ba630beb18830e92432669f643dfd4cf8d2386fb..ea6ec8eae2306542a4d6b0b463b8d10a @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -607,7 +613,7 @@ public class Zombie extends Monster { +@@ -604,7 +610,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { diff --git a/patches/server/0015-Configurable-server-mod-name.patch b/patches/server/0015-Configurable-server-mod-name.patch index a352f5057..2a7720eab 100644 --- a/patches/server/0015-Configurable-server-mod-name.patch +++ b/patches/server/0015-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7910506ea405498826a3150af131f5b0aac4b577..7ed60bb2e85a3a2664eb3abb6d1a9196948ad197 100644 +index 17d81fe18dc859675d9d57fd8f739639bc3d4cfb..72b67696bc7d268b2fece68325963d25afb1ac26 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1950,7 +1950,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index ea0d9335446b20073b9aafb9de453097355db79c..499646ad26d148953abf241d90e053870fedb708 100644 +index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d24c0c163 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -64,6 +64,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -34,7 +34,7 @@ index ea0d9335446b20073b9aafb9de453097355db79c..499646ad26d148953abf241d90e05387 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -372,7 +378,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -371,7 +377,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public boolean hurt(DamageSource source, float amount) { @@ -52,7 +52,7 @@ index ea0d9335446b20073b9aafb9de453097355db79c..499646ad26d148953abf241d90e05387 return false; } else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { return false; -@@ -580,6 +595,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -579,6 +594,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public void setItem(ItemStack stack) { this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate diff --git a/patches/server/0065-Configurable-jockey-options.patch b/patches/server/0065-Configurable-jockey-options.patch index cdc59cb4e..7b7b2d3e3 100644 --- a/patches/server/0065-Configurable-jockey-options.patch +++ b/patches/server/0065-Configurable-jockey-options.patch @@ -57,7 +57,7 @@ index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c24 return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index ea6ec8eae2306542a4d6b0b463b8d10abc0d0b37..ada1f9f9bf8770c48ff25d562cf84cb04be17ca2 100644 +index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc751981f8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -131,6 +131,18 @@ public class Zombie extends Monster { @@ -79,7 +79,7 @@ index ea6ec8eae2306542a4d6b0b463b8d10abc0d0b37..ada1f9f9bf8770c48ff25d562cf84cb0 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -545,19 +557,20 @@ public class Zombie extends Monster { +@@ -542,19 +554,20 @@ public class Zombie extends Monster { } if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) { @@ -106,7 +106,7 @@ index ea6ec8eae2306542a4d6b0b463b8d10abc0d0b37..ada1f9f9bf8770c48ff25d562cf84cb0 Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level()); if (entitychicken1 != null) { -@@ -567,6 +580,7 @@ public class Zombie extends Monster { +@@ -564,6 +577,7 @@ public class Zombie extends Monster { this.startRiding(entitychicken1); world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } diff --git a/patches/server/0095-Configurable-daylight-cycle.patch b/patches/server/0095-Configurable-daylight-cycle.patch index d4b31fb83..669937c82 100644 --- a/patches/server/0095-Configurable-daylight-cycle.patch +++ b/patches/server/0095-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd88 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 8c3712030d2421f014bf757dccc5cdfeeb1f9d23..8c63e089baaed5d99df05db34f53886f6e568424 100644 +index b783a77032b108aa7cb50b0ce15abee4f3d06740..dd02ae5af707c8335a296e66b0f55e960c8e86bc 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1778,7 +1778,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -97,7 +97,7 @@ index c026ae0e9b577bedcba5d4093b83889bcb1b0ad4..3c382484dcf1205890a2f284ab27b972 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1768,21 +1768,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; } : this::haveTime); -@@ -1332,7 +1332,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1649,7 +1649,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -246,7 +246,7 @@ index 3c382484dcf1205890a2f284ab27b9722ffd5c35..1089238297ee7d129d71553205574f54 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1840,17 +1840,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2862,40 +2862,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop