diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 9755144..4a0f174 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -4,7 +4,7 @@ plugins { dependencies { compileOnly("com.alttd:Galaxy-API:1.18.1-R0.1-SNAPSHOT") - compileOnly("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") // Minimessage + compileOnly("net.kyori:adventure-text-minimessage:4.2.0-SNAPSHOT") // Minimessage compileOnly("org.spongepowered:configurate-yaml:4.1.2") // Configurate compileOnly("net.luckperms:api:5.3") // Luckperms } diff --git a/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java index fef889e..0fc1b42 100755 --- a/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java +++ b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java @@ -9,27 +9,28 @@ import java.util.stream.Collectors; public final class ChatUserManager { - private static ArrayList chatUsers; + private static Map chatUsers; public static void initialize() { - chatUsers = new ArrayList<>(); + chatUsers = new TreeMap<>(); } public static void addUser(ChatUser user) { - chatUsers.add(user); + chatUsers.put(user.getUuid(), user); } public static void removeUser(ChatUser user) { chatUsers.remove(user); } + /** + * Get the ChatUser for this player or query the database to read the data. + * + * @param uuid the player who's ChatUser you'd like to get + * @return The ChatUser loaded from database or null if it's not existing. + */ public static ChatUser getChatUser(UUID uuid) { - for(ChatUser user : chatUsers) { - if(uuid.equals(user.getUuid())) { - return user; - } - } - return Queries.loadChatUser(uuid); + return chatUsers.computeIfAbsent(uuid, k -> Queries.loadChatUser(uuid)); } public List getUnReadMail(ChatUser user) { @@ -38,7 +39,4 @@ public final class ChatUserManager { .collect(Collectors.toList()); } - protected static List getChatUsers() { - return Collections.unmodifiableList(chatUsers); - } } diff --git a/api/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java index b222e43..9e4710f 100755 --- a/api/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -7,6 +7,8 @@ import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.Template; +import net.kyori.adventure.text.minimessage.template.TemplateResolver; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.model.group.Group; @@ -25,6 +27,8 @@ public class Utility { static final Pattern DEFAULT_URL_PATTERN = Pattern.compile("(?:(https?)://)?([-\\w_.]+\\.\\w{2,})(/\\S*)?"); static final Pattern URL_SCHEME_PATTERN = Pattern.compile("^[a-z][a-z0-9+\\-.]*:"); + private static MiniMessage miniMessage = null; + public static String stringRegen = "\\{#[A-Fa-f0-9]{6}(<)?(>)?}"; public static HashMap colors; private static LegacyComponentSerializer legacySerializer; @@ -211,9 +215,8 @@ public class Utility { stringBuilder.append("<").append(hexColor1).append(">").append(split[i]); } } - MiniMessage miniMessage = MiniMessage.get(); - return stringBuilder.length()==0 ? miniMessage.parse(message) - : miniMessage.parse(stringBuilder.toString()); + return stringBuilder.length() == 0 ? Utility.parseMiniMessage(message) + : Utility.parseMiniMessage(stringBuilder.toString()); } public static String formatText(String message) { @@ -241,4 +244,25 @@ public class Utility { return message; } + public static Component parseMiniMessage(String message) { + return parseMiniMessage(message, null); + } + + public static Component parseMiniMessage(String message, List