From 7b8399ab04eddce0633b1f643ce1033c94256acc Mon Sep 17 00:00:00 2001 From: Riley Park Date: Mon, 22 Feb 2021 01:53:53 -0800 Subject: [PATCH] fix #5214 --- Spigot-API-Patches/Adventure.patch | 14 +++++--- ...nt-extended-PaperServerListPingEvent.patch | 32 +++++++++++++++---- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Spigot-API-Patches/Adventure.patch b/Spigot-API-Patches/Adventure.patch index f00d55cc9..5eb23c4be 100644 --- a/Spigot-API-Patches/Adventure.patch +++ b/Spigot-API-Patches/Adventure.patch @@ -2181,7 +2181,11 @@ diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/sr index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java +++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -@@ -0,0 +0,0 @@ public class ServerListPingEvent extends ServerEvent implements Iterable +@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull; + * checked and removed by {@link #iterator() iterating} over this event. + */ + public class ServerListPingEvent extends ServerEvent implements Iterable { ++ private static final net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer LEGACY_SECTION_SERIALIZER = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.builder().useUnusualXRepeatedCharacterHexFormat().build(); // Paper private static final int MAGIC_PLAYER_COUNT = Integer.MIN_VALUE; private static final HandlerList handlers = new HandlerList(); private final InetAddress address; @@ -2196,7 +2200,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Validate.isTrue(numPlayers >= 0, "Cannot have negative number of players online", numPlayers); this.address = address; - this.motd = motd; -+ this.motd = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(motd); // Paper ++ this.motd = LEGACY_SECTION_SERIALIZER.deserialize(motd); // Paper this.numPlayers = numPlayers; this.maxPlayers = maxPlayers; } @@ -2211,7 +2215,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + super(true); + this.numPlayers = MAGIC_PLAYER_COUNT; + this.address = address; -+ this.motd = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(motd); // Paper ++ this.motd = LEGACY_SECTION_SERIALIZER.deserialize(motd); // Paper + this.maxPlayers = maxPlayers; + } + // Paper start @@ -2269,7 +2273,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Deprecated // Paper public String getMotd() { - return motd; -+ return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.motd); // Paper ++ return LEGACY_SECTION_SERIALIZER.serialize(this.motd); // Paper } /** @@ -2281,7 +2285,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Deprecated // Paper public void setMotd(@NotNull String motd) { - this.motd = motd; -+ this.motd = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(motd); // Paper ++ this.motd = LEGACY_SECTION_SERIALIZER.deserialize(motd); // Paper } /** diff --git a/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch b/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch index 059115c5e..129becd7c 100644 --- a/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch +++ b/Spigot-Server-Patches/Implement-extended-PaperServerListPingEvent.patch @@ -71,16 +71,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +import com.google.common.base.MoreObjects; +import com.google.common.base.Strings; +import com.mojang.authlib.GameProfile; ++import io.papermc.paper.adventure.AdventureComponent; ++import java.util.List; ++import java.util.UUID; ++import javax.annotation.Nonnull; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.NetworkManager; +import net.minecraft.server.PacketStatusOutServerInfo; +import net.minecraft.server.ServerPing; -+import org.bukkit.craftbukkit.util.CraftChatMessage; -+ -+import java.util.List; -+import java.util.UUID; -+ -+import javax.annotation.Nonnull; + +public final class StandardPaperServerListPingEventImpl extends PaperServerListPingEventImpl { + @@ -155,7 +153,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + ServerPing ping = new ServerPing(); + + // Description -+ ping.setMOTD(CraftChatMessage.fromString(event.getMotd(), true)[0]); ++ ping.setMOTD(new AdventureComponent(event.motd())); + + // Players + if (!event.shouldHidePlayers()) { @@ -222,6 +220,26 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit end } +diff --git a/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java b/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java ++++ b/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java +@@ -0,0 +0,0 @@ package net.minecraft.server; + + import com.google.gson.Gson; + import com.google.gson.GsonBuilder; ++import io.papermc.paper.adventure.AdventureComponent; // Paper + import java.io.IOException; + + public class PacketStatusOutServerInfo implements Packet { + +- private static final Gson a = (new GsonBuilder()).registerTypeAdapter(ServerPing.ServerData.class, new ServerPing.ServerData.Serializer()).registerTypeAdapter(ServerPing.ServerPingPlayerSample.class, new ServerPing.ServerPingPlayerSample.Serializer()).registerTypeAdapter(ServerPing.class, new ServerPing.Serializer()).registerTypeHierarchyAdapter(IChatBaseComponent.class, new IChatBaseComponent.ChatSerializer()).registerTypeHierarchyAdapter(ChatModifier.class, new ChatModifier.ChatModifierSerializer()).registerTypeAdapterFactory(new ChatTypeAdapterFactory()).create(); ++ private static final Gson a = (new GsonBuilder()).registerTypeAdapter(ServerPing.ServerData.class, new ServerPing.ServerData.Serializer()).registerTypeAdapter(ServerPing.ServerPingPlayerSample.class, new ServerPing.ServerPingPlayerSample.Serializer()).registerTypeAdapter(ServerPing.class, new ServerPing.Serializer()).registerTypeHierarchyAdapter(IChatBaseComponent.class, new IChatBaseComponent.ChatSerializer()).registerTypeHierarchyAdapter(ChatModifier.class, new ChatModifier.ChatModifierSerializer()).registerTypeAdapterFactory(new ChatTypeAdapterFactory()) ++ .registerTypeAdapter(AdventureComponent.class, new AdventureComponent.Serializer()) ++ .create(); + private ServerPing b; + + public PacketStatusOutServerInfo() {} diff --git a/src/main/java/net/minecraft/server/ServerPing.java b/src/main/java/net/minecraft/server/ServerPing.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/ServerPing.java