diff --git a/patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 52% rename from patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 39d510ede..527eeff3c 100644 --- a/patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,10 +29,10 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644 +index a34c44ba770ded446b7969a31d3d05016717c13b..e50954e35116ea60b68ae00191771f8d9f78b45d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -434,6 +434,11 @@ public class PurpurConfig { +@@ -418,6 +418,11 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } @@ -44,23 +44,81 @@ index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f746 public static boolean loggerSuppressInitLegacyMaterialError = false; public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; -diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +diff --git a/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java new file mode 100644 -index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409faab8b62e +index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be5577aeef071 --- /dev/null -+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java -@@ -0,0 +1,96 @@ -+package org.purpurmc.purpur.task; ++++ b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java +@@ -0,0 +1,27 @@ ++package org.purpurmc.purpur.network; + -+import com.google.common.io.ByteArrayDataInput; -+import com.google.common.io.ByteArrayDataOutput; -+import com.google.common.io.ByteStreams; -+import io.netty.buffer.Unpooled; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; -+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; ++import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; ++import org.jetbrains.annotations.NotNull; ++ ++public record ClientboundBeehivePayload(BlockPos pos, int numOfBees) implements CustomPacketPayload { ++ public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ClientboundBeehivePayload::write, ClientboundBeehivePayload::new); ++ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_s2c")); ++ ++ public ClientboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { ++ this(friendlyByteBuf.readBlockPos(), friendlyByteBuf.readInt()); ++ } ++ ++ private void write(FriendlyByteBuf friendlyByteBuf) { ++ friendlyByteBuf.writeBlockPos(this.pos); ++ friendlyByteBuf.writeInt(this.numOfBees); ++ } ++ ++ @Override ++ public @NotNull Type type() { ++ return TYPE; ++ } ++} +diff --git a/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java +new file mode 100644 +index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d7194a54d +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java +@@ -0,0 +1,26 @@ ++package org.purpurmc.purpur.network; ++ ++import net.minecraft.core.BlockPos; ++import net.minecraft.network.FriendlyByteBuf; ++import net.minecraft.network.codec.StreamCodec; ++import net.minecraft.network.protocol.common.custom.CustomPacketPayload; ++import net.minecraft.resources.ResourceLocation; ++import org.jetbrains.annotations.NotNull; ++ ++public record ServerboundBeehivePayload(BlockPos pos) implements CustomPacketPayload { ++ public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ServerboundBeehivePayload::write, ServerboundBeehivePayload::new); ++ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_c2s")); ++ ++ public ServerboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { ++ this(friendlyByteBuf.readBlockPos()); ++ } ++ ++ private void write(FriendlyByteBuf friendlyByteBuf) { ++ friendlyByteBuf.writeBlockPos(this.pos); ++ } ++ ++ @Override ++ public @NotNull Type type() { ++ return TYPE; ++ } ++} +diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +new file mode 100644 +index 0000000000000000000000000000000000000000..e20fa234520c42e4d32a2a634fc0a2938904f983 +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +@@ -0,0 +1,66 @@ ++package org.purpurmc.purpur.task; ++ ++import io.netty.buffer.Unpooled; ++import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntity; @@ -71,10 +129,10 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f +import org.bukkit.plugin.PluginBase; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jetbrains.annotations.NotNull; ++import org.purpurmc.purpur.network.ClientboundBeehivePayload; ++import org.purpurmc.purpur.network.ServerboundBeehivePayload; + +public class BeehiveTask implements PluginMessageListener { -+ public static final ResourceLocation BEEHIVE_C2S = new ResourceLocation("purpur", "beehive_c2s"); -+ public static final ResourceLocation BEEHIVE_S2C = new ResourceLocation("purpur", "beehive_s2c"); + + private static BeehiveTask instance; + @@ -91,58 +149,35 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f + } + + public void register() { -+ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString()); -+ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString(), this); ++ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString()); ++ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString(), this); + } + + public void unregister() { -+ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString()); -+ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString()); ++ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString()); ++ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString()); + } + + @Override -+ public void onPluginMessageReceived(@NotNull String channel, Player player, byte[] bytes) { -+ ByteArrayDataInput in = in(bytes); -+ long packedPos = in.readLong(); -+ BlockPos pos = BlockPos.of(packedPos); ++ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] bytes) { ++ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.copiedBuffer(bytes)); ++ ServerboundBeehivePayload payload = ServerboundBeehivePayload.STREAM_CODEC.decode(byteBuf); + + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + + // targeted block info max range specified in client at net.minecraft.client.gui.hud.DebugHud#render -+ if (!pos.getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20 -+ if (serverPlayer.level().getChunkIfLoaded(pos) == null) return; ++ if (!payload.pos().getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20 ++ if (serverPlayer.level().getChunkIfLoaded(payload.pos()) == null) return; + -+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos); ++ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(payload.pos()); + if (!(blockEntity instanceof BeehiveBlockEntity beehive)) { + return; + } + -+ ByteArrayDataOutput out = out(); -+ -+ out.writeInt(beehive.getOccupantCount()); -+ out.writeLong(packedPos); -+ -+ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.wrappedBuffer(out.toByteArray())); -+ serverPlayer.connection.send(new ClientboundCustomPayloadPacket(new CustomPacketPayload() { -+ @Override -+ public void write(final FriendlyByteBuf buf) { -+ buf.writeBytes(byteBuf.copy()); -+ } -+ -+ @Override -+ public ResourceLocation id() { -+ return BEEHIVE_S2C; -+ } -+ })); -+ } -+ -+ @SuppressWarnings("UnstableApiUsage") -+ private static ByteArrayDataOutput out() { -+ return ByteStreams.newDataOutput(); -+ } -+ -+ @SuppressWarnings("UnstableApiUsage") -+ private static ByteArrayDataInput in(byte[] bytes) { -+ return ByteStreams.newDataInput(bytes); ++ ClientboundBeehivePayload customPacketPayload = new ClientboundBeehivePayload(payload.pos(), beehive.getOccupantCount()); ++ FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(Unpooled.buffer()); ++ ClientboundBeehivePayload.STREAM_CODEC.encode(friendlyByteBuf, customPacketPayload); ++ byte[] byteArray = new byte[friendlyByteBuf.readableBytes()]; ++ player.sendPluginMessage(this.plugin, customPacketPayload.type().id().toString(), byteArray); + } +} diff --git a/patches/server/0222-Configurable-farmland-trample-height.patch b/patches/server/0223-Configurable-farmland-trample-height.patch similarity index 100% rename from patches/server/0222-Configurable-farmland-trample-height.patch rename to patches/server/0223-Configurable-farmland-trample-height.patch diff --git a/patches/server/0223-Configurable-player-pickup-exp-delay.patch b/patches/server/0224-Configurable-player-pickup-exp-delay.patch similarity index 100% rename from patches/server/0223-Configurable-player-pickup-exp-delay.patch rename to patches/server/0224-Configurable-player-pickup-exp-delay.patch diff --git a/patches/server/0224-Allow-void-trading.patch b/patches/server/0225-Allow-void-trading.patch similarity index 100% rename from patches/server/0224-Allow-void-trading.patch rename to patches/server/0225-Allow-void-trading.patch diff --git a/patches/server/0225-Configurable-phantom-size.patch b/patches/server/0226-Configurable-phantom-size.patch similarity index 100% rename from patches/server/0225-Configurable-phantom-size.patch rename to patches/server/0226-Configurable-phantom-size.patch diff --git a/patches/server/0226-Max-joins-per-second.patch b/patches/server/0227-Max-joins-per-second.patch similarity index 94% rename from patches/server/0226-Max-joins-per-second.patch rename to patches/server/0227-Max-joins-per-second.patch index f7b4227e2..614606510 100644 --- a/patches/server/0226-Max-joins-per-second.patch +++ b/patches/server/0227-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a34c44ba770ded446b7969a31d3d05016717c13b..f0c3566e6b03c88c0cb53a90d44627d0967d13eb 100644 +index e50954e35116ea60b68ae00191771f8d9f78b45d..64fc2ae0b1f086390614f03dc15aff4037d57d68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -435,8 +435,10 @@ public class PurpurConfig { +@@ -440,8 +440,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0227-Configurable-minimum-demand-for-trades.patch b/patches/server/0228-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0227-Configurable-minimum-demand-for-trades.patch rename to patches/server/0228-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0228-Lobotomize-stuck-villagers.patch b/patches/server/0229-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0228-Lobotomize-stuck-villagers.patch rename to patches/server/0229-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0229-Option-for-villager-display-trade-item.patch b/patches/server/0230-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0229-Option-for-villager-display-trade-item.patch rename to patches/server/0230-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0233-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0232-Anvil-repair-damage-options.patch rename to patches/server/0233-Anvil-repair-damage-options.patch diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch similarity index 98% rename from patches/server/0234-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0235-Add-toggle-for-enchant-level-clamping.patch index 58a27803e..2d498458b 100644 --- a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch @@ -59,7 +59,7 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f0c3566e6b03c88c0cb53a90d44627d0967d13eb..c5dd0979f5bce259b920c47d974f2bf6b805c045 100644 +index 64fc2ae0b1f086390614f03dc15aff4037d57d68..1e28c96f5b142a28be530dfc24d67b99c3803948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -382,6 +382,7 @@ public class PurpurConfig { diff --git a/patches/server/0235-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0236-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0235-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0236-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0238-Stonecutter-damage.patch similarity index 98% rename from patches/server/0237-Stonecutter-damage.patch rename to patches/server/0238-Stonecutter-damage.patch index 4ccb2b5c4..e12eb7a97 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0238-Stonecutter-damage.patch @@ -128,7 +128,7 @@ index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138fac } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c5dd0979f5bce259b920c47d974f2bf6b805c045..4a1d8b2c412a51e4c29e3846ea9c1bde99346010 100644 +index 1e28c96f5b142a28be530dfc24d67b99c3803948..cadb07b2ec32baa5f509b9da3bfd9044cee19ba4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0240-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0239-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0240-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0241-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0240-Skeletons-eat-wither-roses.patch rename to patches/server/0241-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0242-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0241-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0242-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0242-Spark-Profiler.patch b/patches/server/0243-Spark-Profiler.patch similarity index 100% rename from patches/server/0242-Spark-Profiler.patch rename to patches/server/0243-Spark-Profiler.patch diff --git a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 92% rename from patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch index 2b6c82f54..8064cbf52 100644 --- a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4a1d8b2c412a51e4c29e3846ea9c1bde99346010..f500c3b42a9ba346a0e4305c0169159f847e3457 100644 +index cadb07b2ec32baa5f509b9da3bfd9044cee19ba4..801d269a038e68d428b31f12d372fd11ab552d50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -440,9 +440,11 @@ public class PurpurConfig { +@@ -445,9 +445,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0245-Config-to-not-let-coral-die.patch b/patches/server/0246-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0245-Config-to-not-let-coral-die.patch rename to patches/server/0246-Config-to-not-let-coral-die.patch diff --git a/patches/server/0246-Add-local-difficulty-api.patch b/patches/server/0247-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0246-Add-local-difficulty-api.patch rename to patches/server/0247-Add-local-difficulty-api.patch diff --git a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch similarity index 100% rename from patches/server/0247-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0248-Add-toggle-for-RNG-manipulation.patch diff --git a/patches/server/0248-Remove-Timings.patch b/patches/server/0249-Remove-Timings.patch similarity index 98% rename from patches/server/0248-Remove-Timings.patch rename to patches/server/0249-Remove-Timings.patch index 80ba536b6..a7fb74752 100644 --- a/patches/server/0248-Remove-Timings.patch +++ b/patches/server/0249-Remove-Timings.patch @@ -56,10 +56,10 @@ index 57e76b53e5e314c3e6b8856010f7a84188121582..8c134a642ccaf3530022f2e675a858d7 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99586ddfe2 100644 +index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1480,7 +1480,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1742,21 +1742,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1623,7 +1623,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -242,7 +242,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1819,17 +1819,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2831,40 +2832,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop