From a74cd0b0756c5bcb65d86f5eaf07d6d30284659b Mon Sep 17 00:00:00 2001 From: Xyntexx Date: Tue, 2 Mar 2021 21:12:03 +0200 Subject: [PATCH] feat: Added support for LuckPerms --- .../uk/co/angrybee/joe/DiscordClient.java | 33 ++++++++++++++++--- .../co/angrybee/joe/DiscordWhitelister.java | 16 ++++++++- .../joe/commands/discord/CommandAdd.java | 5 ++- .../co/angrybee/joe/configs/MainConfig.java | 2 ++ .../uk/co/angrybee/joe/events/OnBanEvent.java | 5 ++- 5 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/main/java/uk/co/angrybee/joe/DiscordClient.java b/src/main/java/uk/co/angrybee/joe/DiscordClient.java index afd3b8a..8cb7fee 100644 --- a/src/main/java/uk/co/angrybee/joe/DiscordClient.java +++ b/src/main/java/uk/co/angrybee/joe/DiscordClient.java @@ -480,9 +480,14 @@ public class DiscordClient extends ListenerAdapter channel.sendMessage(embedBuilderSuccess.build()).queue(); TempRemoveOriginalMessageAfterSeconds(messageReceivedEvent); + if(DiscordWhitelister.useLuckPerms) + { + LpRemovePermsFromUser(finalNameToRemove, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + } + if(DiscordWhitelister.useUltraPerms) { - RemovePermsFromUser(finalNameToRemove, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + UpRemovePermsFromUser(finalNameToRemove, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); } if(whitelistedRoleAutoRemove) @@ -730,8 +735,11 @@ public class DiscordClient extends ListenerAdapter } // Clear permissions + // Clear permissions + if(DiscordWhitelister.useLuckPerms) + DiscordClient.LpRemovePermsFromUser(splitMessage[userNameIndex], PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); if(DiscordWhitelister.useUltraPerms) - DiscordClient.RemovePermsFromUser(splitMessage[userNameIndex], PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + DiscordClient.UpRemovePermsFromUser(splitMessage[userNameIndex], PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); } // Success message @@ -1425,6 +1433,23 @@ public class DiscordClient extends ListenerAdapter } } } + // TODO: improve, not go through console commands + // For ultra perms + public static void LpAssignPermsToUser(String targetPlayerName, List permsToAssign) + { + for(int i = 0; i < permsToAssign.size(); i++) + { + DiscordClient.ExecuteServerCommand("lp user " + targetPlayerName + " permission set " + permsToAssign.get(i)); + } + } + + public static void LpRemovePermsFromUser(String targetPlayerName, List permsToRemove) + { + for(int i = 0; i < permsToRemove.size(); i++) + { + DiscordClient.ExecuteServerCommand("lp user " + targetPlayerName + " permission unset " + permsToRemove.get(i)); + } + } public static void RemoveMessageAfterSeconds(MessageReceivedEvent messageReceivedEvent, Integer timeToWait) { @@ -1460,7 +1485,7 @@ public class DiscordClient extends ListenerAdapter // TODO: improve, not go through console commands // For ultra perms - public static void AssignPermsToUser(String targetPlayerName, List permsToAssign) + public static void UpAssignPermsToUser(String targetPlayerName, List permsToAssign) { for(int i = 0; i < permsToAssign.size(); i++) { @@ -1468,7 +1493,7 @@ public class DiscordClient extends ListenerAdapter } } - public static void RemovePermsFromUser(String targetPlayerName, List permsToRemove) + public static void UpRemovePermsFromUser(String targetPlayerName, List permsToRemove) { for(int i = 0; i < permsToRemove.size(); i++) { diff --git a/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java b/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java index 3fb591a..aa74f52 100755 --- a/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java +++ b/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java @@ -33,6 +33,7 @@ public class DiscordWhitelister extends JavaPlugin public static boolean useInGameAddRemoves = true; public static boolean useOnBanEvents = true; public static boolean useUltraPerms = false; + public static boolean useLuckPerms = false; public static boolean useOnWhitelistCommands = false; public static boolean removeUnnecessaryMessages = false; @@ -128,7 +129,20 @@ public class DiscordWhitelister extends JavaPlugin removeMessageWaitTime = MainConfig.getMainConfig().getInt("seconds-to-remove-message-from-whitelist-channel"); - // Check for UltraPerms first + // Check for LuckPerms first + if(MainConfig.getMainConfig().getBoolean("assign-perms-with-luck-perms")) + { + if(DiscordWhitelister.getPlugin().getServer().getPluginManager().getPlugin("LuckPerms") != null) + { + useLuckPerms = true; + DiscordWhitelister.getPluginLogger().info("LuckPerms found!"); + } + else + { + DiscordWhitelister.getPluginLogger().warning("LuckPerms was not found but is enabled in the config. Doing nothing..."); + useLuckPerms = false; + } + } if(MainConfig.getMainConfig().getBoolean("assign-perms-with-ultra-perms")) { if(DiscordWhitelister.getPlugin().getServer().getPluginManager().getPlugin("UltraPermissions") != null) diff --git a/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java b/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java index fa0d1af..6fea725 100644 --- a/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java +++ b/src/main/java/uk/co/angrybee/joe/commands/discord/CommandAdd.java @@ -488,8 +488,11 @@ public class CommandAdd // For instructional message successfulWhitelist.set(true); + if(DiscordWhitelister.useLuckPerms) + DiscordClient.LpAssignPermsToUser(finalNameToAdd, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + if(DiscordWhitelister.useUltraPerms) - DiscordClient.AssignPermsToUser(finalNameToAdd, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + DiscordClient.UpAssignPermsToUser(finalNameToAdd, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); if(DiscordWhitelister.useOnWhitelistCommands) { diff --git a/src/main/java/uk/co/angrybee/joe/configs/MainConfig.java b/src/main/java/uk/co/angrybee/joe/configs/MainConfig.java index d30a2d4..2b51026 100644 --- a/src/main/java/uk/co/angrybee/joe/configs/MainConfig.java +++ b/src/main/java/uk/co/angrybee/joe/configs/MainConfig.java @@ -133,6 +133,8 @@ public class MainConfig CheckEntry("assign-perms-with-ultra-perms", false); + CheckEntry("assign-perms-with-luck-perms", false); + CheckEntry("use-on-whitelist-commands", false); CheckEntry("send-instructional-message-on-whitelist", false); diff --git a/src/main/java/uk/co/angrybee/joe/events/OnBanEvent.java b/src/main/java/uk/co/angrybee/joe/events/OnBanEvent.java index f578c2e..a9d9498 100644 --- a/src/main/java/uk/co/angrybee/joe/events/OnBanEvent.java +++ b/src/main/java/uk/co/angrybee/joe/events/OnBanEvent.java @@ -145,8 +145,11 @@ public class OnBanEvent implements Listener UserList.getUserList().set(targetDiscordId, null); // Remove perms on ban if enabled + if(DiscordWhitelister.useLuckPerms) + DiscordClient.LpRemovePermsFromUser(banTarget, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + if(DiscordWhitelister.useUltraPerms) - DiscordClient.RemovePermsFromUser(banTarget, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); + DiscordClient.UpRemovePermsFromUser(banTarget, PermissionsConfig.getPermissionsConfig().getStringList("perms-on-whitelist")); UserList.SaveStore();