summaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2022-06-16 17:19:55 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2022-06-16 17:19:55 +0100
commit9236145bc075e7902cb32a41a86ec705cded1f5c (patch)
treefbe18b3e73b35b9674af34b22cadb8253af426d8 /bukkit
parent252239ebe580e6789210a4fad3761c3e410f7979 (diff)
Use Paper supplied Adventure rather than shading
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/build.gradle36
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminItemsCommandHandler.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetterLatest.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_1_13.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter_Late_1_8.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java25
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CancelQMenu.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/CategoryQMenu.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/StartedQMenu.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java12
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java12
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java24
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java45
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Format.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java22
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/StringUtils.java39
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java70
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java10
24 files changed, 211 insertions, 139 deletions
diff --git a/bukkit/build.gradle b/bukkit/build.gradle
index fa1c3e69..822e17df 100644
--- a/bukkit/build.gradle
+++ b/bukkit/build.gradle
@@ -12,8 +12,8 @@ processResources {
}
repositories {
- // Spigot
- maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
+ // Paper
+ maven { url = 'https://repo.papermc.io/repository/maven-public/' }
// ASkyBlock, BentoBox
maven { url = 'https://repo.codemc.org/repository/maven-public/' }
// uSkyBlock
@@ -48,12 +48,8 @@ repositories {
dependencies {
compileOnly project(':common')
- // Spigot
- compileOnly ('org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT') {
- exclude group: 'net.md-5', module: 'bungeecord-chat'
- exclude group: 'com.google.guava', module: 'guava'
- exclude group: 'org.yaml', module: 'snakeyaml'
- }
+ // Paper
+ compileOnly 'io.papermc.paper:paper-api:1.19-R0.1-SNAPSHOT'
// ASkyBlock
compileOnly ('com.wasteofplastic:askyblock:3.0.9.4') {
exclude group: 'net.milkbowl.vault', module: 'VaultAPI'
@@ -86,15 +82,19 @@ dependencies {
// PlaceholderAPI
compileOnly 'me.clip:placeholderapi:2.11.1'
// EssentialsX
- compileOnly "net.ess3:EssentialsX:2.18.2"
+ compileOnly ('net.ess3:EssentialsX:2.18.2') {
+ transitive = false
+ }
// ShopGUI+
- compileOnly 'com.github.brcdev-minecraft:shopgui-api:master-SNAPSHOT'
+ compileOnly ('com.github.brcdev-minecraft:shopgui-api:master-SNAPSHOT') {
+ transitive = false
+ }
// CoreProtect
compileOnly ('net.coreprotect:coreprotect:2.18.2') {
- exclude group: 'com.sk89q.worldedit', module: 'worldedit-bukkit'
+ transitive = false
}
// JetBrains Annotations
- compileOnly 'org.jetbrains:annotations:16.0.2'
+ compileOnly 'org.jetbrains:annotations:23.0.0'
// AuthLib
compileOnly 'com.mojang:authlib:1.5.21'
// FabledSkyblock
@@ -105,10 +105,13 @@ dependencies {
compileOnly 'com.bgsoftware:SuperiorSkyblockAPI:1.8.4'
// VotingPlugin
compileOnly ('com.bencodez:votingplugin:6.8.3') {
+ transitive = false
exclude group: 'dev.dbassett'
}
// MMOItems
- compileOnly 'net.Indyuce:MMOItems:6.5'
+ compileOnly ('net.Indyuce:MMOItems:6.5') {
+ transitive = false
+ }
compileOnly 'io.lumine:MythicLib:1.1.1'
// Slimefun4
compileOnly 'com.github.Slimefun:Slimefun4:RC-28'
@@ -119,11 +122,7 @@ dependencies {
// HikariCP
implementation 'com.zaxxer:HikariCP:4.0.3'
// slf4j
- implementation 'org.slf4j:slf4j-simple:1.7.30'
- // adventure
- implementation 'net.kyori:adventure-platform-bukkit:4.1.0'
- // mini message
- implementation "net.kyori:adventure-text-minimessage:4.10.1"
+ implementation 'org.slf4j:slf4j-nop:1.7.36'
compileOnly fileTree(dir: 'libs', includes: ['*.jar'])
}
@@ -136,6 +135,5 @@ shadowJar {
relocate 'org.bstats', 'com.leonardobishop.quests.libs.bstats'
relocate 'com.zaxxer.hikari', 'com.leonardobishop.quests.libs.hikaricp'
relocate 'org.slf4j', 'com.leonardobishop.quests.libs.slf4j'
- relocate 'net.kyori', 'com.leonardobishop.quests.libs.adventure'
archiveClassifier.set('')
} \ No newline at end of file
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminItemsCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminItemsCommandHandler.java
index c552a17a..1bf5a68a 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminItemsCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminItemsCommandHandler.java
@@ -3,7 +3,7 @@ package com.leonardobishop.quests.bukkit.command;
import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.item.ParsedQuestItem;
import com.leonardobishop.quests.bukkit.item.QuestItem;
-import org.apache.commons.lang.StringUtils;
+import com.leonardobishop.quests.bukkit.util.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
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 56a0927e..d4a7786b 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
@@ -5,6 +5,7 @@ import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter;
import com.leonardobishop.quests.bukkit.item.*;
import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack;
import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStackRegistry;
+import com.leonardobishop.quests.bukkit.util.StringUtils;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
@@ -17,7 +18,6 @@ import com.leonardobishop.quests.common.quest.Task;
import com.leonardobishop.quests.common.questcontroller.QuestController;
import com.leonardobishop.quests.common.tasktype.TaskType;
import com.leonardobishop.quests.common.tasktype.TaskTypeManager;
-import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException;
@@ -490,11 +490,11 @@ public class BukkitQuestsLoader implements QuestsLoader {
List<String> cLoreNormal = config.getStringList(path + ".lore-normal");
List<String> cLoreStarted = config.getStringList(path + ".lore-started");
- List<String> loreNormal = Chat.color(cLoreNormal);
- List<String> loreStarted = Chat.color(cLoreStarted);
+ List<String> loreNormal = Chat.legacyColor(cLoreNormal);
+ List<String> loreStarted = Chat.legacyColor(cLoreStarted);
String name;
- name = Chat.color(cName);
+ name = Chat.legacyColor(cName);
ItemStack is = plugin.getConfiguredItemStack(path, config,
ItemGetter.Filter.DISPLAY_NAME, ItemGetter.Filter.LORE, ItemGetter.Filter.ENCHANTMENTS);
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 1c7331e1..a7b4e6a7 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
@@ -95,13 +95,13 @@ public class ItemGetterLatest implements ItemGetter {
// name
if (!filters.contains(Filter.DISPLAY_NAME)) {
if (cName != null) {
- ism.setDisplayName(Chat.color(cName));
+ ism.setDisplayName(Chat.legacyColor(cName));
}
}
// lore
if (!filters.contains(Filter.LORE)) {
- ism.setLore(Chat.color(cLore));
+ ism.setLore(Chat.legacyColor(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 60d93a74..4d77427c 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
@@ -92,13 +92,13 @@ public class ItemGetter_1_13 implements ItemGetter {
// name
if (!filters.contains(Filter.DISPLAY_NAME)) {
if (cName != null) {
- ism.setDisplayName(Chat.color(cName));
+ ism.setDisplayName(Chat.legacyColor(cName));
}
}
// lore
if (!filters.contains(Filter.LORE)) {
- ism.setLore(Chat.color(cLore));
+ ism.setLore(Chat.legacyColor(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 111415eb..fbef12d8 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,9 +1,9 @@
package com.leonardobishop.quests.bukkit.hook.itemgetter;
+import com.leonardobishop.quests.bukkit.util.StringUtils;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
-import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
@@ -87,13 +87,13 @@ public class ItemGetter_Late_1_8 implements ItemGetter {
// lore
if (!filters.contains(Filter.LORE)) {
- ism.setLore(Chat.color(cLore));
+ ism.setLore(Chat.legacyColor(cLore));
}
// name
if (!filters.contains(Filter.DISPLAY_NAME)) {
if (cName != null) {
- ism.setDisplayName(Chat.color(cName));
+ ism.setDisplayName(Chat.legacyColor(cName));
}
}
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 4d805f7a..b19e68d8 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
@@ -19,7 +19,6 @@ import org.bukkit.inventory.ItemStack;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheable {
@@ -70,7 +69,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
if (save) args = Arrays.copyOf(args, args.length - 1);
final QPlayer qPlayer = plugin.getPlayerManager().getPlayer(p.getUniqueId());
- if (qPlayer == null) return Messages.PLACEHOLDERAPI_DATA_NOT_LOADED.getMessage();
+ if (qPlayer == null) return Messages.PLACEHOLDERAPI_DATA_NOT_LOADED.getMessageLegacyColor();
String split = args[args.length - 1];
String result = "null";
@@ -109,7 +108,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
case "l":
plugin.getQuestManager().getCategories().forEach(c -> {
ItemStack itemStack = plugin.getQItemStackRegistry().getCategoryItemStack(c);
- listCategories.add(Chat.strip(itemStack.getItemMeta().getDisplayName()));
+ listCategories.add(Chat.legacyStrip(itemStack.getItemMeta().getDisplayName()));
});
break;
case "listid":
@@ -141,7 +140,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
if (qPlayer.getPlayerPreferences().getTrackedQuestId() == null ||
plugin.getQuestManager().getQuestById(qPlayer.getPlayerPreferences().getTrackedQuestId()) == null) {
if (args.length == 1) {
- return Messages.PLACEHOLDERAPI_NO_TRACKED_QUEST.getMessage();
+ return Messages.PLACEHOLDERAPI_NO_TRACKED_QUEST.getMessageLegacyColor();
} else {
return "";
}
@@ -155,7 +154,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
switch (args[1].toLowerCase()) {
case "started":
case "s":
- result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isStarted() ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isStarted() ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
case "starteddate":
case "sd":
@@ -167,11 +166,11 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
break;
case "completed":
case "c":
- result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isCompleted() ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isCompleted() ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
case "completedbefore":
case "cb":
- result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isCompletedBefore() ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = (qPlayer.getQuestProgressFile().getQuestProgress(quest).isCompletedBefore() ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
case "completiondate":
case "cd":
@@ -190,10 +189,10 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
}
break;
case "canaccept":
- result = (qPlayer.canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = (qPlayer.canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
case "meetsrequirements":
- result = (qPlayer.getQuestProgressFile().hasMetRequirements(quest) ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = (qPlayer.getQuestProgressFile().hasMetRequirements(quest) ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
default:
if (!args[1].contains(":"))
@@ -214,7 +213,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
break;
case "completed":
case "c":
- result = String.valueOf(qPlayer.getQuestProgressFile().getQuestProgress(quest).getTaskProgress(t[1]).isCompleted() ? Messages.PLACEHOLDERAPI_TRUE.getMessage() : Messages.PLACEHOLDERAPI_FALSE.getMessage());
+ result = String.valueOf(qPlayer.getQuestProgressFile().getQuestProgress(quest).getTaskProgress(t[1]).isCompleted() ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor());
break;
default:
return args[0] + "_" + args[1] + "_" + args[2] + " is not a valid placeholder";
@@ -227,7 +226,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
if (placeholder == null) {
return t[1] + " is not a valid placeholder within quest " + quest.getId();
}
- placeholder = QItemStack.processPlaceholders(Chat.color(placeholder), qPlayer.getQuestProgressFile().getQuestProgress(quest));
+ placeholder = QItemStack.processPlaceholders(Chat.legacyColor(placeholder), qPlayer.getQuestProgressFile().getQuestProgress(quest));
return placeholder;
} else {
return args[0] + "_" + args[1] + " is not a valid placeholder";
@@ -245,7 +244,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
if (args.length == 1) {
ItemStack itemStack = plugin.getQItemStackRegistry().getCategoryItemStack(category);
- result = Chat.strip(itemStack.getItemMeta().getDisplayName());
+ result = Chat.legacyStrip(itemStack.getItemMeta().getDisplayName());
} else {
if (args.length > 2 && split.equals(args[2])) split = ",";
switch (args[1].toLowerCase()) {
@@ -322,7 +321,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
private String getQuestDisplayNameStripped(Quest quest) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- if (qItemStack != null) return Chat.strip(qItemStack.getName());
+ if (qItemStack != null) return Chat.legacyStrip(qItemStack.getName());
return null;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
index bdce5260..8bbd1474 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
@@ -25,7 +25,7 @@ public class PlayerJoinListener implements Listener {
}
if (plugin.getUpdater().isUpdateReady() && event.getPlayer().hasPermission("quests.admin")) {
// delay for a bit so they actually see the message
- String updateMessage = Messages.QUEST_UPDATER.getMessage()
+ String updateMessage = Messages.QUEST_UPDATER.getMessageLegacyColor()
.replace("{newver}", plugin.getUpdater().getReturnedVersion())
.replace("{oldver}", plugin.getUpdater().getInstalledVersion())
.replace("{link}", plugin.getUpdater().getUpdateLink());
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 ab6013bc..fb0a334a 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
@@ -40,7 +40,7 @@ public class CancelQMenu implements QMenu {
}
public Inventory toInventory(int page) {
- String title = Chat.color(config.getString("options.guinames.quest-cancel"));
+ String title = Chat.legacyColor(config.getString("options.guinames.quest-cancel"));
ItemStack yes = config.getItem("gui.quest-cancel-yes");
ItemStack no = config.getItem("gui.quest-cancel-no");
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 845910b8..d43dc174 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
@@ -8,9 +8,9 @@ import com.leonardobishop.quests.bukkit.menu.element.MenuElement;
import com.leonardobishop.quests.bukkit.menu.element.SpacerMenuElement;
import com.leonardobishop.quests.bukkit.util.MenuUtils;
import com.leonardobishop.quests.bukkit.util.Messages;
+import com.leonardobishop.quests.bukkit.util.StringUtils;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
import com.leonardobishop.quests.common.player.QPlayer;
-import org.apache.commons.lang.math.NumberUtils;
import org.bukkit.Bukkit;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
@@ -45,7 +45,7 @@ public class CategoryQMenu implements QMenu {
public void populate(List<QuestQMenu> menuQuests) {
if (config.getConfig().isConfigurationSection("custom-elements.categories")) {
for (String s : config.getConfig().getConfigurationSection("custom-elements.categories").getKeys(false)) {
- if (!NumberUtils.isNumber(s)) continue;
+ if (!StringUtils.isNumeric(s)) continue;
int slot = Integer.parseInt(s);
int repeat = config.getInt("custom-elements.categories." + s + ".repeat");
MenuElement menuElement;
@@ -95,7 +95,7 @@ public class CategoryQMenu implements QMenu {
currentPage = page;
int pageMin = pageSize * (page - 1);
int pageMax = pageSize * page;
- String title = Chat.color(config.getString("options.guinames.quests-category"));
+ String title = Chat.legacyColor(config.getString("options.guinames.quests-category"));
ItemStack pageIs;
ItemStack pagePrevIs;
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 d948c9ec..f2e75b9f 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
@@ -7,12 +7,12 @@ 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.MenuUtils;
+import com.leonardobishop.quests.bukkit.util.StringUtils;
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;
import com.leonardobishop.quests.common.quest.Quest;
-import org.apache.commons.lang.math.NumberUtils;
import org.bukkit.Bukkit;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
@@ -69,7 +69,7 @@ public class QuestQMenu implements QMenu {
}
if (plugin.getConfig().isConfigurationSection(path)) {
for (String s : plugin.getConfig().getConfigurationSection(path).getKeys(false)) {
- if (!NumberUtils.isNumber(s)) continue;
+ if (!StringUtils.isNumeric(s)) continue;
int slot = Integer.parseInt(s);
int repeat = plugin.getConfig().getInt(path + "." + s + ".repeat");
MenuElement menuElement;
@@ -141,7 +141,7 @@ public class QuestQMenu implements QMenu {
currentPage = page;
int pageMin = pageSize * (page - 1);
int pageMax = pageSize * page;
- String title = Chat.color(config.getString("options.guinames.quests-menu"));
+ String title = Chat.legacyColor(config.getString("options.guinames.quests-menu"));
ItemStack pageIs;
ItemStack pagePrevIs;
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 adba43c8..2a5d9859 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
@@ -84,7 +84,7 @@ public class StartedQMenu implements QMenu {
currentPage = page;
int pageMin = pageSize * (page - 1);
int pageMax = pageSize * page;
- String title = Chat.color(config.getString("options.guinames.quests-started-menu"));
+ String title = Chat.legacyColor(config.getString("options.guinames.quests-started-menu"));
ItemStack pageIs;
ItemStack pagePrevIs;
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 6f380622..7496dc56 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
@@ -59,14 +59,14 @@ public class QuestMenuElement extends MenuElement {
if (requirementQuest == null) continue;
if (!owner.getQuestProgressFile().hasQuestProgress(requirementQuest) ||
!owner.getQuestProgressFile().getQuestProgress(requirementQuest).isCompletedBefore()) {
- quests.add(Chat.strip(plugin.getQItemStackRegistry().getQuestItemStack(requirementQuest).getName()));
+ quests.add(Chat.legacyStrip(plugin.getQItemStackRegistry().getQuestItemStack(requirementQuest).getName()));
}
}
Map<String, String> placeholders = new HashMap<>();
- placeholders.put("{quest}", Chat.strip(qItemStack.getName()));
+ placeholders.put("{quest}", Chat.legacyStrip(qItemStack.getName()));
placeholders.put("{questid}", quest.getId());
if (quests.size() > 1 && plugin.getConfig().getBoolean("options.gui-truncate-requirements", true)) {
- placeholders.put("{requirements}", quests.get(0) + Messages.UI_PLACEHOLDERS_TRUNCATED.getMessage().replace("{amount}", String.valueOf(quests.size() - 1)));
+ placeholders.put("{requirements}", quests.get(0) + Messages.UI_PLACEHOLDERS_TRUNCATED.getMessageLegacyColor().replace("{amount}", String.valueOf(quests.size() - 1)));
} else {
placeholders.put("{requirements}", String.join(", ", quests));
}
@@ -79,7 +79,7 @@ public class QuestMenuElement extends MenuElement {
return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders);
} else if (status == QuestStartResult.QUEST_ALREADY_COMPLETED) {
Map<String, String> placeholders = new HashMap<>();
- placeholders.put("{quest}", Chat.strip(qItemStack.getName()));
+ placeholders.put("{quest}", Chat.legacyStrip(qItemStack.getName()));
placeholders.put("{questid}", quest.getId());
ItemStack display;
if (plugin.getQItemStackRegistry().hasQuestCompletedItemStack(quest)) {
@@ -90,7 +90,7 @@ public class QuestMenuElement extends MenuElement {
return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders);
} else if (status == QuestStartResult.QUEST_NO_PERMISSION) {
Map<String, String> placeholders = new HashMap<>();
- placeholders.put("{quest}", Chat.strip(qItemStack.getName()));
+ placeholders.put("{quest}", Chat.legacyStrip(qItemStack.getName()));
placeholders.put("{questid}", quest.getId());
ItemStack display;
if (plugin.getQItemStackRegistry().hasQuestPermissionItemStack(quest)) {
@@ -102,7 +102,7 @@ public class QuestMenuElement extends MenuElement {
} else if (cooldown > 0) {
Map<String, String> placeholders = new HashMap<>();
placeholders.put("{time}", Format.formatTime(TimeUnit.SECONDS.convert(cooldown, TimeUnit.MILLISECONDS)));
- placeholders.put("{quest}", Chat.strip(qItemStack.getName()));
+ placeholders.put("{quest}", Chat.legacyStrip(qItemStack.getName()));
placeholders.put("{questid}", quest.getId());
ItemStack display;
if (plugin.getQItemStackRegistry().hasQuestCooldownItemStack(quest)) {
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 d1fdc5ec..f697523c 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
@@ -38,10 +38,10 @@ public class QItemStack {
this.loreStarted = loreStarted;
this.startingItemStack = startingItemStack;
- this.globalLoreAppendNormal = Chat.color(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-normal"));
- this.globalLoreAppendNotStarted = Chat.color(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-not-started"));
- this.globalLoreAppendStarted = Chat.color(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-started"));
- this.globalLoreAppendTracked = Chat.color(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-tracked"));
+ this.globalLoreAppendNormal = Chat.legacyColor(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-normal"));
+ this.globalLoreAppendNotStarted = Chat.legacyColor(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-not-started"));
+ this.globalLoreAppendStarted = Chat.legacyColor(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-started"));
+ this.globalLoreAppendTracked = Chat.legacyColor(plugin.getQuestsConfig().getStringList("global-quest-display.lore.append-tracked"));
}
public String getName() {
@@ -147,9 +147,9 @@ public class QItemStack {
if (parts[1].equals("complete")) {
String str;
if (questProgress.getTaskProgress(parts[0]).isCompleted()) {
- str = Chat.color(Messages.UI_PLACEHOLDERS_TRUE.getMessage());
+ str = Chat.legacyColor(Messages.UI_PLACEHOLDERS_TRUE.getMessageLegacyColor());
} else {
- str = Chat.color(Messages.UI_PLACEHOLDERS_FALSE.getMessage());
+ str = Chat.legacyColor(Messages.UI_PLACEHOLDERS_FALSE.getMessageLegacyColor());
}
s = s.replace("{" + m.group(1) + "}", str);
}
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 c37a6c63..71e0af67 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
@@ -103,7 +103,7 @@ public class NormalQuestController implements QuestController {
questProgress.setCompleted(false);
if (player != null) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
String questStartMessage = Messages.QUEST_START.getMessage().replace("{quest}", displayName);
// PlayerStartQuestEvent -- start
PlayerStartQuestEvent questStartEvent = new PlayerStartQuestEvent(player, qPlayer, questProgress, questStartMessage);
@@ -111,8 +111,8 @@ public class NormalQuestController implements QuestController {
// PlayerStartQuestEvent -- end
Messages.send(questStartEvent.getQuestStartMessage(), player);
if (config.getBoolean("options.titles-enabled")) {
- plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessage().replace("{quest}", displayName),
- Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", displayName));
+ plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessageLegacyColor().replace("{quest}", displayName),
+ Messages.TITLE_QUEST_START_SUBTITLE.getMessageLegacyColor().replace("{quest}", displayName));
}
for (String s : quest.getStartCommands()) {
s = s.replace("{player}", player.getName());
@@ -126,7 +126,7 @@ public class NormalQuestController implements QuestController {
if (plugin.getConfig().getBoolean("options.quests-use-placeholderapi")) {
s = plugin.getPlaceholderAPIProcessor().apply(player, s);
}
- player.sendMessage(Chat.color(s));
+ Chat.send(player, s, true);
}
SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-start"));
}
@@ -213,7 +213,7 @@ public class NormalQuestController implements QuestController {
Player player = Bukkit.getPlayer(qPlayer.getPlayerUUID());
if (player != null) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
String questFinishMessage = Messages.QUEST_COMPLETE.getMessage().replace("{quest}", displayName);
// PlayerFinishQuestEvent -- start
PlayerFinishQuestEvent questFinishEvent = new PlayerFinishQuestEvent(player, qPlayer, questProgress, questFinishMessage);
@@ -231,14 +231,14 @@ public class NormalQuestController implements QuestController {
});
Messages.send(questFinishEvent.getQuestFinishMessage(), player);
if (config.getBoolean("options.titles-enabled")) {
- plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_COMPLETE_TITLE.getMessage().replace("{quest}", displayName),
- Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessage().replace("{quest}", displayName));
+ plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_COMPLETE_TITLE.getMessageLegacyColor().replace("{quest}", displayName),
+ Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessageLegacyColor().replace("{quest}", displayName));
}
for (String s : quest.getRewardString()) {
if (plugin.getConfig().getBoolean("options.quests-use-placeholderapi")) {
s = plugin.getPlaceholderAPIProcessor().apply(player, s);
}
- player.sendMessage(Chat.color(s));
+ player.sendMessage(Chat.legacyColor(s));
}
SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-complete"));
}
@@ -284,7 +284,7 @@ public class NormalQuestController implements QuestController {
resetQuest(questProgress);
if (player != null) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
String questCancelMessage = Messages.QUEST_CANCEL.getMessage().replace("{quest}", displayName);
// PlayerCancelQuestEvent -- start
PlayerCancelQuestEvent questCancelEvent = new PlayerCancelQuestEvent(player, qPlayer, questProgress, questCancelMessage);
@@ -311,7 +311,7 @@ public class NormalQuestController implements QuestController {
resetQuest(questProgress);
if (player != null) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
String questExpireMessage = Messages.QUEST_EXPIRE.getMessage().replace("{quest}", displayName);
// PlayerCancelQuestEvent -- start
PlayerExpireQuestEvent questCancelEvent = new PlayerExpireQuestEvent(player, qPlayer, questProgress, questExpireMessage);
@@ -339,13 +339,13 @@ public class NormalQuestController implements QuestController {
Quest currentTrackedQuest;
if (currentTrackedQuestId != null && (currentTrackedQuest = plugin.getQuestManager().getQuestById(currentTrackedQuestId)) != null) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(currentTrackedQuest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
Messages.QUEST_TRACK_STOP.send(player, "{quest}", displayName);
}
}
} else if (qPlayer.hasStartedQuest(quest)) {
QItemStack qItemStack = plugin.getQItemStackRegistry().getQuestItemStack(quest);
- String displayName = Chat.strip(qItemStack.getName());
+ String displayName = Chat.legacyStrip(qItemStack.getName());
qPlayer.getPlayerPreferences().setTrackedQuestId(quest.getId());
if (player != null) {
Bukkit.getPluginManager().callEvent(new PlayerStartTrackQuestEvent(player, qPlayer));
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 c68af762..631d88d7 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
@@ -11,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.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
@@ -135,7 +134,7 @@ public final class MobkillingCertainTaskType extends BukkitTaskType {
boolean validName = false;
for (String name : configNames) {
- name = Chat.color(name);
+ name = Chat.legacyColor(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 da4df740..b51b1265 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
@@ -82,8 +82,8 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
for (Task task : quest.getTasksOfType(super.getType())) {
if (task.getConfigValue("npc-name") != null) {
- if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
- .equals(Chat.strip(Chat.color(npc.getName())))) {
+ if (!Chat.legacyStrip(Chat.legacyColor(String.valueOf(task.getConfigValue("npc-name"))))
+ .equals(Chat.legacyStrip(Chat.legacyColor(npc.getName())))) {
continue;
}
} else if (!task.getConfigValue("npc-id").equals(npc.getId())) {
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 794701d9..31f9af67 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
@@ -54,8 +54,8 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
if (!TaskUtils.validateWorld(event.getClicker(), task)) continue;
if (task.getConfigValue("npc-name") != null) {
- if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
- .equals(Chat.strip(Chat.color(event.getNPC().getName())))) {
+ if (!Chat.legacyStrip(Chat.legacyColor(String.valueOf(task.getConfigValue("npc-name"))))
+ .equals(Chat.legacyStrip(Chat.legacyColor(event.getNPC().getName())))) {
continue;
}
} else if (!task.getConfigValue("npc-id").equals(event.getNPC().getId())) {
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java
index 89c5418c..ddf3db4f 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java
@@ -5,7 +5,6 @@ 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.QuestProgressFile;
-import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
@@ -50,26 +49,32 @@ public class CommandUtils {
for (ConfigProblem.ConfigProblemType type : ConfigProblem.ConfigProblemType.values()) {
if (sortedProblems.containsKey(type)) {
for (ConfigProblem problem : sortedProblems.get(type)) {
- String color = Chat.matchConfigProblemToColorName(problem.getType());
- String extendedDescription = String.format("<%s>%s</%s><br><gray>Problem location: </gray><white>%s</white><br><br><grey>%s</grey>",
- color,
- problem.getDescription(),
- color,
- problem.getLocation(),
- problem.getExtendedDescription()
- );
- extendedDescription = extendedDescription.replace("'", "\\'");
+ if (Chat.isModernChatAvailable()) {
+ String color = Chat.matchConfigProblemToColorName(problem.getType());
+ String extendedDescription = String.format("<%s>%s</%s><br><gray>Problem location: </gray><white>%s</white><br><br><grey>%s</grey>",
+ color,
+ problem.getDescription(),
+ color,
+ problem.getLocation(),
+ problem.getExtendedDescription()
+ );
+ extendedDescription = extendedDescription.replace("'", "\\'");
- String message = String.format(
- "<dark_gray> | - </dark_gray><%s>%s</%s><dark_gray>:</dark_gray> <hover:show_text:'%s'><gray>%s</gray></hover><dark_gray> :%s</dark_gray>",
- color,
- problem.getType().getShortened(),
- color,
- extendedDescription,
- problem.getDescription(),
- problem.getLocation()
- );
- Chat.send(sender, message);
+ String message = String.format(
+ "<dark_gray> | - </dark_gray><%s>%s</%s><dark_gray>:</dark_gray> <hover:show_text:'%s'><gray>%s</gray></hover><dark_gray> :%s</dark_gray>",
+ color,
+ problem.getType().getShortened(),
+ color,
+ extendedDescription,
+ problem.getDescription(),
+ problem.getLocation()
+ );
+ Chat.send(sender, message);
+ } else {
+ sender.sendMessage(ChatColor.DARK_GRAY + " | - " + Chat.matchConfigProblemToColor(problem.getType())
+ + problem.getType().getShortened() + ChatColor.DARK_GRAY + ": "
+ + ChatColor.GRAY + problem.getDescription() + ChatColor.DARK_GRAY + " :" + problem.getLocation());
+ }
count++;
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Format.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Format.java
index afa0ea74..91a6b265 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Format.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Format.java
@@ -7,7 +7,7 @@ public class Format {
long minutes = (sec % 3600) / 60;
long seconds = ((sec % 3600) % 60) % 60;
- return Messages.TIME_FORMAT.getMessage()
+ return Messages.TIME_FORMAT.getMessageLegacyColor()
.replace("{hours}", String.format("%02d", hours))
.replace("{minutes}", String.format("%02d", minutes))
.replace("{seconds}", String.format("%02d", seconds));
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 87dd1087..c6d3525e 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,6 +1,5 @@
package com.leonardobishop.quests.bukkit.util;
-import com.google.common.base.Preconditions;
import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
import org.bukkit.command.CommandSender;
@@ -95,11 +94,15 @@ public enum Messages {
this.def = def;
}
+ public String getMessageLegacyColor() {
+ return Chat.legacyColor(getMessage());
+ }
+
public String getMessage() {
String message = plugin.getQuestsConfig().getString(path);
if (message.equals(path)) message = def;
- return Chat.color(message);
+ return message;
}
public boolean send(CommandSender target, String... substitutions) {
@@ -107,20 +110,7 @@ public enum Messages {
}
public static boolean send(String message, CommandSender target, String... substitutions) {
- if (substitutions.length % 2 != 0) {
- throw new IllegalArgumentException("uneven substitutions passed");
- }
-
- if (message == null || message.isEmpty()) {
- return false;
- }
-
- String substitutedMessage = message;
- for (int i = 0; i < substitutions.length ; i += 2) {
- substitutedMessage = substitutedMessage.replace(substitutions[i], substitutions[i+1]);
- }
-
- target.sendMessage(substitutedMessage);
+ Chat.send(target, message, true, substitutions);
return true;
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/StringUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/StringUtils.java
new file mode 100644
index 00000000..c6c2aa04
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/StringUtils.java
@@ -0,0 +1,39 @@
+package com.leonardobishop.quests.bukkit.util;
+
+/*
+ * From Apache Commons Lang
+ * https://github.com/apache/commons-lang/blob/master/LICENSE.txt
+ */
+public class StringUtils {
+
+ public static boolean isEmpty(final CharSequence cs) {
+ return cs == null || cs.length() == 0;
+ }
+
+ public static boolean isAlphanumeric(final CharSequence cs) {
+ if (isEmpty(cs)) {
+ return false;
+ }
+ final int sz = cs.length();
+ for (int i = 0; i < sz; i++) {
+ if (!Character.isLetterOrDigit(cs.charAt(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean isNumeric(final CharSequence cs) {
+ if (isEmpty(cs)) {
+ return false;
+ }
+ final int sz = cs.length();
+ for (int i = 0; i < sz; i++) {
+ if (!Character.isDigit(cs.charAt(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
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
index 64c2fdc8..a8453944 100644
--- 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
@@ -1,21 +1,23 @@
package com.leonardobishop.quests.bukkit.util.chat;
-import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.common.config.ConfigProblem;
+import com.leonardobishop.quests.common.plugin.Quests;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Entity;
+import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Pattern;
public class Chat {
private static final ColorAdapter legacyColorAdapter;
- private static final MiniMessageParser miniMessageParser;
+ private static final Pattern legacyPattern;
+ private static MiniMessageParser miniMessageParser;
static {
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];;
@@ -26,18 +28,27 @@ public class Chat {
} else {
legacyColorAdapter = new HexColorAdapter();
}
- miniMessageParser = new MiniMessageParser(Bukkit.getPluginManager().getPlugin("Quests"));
+ Quests questsPlugin = (Quests) Bukkit.getPluginManager().getPlugin("Quests");
+ try {
+ Class.forName("net.kyori.adventure.Adventure", false, Bukkit.class.getClassLoader());
+ miniMessageParser = new MiniMessageParser();
+ questsPlugin.getQuestsLogger().debug("Modern chat is available.");
+ } catch (Throwable e) {
+ questsPlugin.getQuestsLogger().debug("Modern chat is not available, resorting to legacy chat.");
+ miniMessageParser = null;
+ }
+ legacyPattern = Pattern.compile("&(?:\\d|#|[a-f]|[k-o]|r)");
}
@Contract("null -> null")
@Deprecated // use send instead
- public static String color(@Nullable String s) {
+ public static String legacyColor(@Nullable String s) {
return legacyColorAdapter.color(s);
}
@Contract("null -> null")
@Deprecated // use send instead
- public static List<String> color(@Nullable List<String> s) {
+ public static List<String> legacyColor(@Nullable List<String> s) {
if (s == null || s.size() == 0) return s;
List<String> colored = new ArrayList<>();
@@ -48,10 +59,18 @@ public class Chat {
}
@Contract("null -> null")
- public static String strip(@Nullable String s) {
+ public static String legacyStrip(@Nullable String s) {
return legacyColorAdapter.strip(s);
}
+ public static boolean usesLegacy(String s) {
+ return legacyPattern.matcher(s).find();
+ }
+
+ public static boolean isModernChatAvailable() {
+ return miniMessageParser != null;
+ }
+
public static ChatColor matchConfigProblemToColor(ConfigProblem.ConfigProblemType configProblem) {
switch (configProblem) {
case ERROR:
@@ -76,14 +95,43 @@ public class Chat {
/**
* Send a message to a given command sender. The given message will be parsed for legacy
- * colours and minimessage formatting.
+ * colour, or minimessage formatting.
+ *
+ * @param who the player to send to
+ * @param message the message to send
+ * @param allowLegacy whether legacy colour codes should be tested and allowed
+ * @param substitutions pairs of substitutions
+ */
+ public static void send(CommandSender who, String message, boolean allowLegacy, String... substitutions) {
+ if (substitutions.length % 2 != 0) {
+ throw new IllegalArgumentException("uneven substitutions passed");
+ }
+
+ if (message == null || message.isEmpty()) {
+ return;
+ }
+
+ String substitutedMessage = message;
+ for (int i = 0; i < substitutions.length ; i += 2) {
+ substitutedMessage = substitutedMessage.replace(substitutions[i], substitutions[i+1]);
+ }
+
+ if (miniMessageParser == null || (allowLegacy && usesLegacy(message))) {
+ who.sendMessage(legacyColor(substitutedMessage));
+ } else {
+ miniMessageParser.send(who, substitutedMessage);
+ }
+ }
+
+ /**
+ * Send a mini-message formatted message to a given command sender.
*
* @param who the player to send to
* @param message the message to send
+ * @param substitutions pairs of substitutions
*/
- public static void send(CommandSender who, String message) {
-// String colouredMessage = legacyColorAdapter.color(message);
- miniMessageParser.send(who, message);
+ public static void send(CommandSender who, String message, String... substitutions) {
+ send(who, message, false, substitutions);
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java
index c27df430..09a2cc3c 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java
@@ -1,26 +1,20 @@
package com.leonardobishop.quests.bukkit.util.chat;
-import net.kyori.adventure.audience.Audience;
-import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.CommandSender;
-import org.bukkit.plugin.Plugin;
public class MiniMessageParser {
- private final BukkitAudiences adventure;
private final MiniMessage miniMessage;
- public MiniMessageParser(Plugin plugin) {
- adventure = BukkitAudiences.create(plugin);
+ public MiniMessageParser() {
miniMessage = MiniMessage.miniMessage();
}
public void send(CommandSender who, String message) {
- Audience audience = adventure.sender(who);
Component component = miniMessage.deserialize(message);
- audience.sendMessage(component);
+ who.sendMessage(component);
}
}