diff --git a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java index b404d44a2..ffd2a7a97 100644 --- a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java +++ b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java @@ -1,10 +1,12 @@ package fr.xephi.authme.util.message; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class MiniMessageUtils { private static final MiniMessage miniMessage = MiniMessage.miniMessage(); @@ -26,8 +28,50 @@ public static String parseMiniMessageToLegacy(String message) { * @return The parsed message. */ public static Component parseMiniMessage(String message) { - TextComponent component = LegacyComponentSerializer.legacySection().deserialize(message); - return miniMessage.deserialize(miniMessage.serialize(component)); + return miniMessage.deserialize(convertLegacyToMiniMessage(message, false, 'ยง', true)); + } + + private static String convertLegacyToMiniMessage(String legacy, boolean concise, char charCode, boolean rgb) { + String miniMessage = legacy.replaceAll(Pattern.quote(String.valueOf(charCode)) + "0", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "1", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "2", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "3", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "4", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "5", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "6", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "7", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "8", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "9", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "a", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "b", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "c", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "d", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "e", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "f", ""); + + if (concise) { + miniMessage = miniMessage.replaceAll(Pattern.quote(String.valueOf(charCode)) + "n", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "m", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "k", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "o", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "l", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "r", ""); + } else { + miniMessage = miniMessage.replaceAll(Pattern.quote(String.valueOf(charCode)) + "n", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "m", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "k", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "o", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "l", "") + .replaceAll(Pattern.quote(String.valueOf(charCode)) + "r", ""); + } + + if (rgb) { + Pattern pattern = Pattern.compile(Pattern.quote(String.valueOf(charCode)) + "#([0-9a-fA-F]{6})"); + Matcher matcher = pattern.matcher(miniMessage); + miniMessage = matcher.replaceAll("<#$1>"); + } + + return miniMessage; } private MiniMessageUtils() { }