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());
+ });
+ }
+}