From 00f4e0001158056ddd5f81cc5ee1092ee500fb63 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Mon, 26 Sep 2022 23:48:59 +0200 Subject: [PATCH] Add Pair.java --- .../main/java/com/alttd/chat/util/Pair.java | 20 +++++++++++ .../java/com/alttd/chat/util/Utility.java | 34 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 api/src/main/java/com/alttd/chat/util/Pair.java diff --git a/api/src/main/java/com/alttd/chat/util/Pair.java b/api/src/main/java/com/alttd/chat/util/Pair.java new file mode 100644 index 0000000..f52fa45 --- /dev/null +++ b/api/src/main/java/com/alttd/chat/util/Pair.java @@ -0,0 +1,20 @@ +package com.alttd.chat.util; + +public class Pair { + + private final X x; + private final Y y; + + public Pair(X x, Y y) { + this.x = x; + this.y = y; + } + + public X getX() { + return x; + } + + public Y getY() { + return y; + } +} 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 8e26736..0001253 100755 --- a/api/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -3,13 +3,16 @@ package com.alttd.chat.util; import com.alttd.chat.ChatAPI; import com.alttd.chat.config.Config; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.model.group.Group; import net.luckperms.api.model.user.User; import net.luckperms.api.node.Node; +import org.bukkit.permissions.Permission; import java.util.*; import java.util.regex.Matcher; @@ -18,6 +21,7 @@ import java.util.stream.Collectors; public class Utility { + private static final List EMPTY_LIST = new ArrayList<>(); static final Pattern DEFAULT_URL_PATTERN = Pattern.compile("(?:(https?)://)?([-\\w_.]+\\.\\w{2,})(/\\S*)?"); private static MiniMessage miniMessage = null; @@ -44,6 +48,36 @@ public class Utility { colors.put("&e", ""); colors.put("&f", ""); } + + public static HashMap>> formattingPerms = new HashMap<>(); + static { + formattingPerms.put("chat.format.color", + new Pair<>(StandardTags.color(), colors.values().stream().toList())); + formattingPerms.put("chat.format.bold", + new Pair<>(StandardTags.decorations(TextDecoration.BOLD), List.of("", ""))); + formattingPerms.put("chat.format.italic", + new Pair<>(StandardTags.decorations(TextDecoration.ITALIC), List.of("", ""))); + formattingPerms.put("chat.format.underlined", + new Pair<>(StandardTags.decorations(TextDecoration.UNDERLINED), List.of("", ""))); + formattingPerms.put("chat.format.strikethrough", + new Pair<>(StandardTags.decorations(TextDecoration.STRIKETHROUGH), List.of("", ""))); + formattingPerms.put("chat.format.obfuscated", + new Pair<>(StandardTags.decorations(TextDecoration.OBFUSCATED), List.of("", ""))); + formattingPerms.put("chat.format.gradient", + new Pair<>(StandardTags.gradient(), EMPTY_LIST)); + formattingPerms.put("chat.format.font", + new Pair<>(StandardTags.font(), EMPTY_LIST)); + formattingPerms.put("chat.format.rainbow", + new Pair<>(StandardTags.rainbow(), List.of(""))); + formattingPerms.put("chat.format.hover", + new Pair<>(StandardTags.hoverEvent(), EMPTY_LIST)); + formattingPerms.put("chat.format.click", + new Pair<>(StandardTags.clickEvent(), EMPTY_LIST)); + formattingPerms.put("chat.format.transition", + new Pair<>(StandardTags.transition(), EMPTY_LIST)); + formattingPerms.put("chat.format.reset", + new Pair<>(StandardTags.reset(), List.of("", ""))); + } public static String parseColors(String message) { if (message == null) return "";