From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 10 Jul 2020 12:43:25 -0500 Subject: [PATCH] ChatColor conveniences diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java index 918a045165cdcde264bc24082b7afebb407271de..e98d6321c5f2cdde91b54f8a74cbcc045eae75a8 100644 --- a/src/main/java/org/bukkit/ChatColor.java +++ b/src/main/java/org/bukkit/ChatColor.java @@ -456,4 +456,77 @@ public enum ChatColor { BY_CHAR.put(color.code, color); } } + + // Purpur start + /** + * Convert legacy string into a string ready to be parsed by MiniMessage + * + * @param str Legacy string + * @return MiniMessage ready string + */ + @NotNull + public static String toMM(@NotNull String str) { + StringBuilder sb = new StringBuilder(str); + java.util.regex.Matcher m = STRIP_COLOR_PATTERN.matcher(sb); + while (m.find()) { + sb.replace(m.start(), m.end(), sb.substring(m.start(), m.end()).toLowerCase()); + } + return sb.toString() + .replace("&0", "") + .replace("&1", "") + .replace("&2", "") + .replace("&3", "") + .replace("&4", "") + .replace("&5", "") + .replace("&6", "") + .replace("&7", "") + .replace("&8", "") + .replace("&9", "") + .replace("&a", "") + .replace("&b", "") + .replace("&c", "") + .replace("&d", "") + .replace("&e", "") + .replace("&f", "") + .replace("&k", "") + .replace("&l", "") + .replace("&m", "") + .replace("&n", "") + .replace("&o", "") + .replace("&r", ""); + } + + @NotNull + public static net.kyori.adventure.text.Component parseMM(@NotNull String string, @Nullable Object... args) { + return net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(String.format(string, args)); + } + + @Deprecated + public static final Pattern HEX_PATTERN = Pattern.compile("(#[A-Fa-f0-9]{6})"); + + @Deprecated + @Nullable + public static String replaceHex(@Nullable String str) { + if (str != null) { + java.util.regex.Matcher matcher = HEX_PATTERN.matcher(str); + while (matcher.find()) { + String group = matcher.group(1); + str = str.replace(group, net.md_5.bungee.api.ChatColor.of(group).toString()); + } + } + return str; + } + + @Deprecated + @Nullable + public static String color(@Nullable String str) { + return color(str, true); + } + + @Deprecated + @Nullable + public static String color(@Nullable String str, boolean parseHex) { + return str != null ? net.md_5.bungee.api.ChatColor.translateAlternateColorCodes('&', parseHex ? replaceHex(str) : str) : str; + } + // Purpur end }