From a253e16c348f3607aaa5e860b6dd50267a1f5f6f Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Thu, 24 Jun 2021 13:57:03 +0100 Subject: Add hex support - Closes #171 --- .../quests/bukkit/command/QuestsCommand.java | 2 +- .../quests/bukkit/config/BukkitQuestsLoader.java | 14 ++---- .../bukkit/hook/itemgetter/ItemGetterLatest.java | 13 ++---- .../bukkit/hook/itemgetter/ItemGetter_1_13.java | 11 ++--- .../hook/itemgetter/ItemGetter_Late_1_8.java | 11 ++--- .../bukkit/hook/papi/QuestsPlaceholders.java | 2 +- .../quests/bukkit/menu/CancelQMenu.java | 2 +- .../quests/bukkit/menu/CategoryQMenu.java | 2 +- .../quests/bukkit/menu/QuestQMenu.java | 2 +- .../quests/bukkit/menu/StartedQMenu.java | 2 +- .../bukkit/menu/element/QuestMenuElement.java | 2 +- .../quests/bukkit/menu/itemstack/QItemStack.java | 2 +- .../questcontroller/NormalQuestController.java | 9 ++-- .../tasktype/type/MobkillingCertainTaskType.java | 4 +- .../type/dependent/CitizensDeliverTaskType.java | 6 +-- .../type/dependent/CitizensInteractTaskType.java | 6 +-- .../leonardobishop/quests/bukkit/util/Chat.java | 40 ---------------- .../quests/bukkit/util/Messages.java | 4 +- .../quests/bukkit/util/chat/Chat.java | 54 ++++++++++++++++++++++ .../quests/bukkit/util/chat/CodedColorAdapter.java | 17 +++++++ .../quests/bukkit/util/chat/ColorAdapter.java | 9 ++++ .../quests/bukkit/util/chat/HexColorAdapter.java | 35 ++++++++++++++ 22 files changed, 150 insertions(+), 99 deletions(-) delete mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Chat.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java (limited to 'bukkit/src/main/java') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java index 488f91f0..d3a9bc5a 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java @@ -1,7 +1,7 @@ package com.leonardobishop.quests.bukkit.command; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.bukkit.util.Messages; import com.leonardobishop.quests.common.config.ConfigProblem; import com.leonardobishop.quests.common.enums.QuestStartResult; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java index e80b30e1..1cd8b789 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java @@ -4,6 +4,7 @@ import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStackRegistry; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.config.ConfigProblem; import com.leonardobishop.quests.common.config.ConfigProblemDescriptions; import com.leonardobishop.quests.common.config.QuestsLoader; @@ -321,11 +322,11 @@ public class BukkitQuestsLoader implements QuestsLoader { List cLoreNormal = config.getStringList(path + ".lore-normal"); List cLoreStarted = config.getStringList(path + ".lore-started"); - List loreNormal = translateColoursInList(cLoreNormal); - List loreStarted = translateColoursInList(cLoreStarted); + List loreNormal = Chat.color(cLoreNormal); + List loreStarted = Chat.color(cLoreStarted); String name; - name = ChatColor.translateAlternateColorCodes('&', cName); + name = Chat.color(cName); ItemStack is = plugin.getItemStack(path, config, ItemGetter.Filter.DISPLAY_NAME, ItemGetter.Filter.LORE, ItemGetter.Filter.ENCHANTMENTS, ItemGetter.Filter.ITEM_FLAGS); @@ -333,11 +334,4 @@ public class BukkitQuestsLoader implements QuestsLoader { return new QItemStack(plugin, name, loreNormal, loreStarted, is); } - private List translateColoursInList(List list) { - List coloured = new ArrayList<>(); - for (String s : list) { - coloured.add(ChatColor.translateAlternateColorCodes('&', s)); - } - return coloured; - } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetterLatest.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetterLatest.java index 4f87c2ac..91c96968 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetterLatest.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetterLatest.java @@ -1,6 +1,6 @@ package com.leonardobishop.quests.bukkit.hook.itemgetter; -import org.bukkit.ChatColor; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; @@ -11,7 +11,6 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -59,19 +58,13 @@ public class ItemGetterLatest implements ItemGetter { // name if (!filters.contains(Filter.DISPLAY_NAME)) { - name = ChatColor.translateAlternateColorCodes('&', cName); + name = Chat.color(cName); ism.setDisplayName(name); } // lore if (!filters.contains(Filter.LORE)) { - List lore = new ArrayList<>(); - if (cLore != null) { - for (String s : cLore) { - lore.add(ChatColor.translateAlternateColorCodes('&', s)); - } - } - ism.setLore(lore); + ism.setLore(Chat.color(cLore)); } // attribute modifiers diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_1_13.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_1_13.java index a645f810..ec77e548 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_1_13.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_1_13.java @@ -1,5 +1,6 @@ package com.leonardobishop.quests.bukkit.hook.itemgetter; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.attribute.Attribute; @@ -55,19 +56,13 @@ public class ItemGetter_1_13 implements ItemGetter { // name if (!filters.contains(Filter.DISPLAY_NAME)) { - name = ChatColor.translateAlternateColorCodes('&', cName); + name = Chat.color(cName); ism.setDisplayName(name); } // lore if (!filters.contains(Filter.LORE)) { - List lore = new ArrayList<>(); - if (cLore != null) { - for (String s : cLore) { - lore.add(ChatColor.translateAlternateColorCodes('&', s)); - } - } - ism.setLore(lore); + ism.setLore(Chat.color(cLore)); } // attribute modifiers diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_Late_1_8.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_Late_1_8.java index ea80deea..a971503f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_Late_1_8.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_Late_1_8.java @@ -1,5 +1,6 @@ package com.leonardobishop.quests.bukkit.hook.itemgetter; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -48,18 +49,12 @@ public class ItemGetter_Late_1_8 implements ItemGetter { // lore if (!filters.contains(Filter.LORE)) { - List lore = new ArrayList<>(); - if (cLore != null) { - for (String s : cLore) { - lore.add(ChatColor.translateAlternateColorCodes('&', s)); - } - } - ism.setLore(lore); + ism.setLore(Chat.color(cLore)); } // name if (!filters.contains(Filter.DISPLAY_NAME)) { - name = ChatColor.translateAlternateColorCodes('&', cName); + name = Chat.color(cName); ism.setDisplayName(name); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java index ad015dc5..fdd3a7d0 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java @@ -2,7 +2,7 @@ package com.leonardobishop.quests.bukkit.hook.papi; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.enums.QuestStartResult; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CancelQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CancelQMenu.java index 3c811bff..51a36dc4 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CancelQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CancelQMenu.java @@ -2,7 +2,7 @@ package com.leonardobishop.quests.bukkit.menu; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.quest.Quest; import org.bukkit.Bukkit; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java index 03693657..a31352f3 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java @@ -6,7 +6,7 @@ import com.leonardobishop.quests.bukkit.menu.element.CategoryMenuElement; import com.leonardobishop.quests.bukkit.menu.element.CustomMenuElement; import com.leonardobishop.quests.bukkit.menu.element.MenuElement; import com.leonardobishop.quests.bukkit.menu.element.SpacerMenuElement; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.bukkit.util.MenuUtils; import com.leonardobishop.quests.bukkit.util.Messages; import com.leonardobishop.quests.common.player.QPlayer; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java index e9c361f0..98cd649b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java @@ -6,7 +6,7 @@ import com.leonardobishop.quests.bukkit.menu.element.CustomMenuElement; import com.leonardobishop.quests.bukkit.menu.element.MenuElement; import com.leonardobishop.quests.bukkit.menu.element.QuestMenuElement; import com.leonardobishop.quests.bukkit.menu.element.SpacerMenuElement; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.bukkit.util.MenuUtils; import com.leonardobishop.quests.common.enums.QuestStartResult; import com.leonardobishop.quests.common.player.QPlayer; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/StartedQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/StartedQMenu.java index cc8df604..8171ac19 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/StartedQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/StartedQMenu.java @@ -2,7 +2,7 @@ package com.leonardobishop.quests.bukkit.menu; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.bukkit.util.MenuUtils; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java index 96f20560..34091013 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java @@ -3,7 +3,7 @@ package com.leonardobishop.quests.bukkit.menu.element; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.enums.QuestStartResult; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java index 52059b29..4275d934 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java @@ -1,7 +1,7 @@ package com.leonardobishop.quests.bukkit.menu.itemstack; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; import com.leonardobishop.quests.common.quest.Quest; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index d32218b6..01a9f7b7 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -9,8 +9,9 @@ import com.leonardobishop.quests.bukkit.api.event.PlayerStopTrackQuestEvent; import com.leonardobishop.quests.bukkit.api.event.PreStartQuestEvent; import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack; -import com.leonardobishop.quests.bukkit.util.Chat; +import com.leonardobishop.quests.bukkit.util.Format; import com.leonardobishop.quests.bukkit.util.Messages; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.enums.QuestStartResult; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; @@ -18,9 +19,7 @@ import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; import com.leonardobishop.quests.common.questcontroller.QuestController; -import com.leonardobishop.quests.bukkit.util.Format; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import java.util.ArrayList; @@ -121,7 +120,7 @@ public class NormalQuestController implements QuestController { Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", displayName)); } for (String s : quest.getStartString()) { - player.sendMessage(ChatColor.translateAlternateColorCodes('&', s)); + player.sendMessage(Chat.color(s)); } } for (Task task : quest.getTasks()) { @@ -216,7 +215,7 @@ public class NormalQuestController implements QuestController { Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessage().replace("{quest}", displayName)); } for (String s : quest.getRewardString()) { - player.sendMessage(ChatColor.translateAlternateColorCodes('&', s)); + player.sendMessage(Chat.color(s)); } } if ((config.getBoolean("options.allow-quest-track") && config.getBoolean("options.quest-autotrack") && !(quest.isRepeatable() && !quest.isCooldownEnabled())) diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java index 1dca3e8b..7a5958a2 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.config.ConfigProblem; import com.leonardobishop.quests.common.config.ConfigProblemDescriptions; import com.leonardobishop.quests.common.player.QPlayer; @@ -10,7 +11,6 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; -import org.bukkit.ChatColor; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -101,7 +101,7 @@ public final class MobkillingCertainTaskType extends BukkitTaskType { boolean validName = false; for (String name : configNames) { - name = ChatColor.translateAlternateColorCodes('&', name); + name = Chat.color(name); if (mob.getCustomName() == null || !mob.getCustomName().equals(name)) { validName = true; break; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java index cc4aafa4..aba6c985 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.config.ConfigProblem; import com.leonardobishop.quests.common.config.ConfigProblemDescriptions; import com.leonardobishop.quests.common.player.QPlayer; @@ -12,7 +13,6 @@ import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; import net.citizensnpcs.api.event.NPCRightClickEvent; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -88,8 +88,8 @@ public final class CitizensDeliverTaskType extends BukkitTaskType { QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest); for (Task task : quest.getTasksOfType(super.getType())) { - if (!ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', String.valueOf(task.getConfigValue("npc-name")))).equals(ChatColor - .stripColor(ChatColor.translateAlternateColorCodes('&', citizenName)))) { + if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name")))) + .equals(Chat.strip(Chat.color(citizenName)))) { return; } if (!TaskUtils.validateWorld(player, task)) continue; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java index 5c6e6be2..73cb195c 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.config.ConfigProblem; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; @@ -10,7 +11,6 @@ import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; import net.citizensnpcs.api.event.NPCRightClickEvent; -import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -49,8 +49,8 @@ public final class CitizensInteractTaskType extends BukkitTaskType { for (Task task : quest.getTasksOfType(super.getType())) { if (!TaskUtils.validateWorld(event.getClicker(), task)) continue; - if (!ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', String.valueOf(task.getConfigValue("npc-name")))).equals(ChatColor - .stripColor(ChatColor.translateAlternateColorCodes('&', event.getNPC().getName())))) { + if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name")))) + .equals(Chat.strip(Chat.color(event.getNPC().getName())))) { return; } TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Chat.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Chat.java deleted file mode 100644 index 36fe0d2d..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Chat.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.leonardobishop.quests.bukkit.util; - -import com.leonardobishop.quests.common.config.ConfigProblem; -import org.bukkit.ChatColor; - -import java.util.ArrayList; -import java.util.List; - -public class Chat { - - public static String color(String s) { - return ChatColor.translateAlternateColorCodes('&', s); - } - - public static List color(List s) { - if (s == null || s.size() == 0) return s; - - List colored = new ArrayList<>(); - for (String line : s) { - colored.add(ChatColor.translateAlternateColorCodes('&', line)); - } - return colored; - } - - public static String strip(String s) { - return ChatColor.stripColor(s); - } - - public static ChatColor matchConfigProblemToColor(ConfigProblem.ConfigProblemType configProblem) { - switch (configProblem) { - case ERROR: - return ChatColor.RED; - case WARNING: - return ChatColor.YELLOW; - default: - return ChatColor.WHITE; - } - } - -} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java index be99920e..be7a727b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java @@ -1,7 +1,7 @@ package com.leonardobishop.quests.bukkit.util; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import org.bukkit.ChatColor; +import com.leonardobishop.quests.bukkit.util.chat.Chat; //TODO refactor this public enum Messages { @@ -75,7 +75,7 @@ public enum Messages { if (plugin.getConfig().contains(path)) { String message = plugin.getQuestsConfig().getString(path); if (message != null) { - return ChatColor.translateAlternateColorCodes('&', message); + return Chat.color(message); } } return path; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java new file mode 100644 index 00000000..a2125a74 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java @@ -0,0 +1,54 @@ +package com.leonardobishop.quests.bukkit.util.chat; + +import com.leonardobishop.quests.common.config.ConfigProblem; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; + +import java.util.ArrayList; +import java.util.List; + +public class Chat { + + private static final ColorAdapter colorAdapter; + + static { + String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];; + if (version.startsWith("v1_7") || version.startsWith("v1_8") || version.startsWith("v1_9") + || version.startsWith("v1_10") || version.startsWith("v1_11") || version.startsWith("v1_12") + || version.startsWith("v1_13") || version.startsWith("v1_14") || version.startsWith("v1_15")) { + colorAdapter = new CodedColorAdapter(); + } else { + colorAdapter = new HexColorAdapter(); + } + } + + public static String color(String s) { + return colorAdapter.color(s); + } + + public static List color(List s) { + if (s == null || s.size() == 0) return s; + + List colored = new ArrayList<>(); + for (String line : s) { + colored.add(colorAdapter.color(line)); + } + return colored; + } + + public static String strip(String s) { + return colorAdapter.strip(s); + } + + public static ChatColor matchConfigProblemToColor(ConfigProblem.ConfigProblemType configProblem) { + switch (configProblem) { + case ERROR: + return ChatColor.RED; + case WARNING: + return ChatColor.YELLOW; + default: + return ChatColor.WHITE; + } + } + +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java new file mode 100644 index 00000000..f71ffaa1 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java @@ -0,0 +1,17 @@ +package com.leonardobishop.quests.bukkit.util.chat; + +import org.bukkit.ChatColor; + +public class CodedColorAdapter implements ColorAdapter { + + @Override + public String color(String s) { + return ChatColor.translateAlternateColorCodes('&', s); + } + + @Override + public String strip(String s) { + return ChatColor.stripColor(s); + } + +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java new file mode 100644 index 00000000..5d0ff6bc --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java @@ -0,0 +1,9 @@ +package com.leonardobishop.quests.bukkit.util.chat; + +public interface ColorAdapter { + + String color(String s); + + String strip(String s); + +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java new file mode 100644 index 00000000..d506b466 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java @@ -0,0 +1,35 @@ +package com.leonardobishop.quests.bukkit.util.chat; + +import net.md_5.bungee.api.ChatColor; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class HexColorAdapter implements ColorAdapter { + + private static final Pattern HEX_PATTERN = Pattern.compile("&#([A-Fa-f0-9]{6})"); + + @Override + public String color(String s) { + Matcher matcher = HEX_PATTERN.matcher(s); + while (matcher.find()) { + final ChatColor hexColor; + try { + hexColor = ChatColor.of(matcher.group().substring(1)); + } catch (IllegalArgumentException ex) { + continue; + } + final String before = s.substring(0, matcher.start()); + final String after = s.substring(matcher.end()); + s = before + hexColor + after; + matcher = HEX_PATTERN.matcher(s); + } + return ChatColor.translateAlternateColorCodes('&', s); + } + + @Override + public String strip(String s) { + return ChatColor.stripColor(s); + } + +} -- cgit v1.2.3-70-g09d2