diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java index 70380803f..260610da2 100644 --- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java +++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java @@ -36,7 +36,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.SetEntityLinkSeri import org.cloudburstmc.protocol.bedrock.codec.v390.serializer.PlayerSkinSerializer_v390; import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventoryContentSerializer_v407; import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventorySlotSerializer_v407; -import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.ItemStackRequestSerializer_v407; +import org.cloudburstmc.protocol.bedrock.codec.v422.serializer.FilterTextSerializer_v422; import org.cloudburstmc.protocol.bedrock.codec.v486.serializer.BossEventSerializer_v486; import org.cloudburstmc.protocol.bedrock.codec.v554.serializer.TextSerializer_v554; import org.cloudburstmc.protocol.bedrock.codec.v557.serializer.SetEntityDataSerializer_v557; @@ -124,6 +124,14 @@ class CodecProcessor { } }; + private static final BedrockPacketSerializer FILTER_TEXT = new FilterTextSerializer_v422() { + @Override + public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, FilterTextPacket packet) { + packet.setText(helper.readStringMaxLen(buffer, 512)); + packet.setFromServer(buffer.readBoolean()); + } + }; + private static final BedrockPacketSerializer COMMAND_REQUEST_SERIALIZER = new CommandRequestSerializer_v567() { @Override public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, CommandRequestPacket packet) { @@ -309,7 +317,7 @@ class CodecProcessor { // Ignored bidirectional packets codecBuilder.updateSerializer(TickSyncPacket.class, IGNORED_SERIALIZER); } - + codecBuilder.updateSerializer(FilterTextPacket.class, FILTER_TEXT); codecBuilder.updateSerializer(CommandRequestPacket.class, COMMAND_REQUEST_SERIALIZER); codecBuilder.updateSerializer(SetPlayerInventoryOptionsPacket.class, SET_PLAYER_INVENTORY_OPTIONS_SERIALIZER); if (codec.getProtocolVersion() >= 685) { diff --git a/core/src/main/java/org/geysermc/geyser/network/PacketCooldownManager.java b/core/src/main/java/org/geysermc/geyser/network/PacketCooldownManager.java index 3fdbcf1d0..a2c91e638 100644 --- a/core/src/main/java/org/geysermc/geyser/network/PacketCooldownManager.java +++ b/core/src/main/java/org/geysermc/geyser/network/PacketCooldownManager.java @@ -24,6 +24,13 @@ public class PacketCooldownManager { setPacketCooldown(TextPacket.class, 1000, 50); setPacketCooldown(CommandRequestPacket.class, 1000, 50); setPacketCooldown(ModalFormResponsePacket.class, 1000, 50); + setPacketCooldown(BlockEntityDataPacket.class, 1000, 40); + setPacketCooldown(SetLocalPlayerAsInitializedPacket.class, 1000, 40); + setPacketCooldown(BlockPickRequestPacket.class, 1000, 40); + setPacketCooldown(EntityPickRequestPacket.class, 1000, 40); + setPacketCooldown(BookEditPacket.class, 1000, 40); + setPacketCooldown(FilterTextPacket.class, 1000, 40); + setPacketCooldown(LecternUpdatePacket.class, 1000, 10); } public void setPacketCooldown(Class packetClass, int cooldownMillis, int maxCount) {