From 776ec45701ab202aea3166d68ff5ecf51a7c9acf Mon Sep 17 00:00:00 2001 From: Luck Date: Tue, 28 Jun 2016 18:07:55 +0100 Subject: [PATCH] Multiple fixes/improvements to command system --- bungee/src/main/java/me/lucko/luckperms/MainCommand.java | 2 +- .../java/me/lucko/luckperms/commands/CommandManager.java | 8 +++----- .../java/me/lucko/luckperms/commands/MainCommand.java | 9 +++++++++ .../java/me/lucko/luckperms/commands/SubCommand.java | 2 +- .../luckperms/commands/group/CreateGroupCommand.java | 5 +++++ .../luckperms/commands/group/DeleteGroupCommand.java | 5 +++++ .../lucko/luckperms/commands/group/GroupSubCommand.java | 5 +++++ .../luckperms/commands/group/ListGroupsCommand.java | 7 ++++++- .../me/lucko/luckperms/commands/misc/DebugCommand.java | 5 +++++ .../me/lucko/luckperms/commands/misc/InfoCommand.java | 5 +++++ .../me/lucko/luckperms/commands/misc/SyncCommand.java | 5 +++++ .../me/lucko/luckperms/commands/user/UserSubCommand.java | 5 +++++ 12 files changed, 55 insertions(+), 8 deletions(-) diff --git a/bungee/src/main/java/me/lucko/luckperms/MainCommand.java b/bungee/src/main/java/me/lucko/luckperms/MainCommand.java index be948c9f9..c54c0d034 100644 --- a/bungee/src/main/java/me/lucko/luckperms/MainCommand.java +++ b/bungee/src/main/java/me/lucko/luckperms/MainCommand.java @@ -12,7 +12,7 @@ class MainCommand extends Command { private final CommandManager manager; public MainCommand(CommandManager manager) { - super("luckpermsbungee", "luckperms.use", "bperms", "lpb", "bpermissions", "bp", "bperm"); + super("luckpermsbungee", null, "bperms", "lpb", "bpermissions", "bp", "bperm"); this.manager = manager; } diff --git a/common/src/main/java/me/lucko/luckperms/commands/CommandManager.java b/common/src/main/java/me/lucko/luckperms/commands/CommandManager.java index e65bbf225..c034af289 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/CommandManager.java +++ b/common/src/main/java/me/lucko/luckperms/commands/CommandManager.java @@ -68,11 +68,9 @@ public class CommandManager { if (args.size() == 0) { Util.sendPluginMessage(sender, "&6Running &bLuckPerms " + plugin.getVersion() + "&6."); - if (sender.hasPermission("luckperms.info")) { - for (MainCommand c : mainCommands) { - Util.sendPluginMessage(sender, "&e-> &d" + c.getUsage()); - } - } + mainCommands.stream() + .filter(c -> c.canUse(sender)) + .forEach(c -> Util.sendPluginMessage(sender, "&e-> &d" + c.getUsage())); } else { String c = args.get(0); diff --git a/common/src/main/java/me/lucko/luckperms/commands/MainCommand.java b/common/src/main/java/me/lucko/luckperms/commands/MainCommand.java index c91ca408e..a34ecfa12 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/MainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/MainCommand.java @@ -39,4 +39,13 @@ public abstract class MainCommand { Util.sendPluginMessage(sender, "You do not have permission to use this command!"); } } + + protected boolean canUse(Sender sender) { + for (SubCommand sc : getSubCommands()) { + if (sc.isAuthorized(sender)) { + return true; + } + } + return false; + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/SubCommand.java b/common/src/main/java/me/lucko/luckperms/commands/SubCommand.java index bd3016b26..b1e77ed18 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/SubCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/SubCommand.java @@ -24,7 +24,7 @@ public abstract class SubCommand { } public boolean isAuthorized(Sender sender) { - return sender.hasPermission(permission); + return sender.hasPermission(permission) || sender.hasPermission("luckperms.*"); } public void sendUsage(Sender sender) { diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/CreateGroupCommand.java b/common/src/main/java/me/lucko/luckperms/commands/group/CreateGroupCommand.java index 08151ce9e..acdedbf16 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/CreateGroupCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/CreateGroupCommand.java @@ -48,4 +48,9 @@ public class CreateGroupCommand extends MainCommand { public List getSubCommands() { return new ArrayList<>(); } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.creategroup") || sender.hasPermission("luckperms.*"); + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroupCommand.java b/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroupCommand.java index 50818ea35..7c98e5a97 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroupCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroupCommand.java @@ -60,4 +60,9 @@ public class DeleteGroupCommand extends MainCommand { public List getSubCommands() { return new ArrayList<>(); } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.deletegroup") || sender.hasPermission("luckperms.*"); + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/GroupSubCommand.java b/common/src/main/java/me/lucko/luckperms/commands/group/GroupSubCommand.java index 3ebe581f2..605835133 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/GroupSubCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/GroupSubCommand.java @@ -15,6 +15,11 @@ public abstract class GroupSubCommand extends SubCommand { protected abstract void execute(LuckPermsPlugin plugin, Sender sender, Group group, List args); + @Override + public boolean isAuthorized(Sender sender) { + return sender.hasPermission(getPermission()) || sender.hasPermission("luckperms.group.*") || sender.hasPermission("luckperms.*"); + } + protected void saveGroup(Group group, Sender sender, LuckPermsPlugin plugin) { plugin.getDatastore().saveGroup(group, success -> { if (success) { diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/ListGroupsCommand.java b/common/src/main/java/me/lucko/luckperms/commands/group/ListGroupsCommand.java index 1afbd2abc..d25dafb52 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/ListGroupsCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/ListGroupsCommand.java @@ -32,6 +32,11 @@ public class ListGroupsCommand extends MainCommand { @Override public List getSubCommands() { - return null; + return new ArrayList<>(); + } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.listgroups") || sender.hasPermission("luckperms.*"); } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/misc/DebugCommand.java b/common/src/main/java/me/lucko/luckperms/commands/misc/DebugCommand.java index 141c5cce0..bab6fc344 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/misc/DebugCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/misc/DebugCommand.java @@ -31,4 +31,9 @@ public class DebugCommand extends MainCommand { public List getSubCommands() { return new ArrayList<>(); } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.debug") || sender.hasPermission("luckperms.*"); + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/misc/InfoCommand.java b/common/src/main/java/me/lucko/luckperms/commands/misc/InfoCommand.java index 1c4f812b6..8d8dd8d55 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/misc/InfoCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/misc/InfoCommand.java @@ -30,4 +30,9 @@ public class InfoCommand extends MainCommand { public List getSubCommands() { return new ArrayList<>(); } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.info") || sender.hasPermission("luckperms.*"); + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/misc/SyncCommand.java b/common/src/main/java/me/lucko/luckperms/commands/misc/SyncCommand.java index 6f45d1e4e..98364d415 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/misc/SyncCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/misc/SyncCommand.java @@ -29,4 +29,9 @@ public class SyncCommand extends MainCommand { public List getSubCommands() { return new ArrayList<>(); } + + @Override + protected boolean canUse(Sender sender) { + return sender.hasPermission("luckperms.sync") || sender.hasPermission("luckperms.*"); + } } diff --git a/common/src/main/java/me/lucko/luckperms/commands/user/UserSubCommand.java b/common/src/main/java/me/lucko/luckperms/commands/user/UserSubCommand.java index 849daaf6f..a42ccb2cb 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/user/UserSubCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/user/UserSubCommand.java @@ -15,6 +15,11 @@ public abstract class UserSubCommand extends SubCommand { protected abstract void execute(LuckPermsPlugin plugin, Sender sender, User user, List args); + @Override + public boolean isAuthorized(Sender sender) { + return sender.hasPermission(getPermission()) || sender.hasPermission("luckperms.user.*") || sender.hasPermission("luckperms.*"); + } + protected void saveUser(User user, Sender sender, LuckPermsPlugin plugin) { user.refreshPermissions();