diff --git a/eco-api/src/main/java/com/willfp/eco/util/StringUtils.java b/eco-api/src/main/java/com/willfp/eco/util/StringUtils.java index 5090f052..73bbc0e6 100644 --- a/eco-api/src/main/java/com/willfp/eco/util/StringUtils.java +++ b/eco-api/src/main/java/com/willfp/eco/util/StringUtils.java @@ -1,6 +1,7 @@ package com.willfp.eco.util; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.willfp.eco.core.Prerequisite; import com.willfp.eco.core.integrations.placeholder.PlaceholderManager; import lombok.experimental.UtilityClass; @@ -19,11 +20,17 @@ import java.awt.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static net.md_5.bungee.api.ChatColor.BOLD; import static net.md_5.bungee.api.ChatColor.COLOR_CHAR; +import static net.md_5.bungee.api.ChatColor.ITALIC; +import static net.md_5.bungee.api.ChatColor.MAGIC; +import static net.md_5.bungee.api.ChatColor.STRIKETHROUGH; +import static net.md_5.bungee.api.ChatColor.UNDERLINE; /** * Utilities / API methods for strings. @@ -61,6 +68,17 @@ public class StringUtils { .hexColors() .build(); + /** + * Color map. + */ + private static final Map COLOR_MAP = new ImmutableMap.Builder() + .put("&l", BOLD) + .put("&o", ITALIC) + .put("&n", UNDERLINE) + .put("&m", STRIKETHROUGH) + .put("&k", MAGIC) + .build(); + /** * Format a list of strings. *

@@ -293,26 +311,12 @@ public class StringUtils { @NotNull final Color end) { String processedString = string; List modifiers = new ArrayList<>(); - if (processedString.contains("&l")) { - modifiers.add(ChatColor.BOLD); + for (Map.Entry entry : COLOR_MAP.entrySet()) { + if (processedString.contains(entry.getKey())) { + modifiers.add(entry.getValue()); + } + processedString = processedString.replace(entry.getKey(), ""); } - if (processedString.contains("&o")) { - modifiers.add(ChatColor.ITALIC); - } - if (processedString.contains("&n")) { - modifiers.add(ChatColor.UNDERLINE); - } - if (processedString.contains("&m")) { - modifiers.add(ChatColor.STRIKETHROUGH); - } - if (processedString.contains("&k")) { - modifiers.add(ChatColor.MAGIC); - } - processedString = processedString.replace("&l", ""); - processedString = processedString.replace("&o", ""); - processedString = processedString.replace("&n", ""); - processedString = processedString.replace("&k", ""); - processedString = processedString.replace("&m", ""); StringBuilder stringBuilder = new StringBuilder(); ChatColor[] colors = getGradientColors(start, end, processedString.length());