From a01bd759d278e61586480000df0f05c79fb13455 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Mon, 2 Aug 2021 22:33:47 -0700 Subject: [PATCH] Fix kyori, add permissionlist command, fix luckperms getting wrong context --- api/build.gradle.kts | 2 +- .../us/ajg0702/queue/api/LogicGetter.java | 4 ++ .../queue/api/commands/IBaseCommand.java | 2 + common/build.gradle.kts | 2 +- .../ajg0702/queue/commands/BaseCommand.java | 5 ++ .../queue/commands/commands/manage/ISP.java | 5 ++ .../commands/manage/ManageCommand.java | 2 + .../commands/manage/PermissionList.java | 64 +++++++++++++++++++ .../queue/commands/commands/manage/Tasks.java | 5 ++ .../us/ajg0702/queue/common/QueueMain.java | 10 ++- .../ajg0702/queue/logic/LogicGetterImpl.java | 8 +++ free/build.gradle.kts | 2 +- platforms/bungeecord/build.gradle.kts | 6 +- .../platforms/bungeecord/BungeeQueue.java | 6 +- platforms/velocity/build.gradle.kts | 4 +- premium/build.gradle.kts | 2 +- .../ajg0702/queue/logic/LogicGetterImpl.java | 17 ++++- .../us/ajg0702/queue/logic/PremiumLogic.java | 4 ++ .../permissions/hooks/LuckPermsHook.java | 2 +- spigot/build.gradle.kts | 2 +- 20 files changed, 137 insertions(+), 17 deletions(-) create mode 100644 common/src/main/java/us/ajg0702/queue/commands/commands/manage/PermissionList.java diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 832835b..e0874fc 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -6,7 +6,7 @@ plugins { group = "us.ajg0702.queue.api" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } diff --git a/api/src/main/java/us/ajg0702/queue/api/LogicGetter.java b/api/src/main/java/us/ajg0702/queue/api/LogicGetter.java index 09bbf59..af2b7e9 100644 --- a/api/src/main/java/us/ajg0702/queue/api/LogicGetter.java +++ b/api/src/main/java/us/ajg0702/queue/api/LogicGetter.java @@ -1,9 +1,13 @@ package us.ajg0702.queue.api; +import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.utils.common.Config; +import java.util.List; + @SuppressWarnings("unused") public interface LogicGetter { Logic constructLogic(); AliasManager constructAliasManager(Config config); + List getPermissions(AdaptedPlayer player); } diff --git a/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java b/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java index 04bca20..b4bc659 100644 --- a/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java +++ b/api/src/main/java/us/ajg0702/queue/api/commands/IBaseCommand.java @@ -16,6 +16,8 @@ public interface IBaseCommand { String getPermission(); + boolean showInTabComplete(); + Messages getMessages(); void addSubCommand(ISubCommand subCommand); diff --git a/common/build.gradle.kts b/common/build.gradle.kts index e344096..4cdefba 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -6,7 +6,7 @@ plugins { group = "us.ajg0702.queue.common" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } } diff --git a/common/src/main/java/us/ajg0702/queue/commands/BaseCommand.java b/common/src/main/java/us/ajg0702/queue/commands/BaseCommand.java index bdec887..b2e0718 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/BaseCommand.java +++ b/common/src/main/java/us/ajg0702/queue/commands/BaseCommand.java @@ -31,6 +31,11 @@ public class BaseCommand implements IBaseCommand { return null; } + @Override + public boolean showInTabComplete() { + return true; + } + @Override public Messages getMessages() { return null; diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ISP.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ISP.java index f36bd45..ad29978 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ISP.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ISP.java @@ -27,6 +27,11 @@ public class ISP extends SubCommand { return ImmutableList.of(); } + @Override + public boolean showInTabComplete() { + return false; + } + @Override public String getPermission() { return null; diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java index e1518fc..e97d81f 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java @@ -27,6 +27,7 @@ public class ManageCommand extends BaseCommand { addSubCommand(new ISP(main)); addSubCommand(new QueueList(main)); addSubCommand(new Send(main)); + addSubCommand(new PermissionList(main)); } @@ -87,6 +88,7 @@ public class ManageCommand extends BaseCommand { } List commands = new ArrayList<>(); for(ISubCommand subCommand : subCommands) { + if(!subCommand.showInTabComplete()) continue; commands.add(subCommand.getName()); commands.addAll(subCommand.getAliases()); } diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/PermissionList.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/PermissionList.java new file mode 100644 index 0000000..3626926 --- /dev/null +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/PermissionList.java @@ -0,0 +1,64 @@ +package us.ajg0702.queue.commands.commands.manage; + +import com.google.common.collect.ImmutableList; +import net.kyori.adventure.text.Component; +import us.ajg0702.queue.api.commands.ICommandSender; +import us.ajg0702.queue.commands.SubCommand; +import us.ajg0702.queue.common.QueueMain; +import us.ajg0702.utils.common.Messages; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class PermissionList extends SubCommand { + + final QueueMain main; + public PermissionList(QueueMain main) { + this.main = main; + } + + @Override + public String getName() { + return "permissionlist"; + } + + @Override + public ImmutableList getAliases() { + return ImmutableList.of(); + } + + @Override + public boolean showInTabComplete() { + return false; + } + + @Override + public String getPermission() { + return null; + } + + @Override + public Messages getMessages() { + return main.getMessages(); + } + + @Override + public void execute(ICommandSender sender, String[] args) { + if(!checkPermission(sender)) return; + List permissions = main.getLogicGetter().getPermissions(main.getPlatformMethods().senderToPlayer(sender)); + if(permissions == null) { + sender.sendMessage(Component.text("no permission handler")); + return; + } + permissions.forEach(s -> { + if(!s.toLowerCase(Locale.ROOT).contains("ajqueue")) return; + sender.sendMessage(Component.text(s)); + }); + } + + @Override + public List autoComplete(ICommandSender sender, String[] args) { + return new ArrayList<>(); + } +} diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Tasks.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Tasks.java index 818875f..6d44014 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Tasks.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/Tasks.java @@ -32,6 +32,11 @@ public class Tasks extends SubCommand { return "ajqueue.manage.tasks"; } + @Override + public boolean showInTabComplete() { + return false; + } + @Override public Messages getMessages() { return main.getMessages(); diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java index 8f1dc22..8d27916 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueMain.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueMain.java @@ -75,6 +75,10 @@ public class QueueMain { return queueManager; } + private final LogicGetter logicGetter; + public LogicGetter getLogicGetter() { + return logicGetter; + } public void shutdown() { taskManager.shutdown(); @@ -86,6 +90,8 @@ public class QueueMain { public QueueMain(QueueLogger logger, PlatformMethods platformMethods, File dataFolder) { + logicGetter = new LogicGetterImpl(); + if(instance != null) { try { throw new Exception("ajQueue QueueMain is being initialized when there is already one! Still initializing it, but this can cause issues."); @@ -114,8 +120,8 @@ public class QueueMain { queueManager = new QueueManagerImpl(this); - logic = new LogicGetterImpl().constructLogic(); - aliasManager = new LogicGetterImpl().constructAliasManager(config); + logic = logicGetter.constructLogic(); + aliasManager = logicGetter.constructAliasManager(config); taskManager.rescheduleTasks(); diff --git a/common/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java b/common/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java index 611dbff..37598cc 100644 --- a/common/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java +++ b/common/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java @@ -2,8 +2,11 @@ package us.ajg0702.queue.logic; import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.Logic; +import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.utils.common.Config; +import java.util.List; + public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter { @Override @@ -15,4 +18,9 @@ public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter { public AliasManager constructAliasManager(Config config) { return new FreeAliasManager(config); } + + @Override + public List getPermissions(AdaptedPlayer player) { + return null; + } } diff --git a/free/build.gradle.kts b/free/build.gradle.kts index f8a2e54..289c987 100644 --- a/free/build.gradle.kts +++ b/free/build.gradle.kts @@ -7,7 +7,7 @@ plugins { group = "us.ajg0702.queue" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } diff --git a/platforms/bungeecord/build.gradle.kts b/platforms/bungeecord/build.gradle.kts index 2913b87..2271fe3 100644 --- a/platforms/bungeecord/build.gradle.kts +++ b/platforms/bungeecord/build.gradle.kts @@ -6,7 +6,7 @@ plugins { group = "us.ajg0702.queue.platforms.bungeecord" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") } @@ -17,9 +17,9 @@ dependencies { compileOnly("com.google.guava:guava:30.1.1-jre") compileOnly("us.ajg0702:ajUtils:1.1.7") - compileOnly("net.md-5:bungeecord-api:1.14-SNAPSHOT") + compileOnly("net.md-5:bungeecord-api:1.16-R0.4") - compileOnly("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") + compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") implementation("net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT") compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java index 1d41a21..519dfb5 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java @@ -36,6 +36,8 @@ public class BungeeQueue extends Plugin implements Listener { QueueLogger logger = new BungeeLogger(getLogger()); File dataFolder = getDataFolder(); + adventure = BungeeAudiences.create(this); + main = new QueueMain( logger, new BungeeMethods(this, getProxy(), logger), @@ -59,15 +61,13 @@ public class BungeeQueue extends Plugin implements Listener { getProxy().getPluginManager().registerListener(this, this); - adventure = BungeeAudiences.create(this); - } private static BungeeAudiences adventure; public static @NonNull BungeeAudiences adventure() { if(adventure == null) { - throw new IllegalStateException("Cannot retrieve audience provider while plugin is not enabled"); + throw new IllegalStateException("Cannot retrieve audience provider. Not loaded yet."); } return adventure; } diff --git a/platforms/velocity/build.gradle.kts b/platforms/velocity/build.gradle.kts index 2079a8e..0b51e4e 100644 --- a/platforms/velocity/build.gradle.kts +++ b/platforms/velocity/build.gradle.kts @@ -6,7 +6,7 @@ plugins { group = "us.ajg0702.queue.platforms.velocity" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") } @@ -19,7 +19,7 @@ dependencies { compileOnly("com.velocitypowered:velocity-api:3.0.0") annotationProcessor("com.velocitypowered:velocity-api:3.0.0") - compileOnly("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") + compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") implementation(project(":common")) implementation(project(":api")) diff --git a/premium/build.gradle.kts b/premium/build.gradle.kts index 6c79fbc..4189b2a 100644 --- a/premium/build.gradle.kts +++ b/premium/build.gradle.kts @@ -7,7 +7,7 @@ plugins { group = "us.ajg0702.queue" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } diff --git a/premium/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java b/premium/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java index 3cc1a27..1613779 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/LogicGetterImpl.java @@ -3,17 +3,32 @@ package us.ajg0702.queue.logic; import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.LogicGetter; +import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.common.QueueMain; +import us.ajg0702.queue.logic.permissions.PermissionGetter; import us.ajg0702.utils.common.Config; +import java.util.List; + public class LogicGetterImpl implements LogicGetter { + PremiumLogic logic; + @Override public Logic constructLogic() { - return new PremiumLogic(QueueMain.getInstance()); + if(logic == null) { + logic = new PremiumLogic(QueueMain.getInstance()); + } + return logic; } @Override public AliasManager constructAliasManager(Config config) { return new PremiumAliasManager(config); } + + @Override + public List getPermissions(AdaptedPlayer player) { + if(logic == null) return null; + return logic.getPermissionGetter().getSelected().getPermissions(player); + } } diff --git a/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java b/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java index 4818bd6..7cdd042 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java @@ -12,6 +12,10 @@ import us.ajg0702.queue.logic.permissions.PermissionGetter; public class PremiumLogic implements Logic { + public PermissionGetter getPermissionGetter() { + return permissionGetter; + } + private final PermissionGetter permissionGetter; public PremiumLogic(QueueMain main) { permissionGetter = new PermissionGetter(main); diff --git a/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/LuckPermsHook.java b/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/LuckPermsHook.java index f7b9c53..1b21b79 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/LuckPermsHook.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/LuckPermsHook.java @@ -36,7 +36,7 @@ public class LuckPermsHook implements PermissionHook { User user = api.getUserManager().getUser(player.getUniqueId()); assert user != null; - SortedSet nodes = user.resolveDistinctInheritedNodes(QueryOptions.defaultContextualOptions()); + SortedSet nodes = user.resolveDistinctInheritedNodes(QueryOptions.nonContextual()); List perms = new ArrayList<>(); diff --git a/spigot/build.gradle.kts b/spigot/build.gradle.kts index f43f38c..aec53f1 100644 --- a/spigot/build.gradle.kts +++ b/spigot/build.gradle.kts @@ -6,7 +6,7 @@ plugins { group = "us.ajg0702.queue.spigot" repositories { - mavenLocal() + //mavenLocal() mavenCentral() maven { url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi/") }