--- a/net/minecraft/network/protocol/game/ClientboundSystemChatPacket.java
+++ b/net/minecraft/network/protocol/game/ClientboundSystemChatPacket.java
@@ -1,3 +1,4 @@
+// mc-dev import
 package net.minecraft.network.protocol.game;
 
 import net.minecraft.network.RegistryFriendlyByteBuf;
@@ -9,20 +10,25 @@
 import net.minecraft.network.protocol.PacketType;
 
 public record ClientboundSystemChatPacket(Component content, boolean overlay) implements Packet<ClientGamePacketListener> {
-    public static final StreamCodec<RegistryFriendlyByteBuf, ClientboundSystemChatPacket> STREAM_CODEC = StreamCodec.composite(
-        ComponentSerialization.TRUSTED_STREAM_CODEC,
-        ClientboundSystemChatPacket::content,
-        ByteBufCodecs.BOOL,
-        ClientboundSystemChatPacket::overlay,
-        ClientboundSystemChatPacket::new
-    );
+
+    public static final StreamCodec<RegistryFriendlyByteBuf, ClientboundSystemChatPacket> STREAM_CODEC = StreamCodec.composite(ComponentSerialization.TRUSTED_STREAM_CODEC, ClientboundSystemChatPacket::content, ByteBufCodecs.BOOL, ClientboundSystemChatPacket::overlay, ClientboundSystemChatPacket::new);
+
+    // Spigot start
+    public ClientboundSystemChatPacket(net.md_5.bungee.api.chat.BaseComponent[] content, boolean overlay) {
+        this(org.bukkit.craftbukkit.util.CraftChatMessage.fromJSON(net.md_5.bungee.chat.ComponentSerializer.toString(content)), overlay);
+    }
+    // Spigot end
+    // Paper start
+    public ClientboundSystemChatPacket(net.kyori.adventure.text.Component content, boolean overlay) {
+        this(io.papermc.paper.adventure.PaperAdventure.asVanilla(content), overlay);
+    }
+    // Paper end
 
     @Override
     public PacketType<ClientboundSystemChatPacket> type() {
         return GamePacketTypes.CLIENTBOUND_SYSTEM_CHAT;
     }
 
-    @Override
     public void handle(ClientGamePacketListener listener) {
         listener.handleSystemChat(this);
     }
