--- 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<ServerCommonPacketListener> {
 
     private static final int MAX_PAYLOAD_SIZE = 32767;
-    private static final Map<MinecraftKey, PacketDataSerializer.a<? extends CustomPacketPayload>> KNOWN_TYPES = ImmutableMap.builder().put(BrandPayload.ID, BrandPayload::new).build();
+    private static final Map<MinecraftKey, PacketDataSerializer.a<? extends CustomPacketPayload>> KNOWN_TYPES = ImmutableMap.<MinecraftKey, PacketDataSerializer.a<? extends CustomPacketPayload>>builder().build(); // CraftBukkit - no special handling
 
     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
 }
