diff --git a/api/pom.xml b/api/pom.xml index 114ac6e..28100ff 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -20,12 +20,6 @@ jar - - net.luckperms - api - 5.3 - provided - org.spongepowered configurate-yaml @@ -36,6 +30,29 @@ adventure-text-minimessage 4.1.0-SNAPSHOT + + com.velocitypowered + velocity-api + 1.1.5 + provided + + + net.luckperms + api + 5.3 + provided + + + com.alttd.chat + velocity-chat + 1.0 + compile + + + net.kyori + adventure-text-minimessage + 4.1.0-SNAPSHOT + \ No newline at end of file diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java index ab55bca..88b239e 100644 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -157,10 +157,13 @@ public final class Config { /** ONLY EDIT ANYTHING BELOW THIS LINE **/ public static List PREFIXGROUPS = new ArrayList<>(); + public static List STAFFGROUPS = new ArrayList<>(); public static String CONSOLENAME = "Console"; private static void settings() { PREFIXGROUPS = getList("settings.prefix-groups", Lists.newArrayList("discord", "socialmedia", "eventteam", "eventleader", "youtube", "twitch", "developer")); + STAFFGROUPS = getList("settings.staff-groups", + Lists.newArrayList("trainee", "moderator", "headmod", "admin", "manager", "owner")); CONSOLENAME = getString("settings.console-name", CONSOLENAME); } diff --git a/api/src/main/java/com/alttd/chat/objects/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java index f2e945b..52560a1 100644 --- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -1,6 +1,7 @@ package com.alttd.chat.objects; import com.alttd.chat.database.Queries; +import com.alttd.chat.util.Utility; import java.util.UUID; @@ -21,13 +22,17 @@ public class ChatUser { this.toggledChat = toggled_chat; this.forceTp = force_tp; - //TODO Get the user somehow and use that to check their prefixes displayName = Queries.getNickname(uuid); if (displayName == null) { - //TODO displayName = player.getName() or something + displayName = Utility.getDisplayName(uuid); } - //TODO Get the user somehow and use that to check the toggleGc permission + prefix = Utility.getPrefix(uuid, true); + staffPrefix = Utility.getStaffPrefix(uuid); + + prefixAll = prefix + staffPrefix; //TODO test what this does cus I barely understand lp api + + toggleGc = Utility.checkPermission(uuid, "chat.gc"); //TODO put the actual permission here, I don't know what it is... } public UUID getUuid() { @@ -90,6 +95,7 @@ public class ChatUser { public void toggleGc() { toggleGc = !toggleGc; + Utility.setPermission(uuid, "chat.gc", toggleGc); //TODO put the actual permission here, I don't know what it is... } public boolean isGcOn() { diff --git a/api/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java new file mode 100644 index 0000000..b22607b --- /dev/null +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -0,0 +1,72 @@ +package com.alttd.chat.util; + +import com.alttd.chat.ChatPlugin; +import com.alttd.chat.config.Config; +import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.ProxyServer; +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 java.util.Collection; +import java.util.Comparator; +import java.util.UUID; + +public class Utility { + + public static String getPrefix(UUID uuid, boolean highest) { + StringBuilder prefix = new StringBuilder(); + LuckPerms luckPerms = ChatPlugin.getPlugin().API().getLuckPerms(); + User user = luckPerms.getUserManager().getUser(uuid); + if(user == null) return ""; + if(!highest) { + Collection inheritedGroups = user.getInheritedGroups(user.getQueryOptions()); + inheritedGroups.stream() + .sorted(Comparator.comparingInt(o -> o.getWeight().orElse(0))) + .forEach(group -> { + if (Config.PREFIXGROUPS.contains(group.getName())) { + prefix.append("[").append(group.getCachedData().getMetaData().getPrefix()).append("]"); + } + }); + } + LegacyComponentSerializer.builder().character('&').hexColors(); + prefix.append("[").append(user.getCachedData().getMetaData().getPrefix()).append("]"); + + return prefix.toString(); + } + + public static String getStaffPrefix(UUID uuid) { + StringBuilder prefix = new StringBuilder(); + LuckPerms luckPerms = ChatPlugin.getPlugin().API().getLuckPerms(); + User user = luckPerms.getUserManager().getUser(uuid); + if(user == null) return ""; + if(!Config.STAFFGROUPS.contains(user.getPrimaryGroup())) return ""; + prefix.append("[").append(user.getCachedData().getMetaData().getPrefix()).append("]"); + + return prefix.toString(); + } + + public static boolean checkPermission(UUID uuid, String permission) { + ProxyServer proxy = ChatPlugin.getPlugin().getProxy(); + if (proxy.getPlayer(uuid).isEmpty()) return false; + Player player = proxy.getPlayer(uuid).get(); + + return player.hasPermission(permission); + } + + public static String getDisplayName(UUID uuid) { + ProxyServer proxy = ChatPlugin.getPlugin().getProxy(); + if (proxy.getPlayer(uuid).isEmpty()) return ""; + Player player = proxy.getPlayer(uuid).get(); + return player.getUsername(); + } + + public static void setPermission(UUID uuid, String permission, boolean toggleGc) { + LuckPerms luckPerms = ChatPlugin.getPlugin().API().getLuckPerms(); + luckPerms.getUserManager().modifyUser(uuid, user -> { + user.data().add(Node.builder(permission).value(toggleGc).build()); + }); + } +}