From 97f7fe8198426e2c02347c7eb56153c7052d438c Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 6 Nov 2020 10:07:06 +0000 Subject: [PATCH] Added support for RGB color codes --- .../command/commands/CommandEnchantinfo.java | 5 +++-- .../ecoenchants/display/EnchantDisplay.java | 11 +++++----- .../ecoenchants/enchantments/EcoEnchant.java | 5 +++-- .../enchantments/meta/EnchantmentRarity.java | 3 ++- .../com/willfp/ecoenchants/loader/Loader.java | 5 +++-- .../willfp/ecoenchants/util/StringUtils.java | 22 ++++++++++++++++++- 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java index abc447ae..ea846241 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java @@ -7,6 +7,7 @@ import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.util.StringUtils; import org.apache.commons.lang.WordUtils; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -77,7 +78,7 @@ public final class CommandEnchantinfo extends AbstractCommand { if(allConflicts.length() >= 2) { allConflicts = allConflicts.substring(0, allConflicts.length() -2); } else { - allConflicts = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-conflicts")); + allConflicts = StringUtils.translate(ConfigManager.getLang().getString("no-conflicts")); } Set targets = enchantment.getTarget(); @@ -110,7 +111,7 @@ public final class CommandEnchantinfo extends AbstractCommand { if(allTargets.length() >= 2) { allTargets = allTargets.substring(0, allTargets.length() - 2); } else { - allTargets = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-targets")); + allTargets = StringUtils.translate(ConfigManager.getLang().getString("no-targets")); } String maxLevel = String.valueOf(enchantment.getMaxLevel()); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java b/Plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java index f3beadd4..f115a0c8 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java @@ -7,6 +7,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; import com.willfp.ecoenchants.util.NumberUtils; +import com.willfp.ecoenchants.util.StringUtils; import org.bukkit.ChatColor; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; @@ -73,11 +74,11 @@ public final class EnchantDisplay { * Update config values */ public static void update() { - descriptionColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("description-color")); - curseColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("curse-color")); - specialColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("special-color")); - artifactColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("artifact-color")); - normalColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("not-curse-color")); + descriptionColor = StringUtils.translate(ConfigManager.getLang().getString("description-color")); + curseColor = StringUtils.translate(ConfigManager.getLang().getString("curse-color")); + specialColor = StringUtils.translate(ConfigManager.getLang().getString("special-color")); + artifactColor = StringUtils.translate(ConfigManager.getLang().getString("artifact-color")); + normalColor = StringUtils.translate(ConfigManager.getLang().getString("not-curse-color")); useNumerals = ConfigManager.getConfig().getBool("lore.use-numerals"); numbersThreshold = ConfigManager.getConfig().getInt("lore.use-numbers-above-threshold"); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index 01e3400a..e153950d 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -5,6 +5,7 @@ import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.config.configs.EnchantmentConfig; import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; import com.willfp.ecoenchants.enchantments.util.Watcher; +import com.willfp.ecoenchants.util.StringUtils; import com.willfp.ecoenchants.util.interfaces.Registerable; import com.willfp.ecoenchants.util.optional.Prerequisite; import net.md_5.bungee.api.ChatColor; @@ -82,8 +83,8 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist canGetFromVillager = config.getBool(EcoEnchants.OBTAINING_LOCATION + "villager"); canGetFromLoot = config.getBool(EcoEnchants.OBTAINING_LOCATION + "loot"); maxLvl = config.getInt(EcoEnchants.GENERAL_LOCATION + "maximum-level", 1); - name = ChatColor.translateAlternateColorCodes('&', config.getString("name")); - description = ChatColor.translateAlternateColorCodes('&', config.getString("description")); + name = StringUtils.translate(config.getString("name")); + description = StringUtils.translate(config.getString("description")); target.clear(); targetMaterials.clear(); target.addAll(config.getTargets()); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentRarity.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentRarity.java index 0aa625f7..e3654e73 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentRarity.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentRarity.java @@ -1,6 +1,7 @@ package com.willfp.ecoenchants.enchantments.meta; import com.willfp.ecoenchants.config.ConfigManager; +import com.willfp.ecoenchants.util.StringUtils; import com.willfp.ecoenchants.util.interfaces.Registerable; import org.bukkit.ChatColor; @@ -128,7 +129,7 @@ public class EnchantmentRarity implements Registerable { double lootProbability = ConfigManager.getRarity().getDouble("rarities." + rarity + ".loot-probability"); String customColor = null; if(ConfigManager.getRarity().getBool("rarities." + rarity + ".custom-color.enabled")) { - customColor = ChatColor.translateAlternateColorCodes('&', ConfigManager.getRarity().getString("rarities." + rarity + ".custom-color.color")); + customColor = StringUtils.translate(ConfigManager.getRarity().getString("rarities." + rarity + ".custom-color.color")); } new EnchantmentRarity(name, probability, minimumLevel, villagerProbability, lootProbability, customColor).register(); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java index 97b8fa73..b29b183b 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java @@ -44,6 +44,7 @@ import com.willfp.ecoenchants.nms.Cooldown; import com.willfp.ecoenchants.nms.RepairCost; import com.willfp.ecoenchants.nms.TridentStack; import com.willfp.ecoenchants.util.Logger; +import com.willfp.ecoenchants.util.StringUtils; import com.willfp.ecoenchants.util.UpdateChecker; import com.willfp.ecoenchants.util.interfaces.EcoRunnable; import com.willfp.ecoenchants.util.optional.Prerequisite; @@ -213,9 +214,9 @@ public class Loader { Logger.info(EcoEnchants.getAll().size() + " Enchantments Loaded:"); EcoEnchants.getAll().forEach((ecoEnchant -> { if(ecoEnchant.getType().equals(EcoEnchant.EnchantmentType.SPECIAL)) { - Logger.info(ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("special-color")) + "- " + ecoEnchant.getName() + ": " + ecoEnchant.getKey().toString()); + Logger.info(StringUtils.translate(ConfigManager.getLang().getString("special-color")) + "- " + ecoEnchant.getName() + ": " + ecoEnchant.getKey().toString()); } else if(ecoEnchant.getType().equals(EcoEnchant.EnchantmentType.ARTIFACT)) { - Logger.info(ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("artifact-color")) + "- " + ecoEnchant.getName() + ": " + ecoEnchant.getKey().toString()); + Logger.info(StringUtils.translate(ConfigManager.getLang().getString("artifact-color")) + "- " + ecoEnchant.getName() + ": " + ecoEnchant.getKey().toString()); } else { Logger.info("- " + ecoEnchant.getName() + ": " + ecoEnchant.getKey().toString()); } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java index 715019b4..ae3a8b38 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java @@ -2,8 +2,28 @@ package com.willfp.ecoenchants.util; import net.md_5.bungee.api.ChatColor; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static net.md_5.bungee.api.ChatColor.COLOR_CHAR; + public class StringUtils { public static String translate(String message){ - return ChatColor.translateAlternateColorCodes('&', message); + return ChatColor.translateAlternateColorCodes('&', translateHexColorCodes("&#", "", message)); + } + + private static String translateHexColorCodes(String startTag, String endTag, String message) { + Pattern hexPattern = Pattern.compile(startTag + "([A-Fa-f0-9]{6})" + endTag); + Matcher matcher = hexPattern.matcher(message); + StringBuffer buffer = new StringBuffer(message.length() + 4 * 8); + while(matcher.find()) { + String group = matcher.group(1); + matcher.appendReplacement(buffer, COLOR_CHAR + "x" + + COLOR_CHAR + group.charAt(0) + COLOR_CHAR + group.charAt(1) + + COLOR_CHAR + group.charAt(2) + COLOR_CHAR + group.charAt(3) + + COLOR_CHAR + group.charAt(4) + COLOR_CHAR + group.charAt(5)); + } + + return matcher.appendTail(buffer).toString(); } }