--- a/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java +++ b/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java @@ -12,7 +12,7 @@ public record ServerboundCustomPayloadPacket(CustomPacketPayload payload) implements Packet { private static final int MAX_PAYLOAD_SIZE = 32767; - private static final Map> KNOWN_TYPES = ImmutableMap.builder().put(BrandPayload.ID, BrandPayload::new).build(); + private static final Map> KNOWN_TYPES = ImmutableMap.>builder().put(BrandPayload.ID, BrandPayload::new).build(); // CraftBukkit - decompile error public ServerboundCustomPayloadPacket(PacketDataSerializer packetdataserializer) { this(readPayload(packetdataserializer.readResourceLocation(), packetdataserializer)); @@ -24,12 +24,13 @@ return (CustomPacketPayload) (packetdataserializer_a != null ? (CustomPacketPayload) packetdataserializer_a.apply(packetdataserializer) : readUnknownPayload(minecraftkey, packetdataserializer)); } - private static DiscardedPayload readUnknownPayload(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) { + private static UnknownPayload readUnknownPayload(MinecraftKey minecraftkey, PacketDataSerializer packetdataserializer) { // CraftBukkit int i = packetdataserializer.readableBytes(); if (i >= 0 && i <= 32767) { - packetdataserializer.skipBytes(i); - return new DiscardedPayload(minecraftkey); + // CraftBukkit start + return new UnknownPayload(minecraftkey, packetdataserializer.readBytes(i)); + // CraftBukkit end } else { throw new IllegalArgumentException("Payload may not be larger than 32767 bytes"); } @@ -44,4 +45,14 @@ public void handle(ServerCommonPacketListener servercommonpacketlistener) { servercommonpacketlistener.handleCustomPayload(this); } + + // CraftBukkit start + public record UnknownPayload(MinecraftKey id, io.netty.buffer.ByteBuf data) implements CustomPacketPayload { + + @Override + public void write(PacketDataSerializer packetdataserializer) { + packetdataserializer.writeBytes(data); + } + } + // CraftBukkit end }