From 511cd52f0240e2fd6b8e203e9ef65953440588a3 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/0005-Adventure.patch | 20 ++++++----- ...nt-extended-PaperServerListPingEvent.patch | 36 ++++++++++++++----- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/Spigot-API-Patches/0005-Adventure.patch b/Spigot-API-Patches/0005-Adventure.patch index 74382ad6cf..83772f2ecd 100644 --- a/Spigot-API-Patches/0005-Adventure.patch +++ b/Spigot-API-Patches/0005-Adventure.patch @@ -2178,10 +2178,14 @@ index 03bfca9d368bbe4b7c1353d52c883e756bf69bda..943d324435350d3f16fad3e21cb472a0 /** diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d9220817b254 100644 +index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..29c5bd1f522310def76bf7b46a5b61463d53ff96 100644 --- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java +++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -@@ -17,15 +17,16 @@ public class ServerListPingEvent extends ServerEvent implements Iterable +@@ -14,18 +14,20 @@ 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,11 +2200,11 @@ index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d922 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; } -@@ -38,14 +39,58 @@ public class ServerListPingEvent extends ServerEvent implements Iterable +@@ -38,14 +40,58 @@ public class ServerListPingEvent extends ServerEvent implements Iterable * @param address the address of the pinger * @param motd the message of the day * @param maxPlayers the max number of players @@ -2211,7 +2215,7 @@ index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d922 + 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 @@ -2259,7 +2263,7 @@ index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d922 /** * Get the address the ping is coming from. -@@ -61,19 +106,23 @@ public class ServerListPingEvent extends ServerEvent implements Iterable +@@ -61,19 +107,23 @@ public class ServerListPingEvent extends ServerEvent implements Iterable * Get the message of the day message. * * @return the message of the day @@ -2269,7 +2273,7 @@ index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d922 + @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 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f46ea9f2bd4a4d9582428325e725d922 + @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/0197-Implement-extended-PaperServerListPingEvent.patch b/Spigot-Server-Patches/0197-Implement-extended-PaperServerListPingEvent.patch index 456e8bb738..db2ab7250a 100644 --- a/Spigot-Server-Patches/0197-Implement-extended-PaperServerListPingEvent.patch +++ b/Spigot-Server-Patches/0197-Implement-extended-PaperServerListPingEvent.patch @@ -60,10 +60,10 @@ index 0000000000000000000000000000000000000000..a2a409e635dde08f7c53e67164b967a0 +} diff --git a/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java new file mode 100644 -index 0000000000000000000000000000000000000000..26ddf92f86fccc2b2562f7abf4788d1ed6b73205 +index 0000000000000000000000000000000000000000..39b236a6319b1f44fbe28bbe43f064be3073e725 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java -@@ -0,0 +1,112 @@ +@@ -0,0 +1,110 @@ +package com.destroystokyo.paper.network; + +import com.destroystokyo.paper.profile.CraftPlayerProfile; @@ -71,16 +71,14 @@ index 0000000000000000000000000000000000000000..26ddf92f86fccc2b2562f7abf4788d1e +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..26ddf92f86fccc2b2562f7abf4788d1e + 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 7875d4c08969b3adc6f95504686cc9fe99e3f29a..d0fad346dd4511722f958a8c0bda6749 } // CraftBukkit end } +diff --git a/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java b/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java +index 50d5fb62efa7c89c7a73ccf072a0e7e433bcc650..f81ed6cd2029bbd8bbf1ddac10851da31273e8dd 100644 +--- a/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java ++++ b/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java +@@ -2,11 +2,14 @@ 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 aa125a52dcdf4f137cfe17c5dc808b17d5e9de0b..ea52e89bd965afbd74f15b0e2974657319c28e4a 100644 --- a/src/main/java/net/minecraft/server/ServerPing.java