Fix kyori, add permissionlist command, fix luckperms getting wrong context

This commit is contained in:
ajgeiss0702
2021-08-02 22:33:47 -07:00
parent 9d1161247b
commit a01bd759d2
20 changed files with 137 additions and 17 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ plugins {
group = "us.ajg0702.queue.api" group = "us.ajg0702.queue.api"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
@@ -1,9 +1,13 @@
package us.ajg0702.queue.api; package us.ajg0702.queue.api;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public interface LogicGetter { public interface LogicGetter {
Logic constructLogic(); Logic constructLogic();
AliasManager constructAliasManager(Config config); AliasManager constructAliasManager(Config config);
List<String> getPermissions(AdaptedPlayer player);
} }
@@ -16,6 +16,8 @@ public interface IBaseCommand {
String getPermission(); String getPermission();
boolean showInTabComplete();
Messages getMessages(); Messages getMessages();
void addSubCommand(ISubCommand subCommand); void addSubCommand(ISubCommand subCommand);
+1 -1
View File
@@ -6,7 +6,7 @@ plugins {
group = "us.ajg0702.queue.common" group = "us.ajg0702.queue.common"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
} }
@@ -31,6 +31,11 @@ public class BaseCommand implements IBaseCommand {
return null; return null;
} }
@Override
public boolean showInTabComplete() {
return true;
}
@Override @Override
public Messages getMessages() { public Messages getMessages() {
return null; return null;
@@ -27,6 +27,11 @@ public class ISP extends SubCommand {
return ImmutableList.of(); return ImmutableList.of();
} }
@Override
public boolean showInTabComplete() {
return false;
}
@Override @Override
public String getPermission() { public String getPermission() {
return null; return null;
@@ -27,6 +27,7 @@ public class ManageCommand extends BaseCommand {
addSubCommand(new ISP(main)); addSubCommand(new ISP(main));
addSubCommand(new QueueList(main)); addSubCommand(new QueueList(main));
addSubCommand(new Send(main)); addSubCommand(new Send(main));
addSubCommand(new PermissionList(main));
} }
@@ -87,6 +88,7 @@ public class ManageCommand extends BaseCommand {
} }
List<String> commands = new ArrayList<>(); List<String> commands = new ArrayList<>();
for(ISubCommand subCommand : subCommands) { for(ISubCommand subCommand : subCommands) {
if(!subCommand.showInTabComplete()) continue;
commands.add(subCommand.getName()); commands.add(subCommand.getName());
commands.addAll(subCommand.getAliases()); commands.addAll(subCommand.getAliases());
} }
@@ -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<String> 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<String> 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<String> autoComplete(ICommandSender sender, String[] args) {
return new ArrayList<>();
}
}
@@ -32,6 +32,11 @@ public class Tasks extends SubCommand {
return "ajqueue.manage.tasks"; return "ajqueue.manage.tasks";
} }
@Override
public boolean showInTabComplete() {
return false;
}
@Override @Override
public Messages getMessages() { public Messages getMessages() {
return main.getMessages(); return main.getMessages();
@@ -75,6 +75,10 @@ public class QueueMain {
return queueManager; return queueManager;
} }
private final LogicGetter logicGetter;
public LogicGetter getLogicGetter() {
return logicGetter;
}
public void shutdown() { public void shutdown() {
taskManager.shutdown(); taskManager.shutdown();
@@ -86,6 +90,8 @@ public class QueueMain {
public QueueMain(QueueLogger logger, PlatformMethods platformMethods, File dataFolder) { public QueueMain(QueueLogger logger, PlatformMethods platformMethods, File dataFolder) {
logicGetter = new LogicGetterImpl();
if(instance != null) { if(instance != null) {
try { try {
throw new Exception("ajQueue QueueMain is being initialized when there is already one! Still initializing it, but this can cause issues."); 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); queueManager = new QueueManagerImpl(this);
logic = new LogicGetterImpl().constructLogic(); logic = logicGetter.constructLogic();
aliasManager = new LogicGetterImpl().constructAliasManager(config); aliasManager = logicGetter.constructAliasManager(config);
taskManager.rescheduleTasks(); taskManager.rescheduleTasks();
@@ -2,8 +2,11 @@ package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.Logic;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List;
public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter { public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter {
@Override @Override
@@ -15,4 +18,9 @@ public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter {
public AliasManager constructAliasManager(Config config) { public AliasManager constructAliasManager(Config config) {
return new FreeAliasManager(config); return new FreeAliasManager(config);
} }
@Override
public List<String> getPermissions(AdaptedPlayer player) {
return null;
}
} }
+1 -1
View File
@@ -7,7 +7,7 @@ plugins {
group = "us.ajg0702.queue" group = "us.ajg0702.queue"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") }
+3 -3
View File
@@ -6,7 +6,7 @@ plugins {
group = "us.ajg0702.queue.platforms.bungeecord" group = "us.ajg0702.queue.platforms.bungeecord"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") } 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("com.google.guava:guava:30.1.1-jre")
compileOnly("us.ajg0702:ajUtils:1.1.7") 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") implementation("net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT")
compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT")
@@ -36,6 +36,8 @@ public class BungeeQueue extends Plugin implements Listener {
QueueLogger logger = new BungeeLogger(getLogger()); QueueLogger logger = new BungeeLogger(getLogger());
File dataFolder = getDataFolder(); File dataFolder = getDataFolder();
adventure = BungeeAudiences.create(this);
main = new QueueMain( main = new QueueMain(
logger, logger,
new BungeeMethods(this, getProxy(), logger), new BungeeMethods(this, getProxy(), logger),
@@ -59,15 +61,13 @@ public class BungeeQueue extends Plugin implements Listener {
getProxy().getPluginManager().registerListener(this, this); getProxy().getPluginManager().registerListener(this, this);
adventure = BungeeAudiences.create(this);
} }
private static BungeeAudiences adventure; private static BungeeAudiences adventure;
public static @NonNull BungeeAudiences adventure() { public static @NonNull BungeeAudiences adventure() {
if(adventure == null) { 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; return adventure;
} }
+2 -2
View File
@@ -6,7 +6,7 @@ plugins {
group = "us.ajg0702.queue.platforms.velocity" group = "us.ajg0702.queue.platforms.velocity"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") } maven { url = uri("https://nexus.velocitypowered.com/repository/maven-public/") }
@@ -19,7 +19,7 @@ dependencies {
compileOnly("com.velocitypowered:velocity-api:3.0.0") compileOnly("com.velocitypowered:velocity-api:3.0.0")
annotationProcessor("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(":common"))
implementation(project(":api")) implementation(project(":api"))
+1 -1
View File
@@ -7,7 +7,7 @@ plugins {
group = "us.ajg0702.queue" group = "us.ajg0702.queue"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.ajg0702.us") } maven { url = uri("https://repo.ajg0702.us") }
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") }
@@ -3,17 +3,32 @@ package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.Logic;
import us.ajg0702.queue.api.LogicGetter; import us.ajg0702.queue.api.LogicGetter;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionGetter;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List;
public class LogicGetterImpl implements LogicGetter { public class LogicGetterImpl implements LogicGetter {
PremiumLogic logic;
@Override @Override
public Logic constructLogic() { public Logic constructLogic() {
return new PremiumLogic(QueueMain.getInstance()); if(logic == null) {
logic = new PremiumLogic(QueueMain.getInstance());
}
return logic;
} }
@Override @Override
public AliasManager constructAliasManager(Config config) { public AliasManager constructAliasManager(Config config) {
return new PremiumAliasManager(config); return new PremiumAliasManager(config);
} }
@Override
public List<String> getPermissions(AdaptedPlayer player) {
if(logic == null) return null;
return logic.getPermissionGetter().getSelected().getPermissions(player);
}
} }
@@ -12,6 +12,10 @@ import us.ajg0702.queue.logic.permissions.PermissionGetter;
public class PremiumLogic implements Logic { public class PremiumLogic implements Logic {
public PermissionGetter getPermissionGetter() {
return permissionGetter;
}
private final PermissionGetter permissionGetter; private final PermissionGetter permissionGetter;
public PremiumLogic(QueueMain main) { public PremiumLogic(QueueMain main) {
permissionGetter = new PermissionGetter(main); permissionGetter = new PermissionGetter(main);
@@ -36,7 +36,7 @@ public class LuckPermsHook implements PermissionHook {
User user = api.getUserManager().getUser(player.getUniqueId()); User user = api.getUserManager().getUser(player.getUniqueId());
assert user != null; assert user != null;
SortedSet<Node> nodes = user.resolveDistinctInheritedNodes(QueryOptions.defaultContextualOptions()); SortedSet<Node> nodes = user.resolveDistinctInheritedNodes(QueryOptions.nonContextual());
List<String> perms = new ArrayList<>(); List<String> perms = new ArrayList<>();
+1 -1
View File
@@ -6,7 +6,7 @@ plugins {
group = "us.ajg0702.queue.spigot" group = "us.ajg0702.queue.spigot"
repositories { repositories {
mavenLocal() //mavenLocal()
mavenCentral() mavenCentral()
maven { url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi/") } maven { url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi/") }