From 2c5e3081107587d9eaa57865066e44effcc72dc6 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 10:05:01 -0700 Subject: [PATCH] re-add bee count patch --- ...ounts-in-beehives-to-Purpur-clients.patch} | 139 +++++++++++------- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 0 ...ng.patch => 0225-Allow-void-trading.patch} | 0 ...h => 0226-Configurable-phantom-size.patch} | 0 ....patch => 0227-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 0 ... => 0229-Lobotomize-stuck-villagers.patch} | 0 ...ion-for-villager-display-trade-item.patch} | 0 ...wner-not-spawning-water-animals-cor.patch} | 0 ...ig-for-mob-last-hurt-by-player-time.patch} | 0 ...=> 0233-Anvil-repair-damage-options.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 0 ...ge.patch => 0238-Stonecutter-damage.patch} | 2 +- ...le-damage-settings-for-magma-blocks.patch} | 0 ...240-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0241-Skeletons-eat-wither-roses.patch} | 0 ...42-Enchantment-Table-Persists-Lapis.patch} | 0 ...ofiler.patch => 0243-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 4 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0246-Config-to-not-let-coral-die.patch} | 0 ...ch => 0247-Add-local-difficulty-api.patch} | 0 ...248-Add-toggle-for-RNG-manipulation.patch} | 0 ...imings.patch => 0249-Remove-Timings.patch} | 28 ++-- ...atch => 0250-Remove-Mojang-Profiler.patch} | 42 +++--- ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0252-Add-Bee-API.patch} | 0 ...-API.patch => 0253-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 0 ...55-Add-skeleton-bow-accuracy-option.patch} | 0 ....patch => 0256-Add-death-screen-API.patch} | 0 ...7-Implement-ram-and-rambar-commands.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 4 +- ...uage-API.patch => 0260-Language-API.patch} | 0 ... 0261-Milk-Keeps-Beneficial-Effects.patch} | 0 ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 4 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0265-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 0 ...t.patch => 0267-Added-got-ram-event.patch} | 0 ... 0268-Log-skipped-entity-s-position.patch} | 0 ....patch => 0269-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 4 +- ...ig-to-remove-explosion-radius-clamp.patch} | 0 ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0274-Add-PreExplodeEvents.patch} | 0 ...5-Improve-output-of-plugins-command.patch} | 0 ...atch => 0276-Add-mending-multiplier.patch} | 0 ....patch => 0277-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0278-Stored-Bee-API.patch} | 0 ...patch => 0279-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0280-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 4 +- ...0284-place-end-crystal-on-any-block.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...6-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 0 66 files changed, 142 insertions(+), 107 deletions(-) rename patches/{unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch => server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (52%) rename patches/server/{0222-Configurable-farmland-trample-height.patch => 0223-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0223-Configurable-player-pickup-exp-delay.patch => 0224-Configurable-player-pickup-exp-delay.patch} (100%) rename patches/server/{0224-Allow-void-trading.patch => 0225-Allow-void-trading.patch} (100%) rename patches/server/{0225-Configurable-phantom-size.patch => 0226-Configurable-phantom-size.patch} (100%) rename patches/server/{0226-Max-joins-per-second.patch => 0227-Max-joins-per-second.patch} (94%) rename patches/server/{0227-Configurable-minimum-demand-for-trades.patch => 0228-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0228-Lobotomize-stuck-villagers.patch => 0229-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0229-Option-for-villager-display-trade-item.patch => 0230-Option-for-villager-display-trade-item.patch} (100%) rename patches/server/{0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (100%) rename patches/server/{0231-Config-for-mob-last-hurt-by-player-time.patch => 0232-Config-for-mob-last-hurt-by-player-time.patch} (100%) rename patches/server/{0232-Anvil-repair-damage-options.patch => 0233-Anvil-repair-damage-options.patch} (100%) rename patches/server/{0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0234-Add-toggle-for-enchant-level-clamping.patch => 0235-Add-toggle-for-enchant-level-clamping.patch} (98%) rename patches/server/{0235-Skip-junit-tests-for-purpur-commands.patch => 0236-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0236-Implement-configurable-search-radius-for-villagers-t.patch => 0237-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0237-Stonecutter-damage.patch => 0238-Stonecutter-damage.patch} (98%) rename patches/server/{0238-Configurable-damage-settings-for-magma-blocks.patch => 0239-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0239-Add-config-for-snow-on-blue-ice.patch => 0240-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0240-Skeletons-eat-wither-roses.patch => 0241-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0241-Enchantment-Table-Persists-Lapis.patch => 0242-Enchantment-Table-Persists-Lapis.patch} (100%) rename patches/server/{0242-Spark-Profiler.patch => 0243-Spark-Profiler.patch} (100%) rename patches/server/{0243-Option-to-disable-kick-for-out-of-order-chat.patch => 0244-Option-to-disable-kick-for-out-of-order-chat.patch} (92%) rename patches/server/{0244-Config-for-sculk-shrieker-can_summon-state.patch => 0245-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0245-Config-to-not-let-coral-die.patch => 0246-Config-to-not-let-coral-die.patch} (100%) rename patches/server/{0246-Add-local-difficulty-api.patch => 0247-Add-local-difficulty-api.patch} (100%) rename patches/server/{0247-Add-toggle-for-RNG-manipulation.patch => 0248-Add-toggle-for-RNG-manipulation.patch} (100%) rename patches/server/{0248-Remove-Timings.patch => 0249-Remove-Timings.patch} (98%) rename patches/server/{0249-Remove-Mojang-Profiler.patch => 0250-Remove-Mojang-Profiler.patch} (98%) rename patches/server/{0250-Add-more-logger-output-for-invalid-movement-kicks.patch => 0251-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0251-Add-Bee-API.patch => 0252-Add-Bee-API.patch} (100%) rename patches/server/{0252-Debug-Marker-API.patch => 0253-Debug-Marker-API.patch} (100%) rename patches/server/{0253-mob-spawning-option-to-ignore-creative-players.patch => 0254-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0254-Add-skeleton-bow-accuracy-option.patch => 0255-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0255-Add-death-screen-API.patch => 0256-Add-death-screen-API.patch} (100%) rename patches/server/{0256-Implement-ram-and-rambar-commands.patch => 0257-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0257-Configurable-block-blast-resistance.patch => 0258-Configurable-block-blast-resistance.patch} (94%) rename patches/server/{0258-Configurable-block-fall-damage-modifiers.patch => 0259-Configurable-block-fall-damage-modifiers.patch} (97%) rename patches/server/{0259-Language-API.patch => 0260-Language-API.patch} (100%) rename patches/server/{0260-Milk-Keeps-Beneficial-Effects.patch => 0261-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0262-Add-log-suppression-for-LibraryLoader.patch => 0263-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/server/{0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0264-Fire-Immunity-API.patch => 0265-Fire-Immunity-API.patch} (100%) rename patches/server/{0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0266-Added-got-ram-event.patch => 0267-Added-got-ram-event.patch} (100%) rename patches/server/{0267-Log-skipped-entity-s-position.patch => 0268-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0268-End-Crystal-Cramming.patch => 0269-End-Crystal-Cramming.patch} (100%) rename patches/server/{0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0270-Add-attribute-clamping-and-armor-limit-config.patch => 0271-Add-attribute-clamping-and-armor-limit-config.patch} (95%) rename patches/server/{0271-Config-to-remove-explosion-radius-clamp.patch => 0272-Config-to-remove-explosion-radius-clamp.patch} (100%) rename patches/server/{0272-bonemealable-sugarcane-cactus-and-netherwart.patch => 0273-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0273-Add-PreExplodeEvents.patch => 0274-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0274-Improve-output-of-plugins-command.patch => 0275-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0275-Add-mending-multiplier.patch => 0276-Add-mending-multiplier.patch} (100%) rename patches/server/{0276-Make-GUI-Great-Again.patch => 0277-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0277-Stored-Bee-API.patch => 0278-Stored-Bee-API.patch} (100%) rename patches/server/{0278-Shears-can-defuse-TNT.patch => 0279-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0279-Explorer-Map-API.patch => 0280-Explorer-Map-API.patch} (100%) rename patches/server/{0280-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0281-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0282-Add-option-for-always-showing-item-in-player-death-m.patch => 0283-Add-option-for-always-showing-item-in-player-death-m.patch} (95%) rename patches/server/{0283-place-end-crystal-on-any-block.patch => 0284-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0284-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0285-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0285-register-minecraft-debug-commands.patch => 0286-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0286-Configurable-villager-search-radius.patch => 0287-Configurable-villager-search-radius.patch} (100%) 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