From 1545cbf338f0e4c8bbda02e9139f6ef6b351ca23 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 31 May 2020 04:08:03 -0400 Subject: [PATCH] Revert "Improve Chat Component Legacy Serialization more" This reverts commit 8e7099030e8c8a7c4924c4848f57913b93124b05. Seems to be having undesired impact, will need to polish more. --- ...ialization-of-colors-from-components.patch | 88 ++----------------- 1 file changed, 5 insertions(+), 83 deletions(-) diff --git a/Spigot-Server-Patches/Fix-serialization-of-colors-from-components.patch b/Spigot-Server-Patches/Fix-serialization-of-colors-from-components.patch index 79812c4ecb..e044e20b68 100644 --- a/Spigot-Server-Patches/Fix-serialization-of-colors-from-components.patch +++ b/Spigot-Server-Patches/Fix-serialization-of-colors-from-components.patch @@ -17,15 +17,6 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/s index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java -@@ -0,0 +0,0 @@ public final class CraftChatMessage { - case 1: - EnumChatFormat format = formatMap.get(match.toLowerCase(java.util.Locale.ENGLISH).charAt(1)); - if (format == EnumChatFormat.RESET) { -- modifier = new ChatModifier(); -+ modifier = new ChatModifier().setColor(format); // Paper - } else if (format.isFormat()) { - switch (format) { - case BOLD: @@ -0,0 +0,0 @@ public final class CraftChatMessage { if (component == null) return ""; StringBuilder out = new StringBuilder(); @@ -35,20 +26,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 for (IChatBaseComponent c : (Iterable) component) { ChatModifier modi = c.getChatModifier(); - out.append(modi.getColor() == null ? defaultColor : modi.getColor()); -+ EnumChatFormat color = modi.getColor(); + if (first) { -+ if (color != null) { -+ out.append(color); -+ } -+ if (!c.getText().isEmpty() || color != null) { -+ first = false; -+ } -+ } else if (!c.getText().isEmpty() || color != null) { -+ if (color != null) { -+ out.append(color); -+ } else if (defaultColor != null) { -+ out.append(defaultColor); ++ if (modi.getColor() != null) { ++ out.append(modi.getColor()); + } ++ first = false; ++ } else { ++ out.append(modi.getColor() == null ? defaultColor : modi.getColor()); + } + // Paper end if (modi.isBold()) { @@ -63,65 +47,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public static IChatBaseComponent fixComponent(IChatBaseComponent component) { -diff --git a/src/test/java/org/bukkit/craftbukkit/CraftChatMessageTest.java b/src/test/java/org/bukkit/craftbukkit/CraftChatMessageTest.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 ---- /dev/null -+++ b/src/test/java/org/bukkit/craftbukkit/CraftChatMessageTest.java -@@ -0,0 +0,0 @@ -+package org.bukkit.craftbukkit; -+ -+import net.minecraft.server.EnumChatFormat; -+import net.minecraft.server.IChatBaseComponent; -+import org.bukkit.ChatColor; -+import org.bukkit.craftbukkit.util.CraftChatMessage; -+import org.bukkit.support.AbstractTestingBase; -+import org.junit.Test; -+ -+import static org.junit.Assert.assertEquals; -+ -+public class CraftChatMessageTest extends AbstractTestingBase { -+ @Test -+ public void testSimpleStrings() { -+ testString("&fFoo", EnumChatFormat.WHITE); -+ testString("Foo", EnumChatFormat.WHITE); -+ testString("Foo&bBar", EnumChatFormat.WHITE); -+ testString("Foo&bBar", EnumChatFormat.AQUA); -+ testString("&fFoo&bBar", EnumChatFormat.WHITE); -+ testString("&rFoo", EnumChatFormat.WHITE); -+ } -+ -+ @Test -+ public void testComponents() { -+ testComponent("Foo&bBar&fBaz", EnumChatFormat.WHITE, create("Foo", "&bBar", "Baz")); -+ testComponent("&fFoo&bBar&fBaz", EnumChatFormat.WHITE, create("", "&fFoo", "&bBar", "Baz")); -+ testComponent("Foo&bBar&fBaz", EnumChatFormat.WHITE, create("", "Foo", "&bBar", "Baz")); -+ testComponent("&fFoo&bBar&fBaz", EnumChatFormat.WHITE, create("&fFoo", "&bBar", "Baz")); -+ testComponent("F&foo&bBar&fBaz", EnumChatFormat.WHITE, create("F&foo", "&bBar", "Baz")); -+ } -+ -+ private IChatBaseComponent create(String txt, String ...rest) { -+ IChatBaseComponent cmp = toComp(txt); -+ for (String s : rest) { -+ cmp.addSibling(toComp(s)); -+ } -+ -+ return cmp; -+ } -+ -+ private IChatBaseComponent toComp(String txt) { -+ return CraftChatMessage.fromString(ChatColor.translateAlternateColorCodes('&', txt))[0]; -+ } -+ -+ private void testString(String expected, EnumChatFormat defColor) { -+ expected = ChatColor.translateAlternateColorCodes('&', expected); -+ IChatBaseComponent cmp = CraftChatMessage.fromStringOrNull(expected); -+ testComponent(expected, defColor, cmp); -+ } -+ -+ private void testComponent(String expected, EnumChatFormat defColor, IChatBaseComponent components) { -+ expected = ChatColor.translateAlternateColorCodes('&', expected); -+ String actual = CraftChatMessage.fromComponent(components, defColor); -+ assertEquals(expected, actual); -+ } -+}