diff --git a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java index 93095c193..c8288a2ca 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2025 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -253,6 +253,12 @@ public class MessageTranslator { output.append(c); if (c == ChatColor.ESCAPE) { + // If the string ends with a formatting character, remove and skip + if (i >= finalLegacyString.length() - 1) { + output = output.deleteCharAt(output.length() - 1); + continue; + } + char newColor = finalLegacyString.charAt(i + 1); if (newColor == 'r') { lastColors = new StringBuilder(); diff --git a/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java b/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java index be7747266..50a9fb334 100644 --- a/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java +++ b/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org + * Copyright (c) 2019-2025 GeyserMC. http://geysermc.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -73,6 +73,9 @@ public class MessageTranslatorTest { messages.put("{\"translate\":\"tt{''{tt\"}", "tt{''{tt"); messages.put("{\"translate\":\"tt{{''}}tt\"}", "tt{{''}}tt"); + messages.put("{\"text\":\"\",\"extra\":[{\"text\":\"Testing end of string\n formatting character§\",\"color\":\"yellow\"}]}", + "§r§eTesting end of string\n§e formatting character"); + MessageTranslator.init(); }