From 69dc02b2c23af3a229d538c43ac5c60c82e8cab0 Mon Sep 17 00:00:00 2001 From: Luck Date: Mon, 23 Jan 2017 21:03:58 +0000 Subject: [PATCH] Add /lp check command --- .../common/commands/CommandManager.java | 2 + .../common/commands/misc/CheckCommand.java | 81 +++++++++++++++++++ .../luckperms/common/constants/Message.java | 4 + .../common/constants/Permission.java | 3 +- default-lang.yml | 4 + 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/CommandManager.java b/common/src/main/java/me/lucko/luckperms/common/commands/CommandManager.java index 8b4900e9e..2246c20e7 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/CommandManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/CommandManager.java @@ -33,6 +33,7 @@ import me.lucko.luckperms.common.commands.group.GroupMainCommand; import me.lucko.luckperms.common.commands.group.ListGroups; import me.lucko.luckperms.common.commands.log.LogMainCommand; import me.lucko.luckperms.common.commands.migration.MigrationMainCommand; +import me.lucko.luckperms.common.commands.misc.CheckCommand; import me.lucko.luckperms.common.commands.misc.ExportCommand; import me.lucko.luckperms.common.commands.misc.ImportCommand; import me.lucko.luckperms.common.commands.misc.InfoCommand; @@ -89,6 +90,7 @@ public class CommandManager { .add(new InfoCommand()) .add(new VerboseCommand()) .add(new SearchCommand()) + .add(new CheckCommand()) .add(new NetworkSyncCommand()) .add(new ImportCommand()) .add(new ExportCommand()) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java new file mode 100644 index 000000000..d77144a2f --- /dev/null +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2016 Lucko (Luck) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package me.lucko.luckperms.common.commands.misc; + +import me.lucko.luckperms.api.Tristate; +import me.lucko.luckperms.common.LuckPermsPlugin; +import me.lucko.luckperms.common.caching.UserCache; +import me.lucko.luckperms.common.commands.Arg; +import me.lucko.luckperms.common.commands.CommandException; +import me.lucko.luckperms.common.commands.CommandResult; +import me.lucko.luckperms.common.commands.SingleCommand; +import me.lucko.luckperms.common.commands.sender.Sender; +import me.lucko.luckperms.common.commands.utils.Util; +import me.lucko.luckperms.common.constants.Message; +import me.lucko.luckperms.common.constants.Permission; +import me.lucko.luckperms.common.core.model.User; +import me.lucko.luckperms.common.utils.Predicates; + +import java.util.List; +import java.util.UUID; + +public class CheckCommand extends SingleCommand { + public CheckCommand() { + super("Check", "Perform a standard permission check on an online player", + "/%s search ", Permission.CHECK, Predicates.not(2), + Arg.list( + Arg.create("user", true, "the user to check"), + Arg.create("permission", true, "the permission to check for") + ) + ); + } + + @Override + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, List args, String label) throws CommandException { + String target = args.get(0); + String permission = args.get(1); + + User user; + UUID u = Util.parseUuid(target); + if (u != null) { + user = plugin.getUserManager().get(u); + } else { + user = plugin.getUserManager().getByUsername(target); + } + + if (user == null) { + Message.USER_NOT_ONLINE.send(sender, target); + return CommandResult.STATE_ERROR; + } + + UserCache data = user.getUserData(); + if (data == null) { + Message.USER_NO_DATA.send(sender, user.getName()); + return CommandResult.STATE_ERROR; + } + + Tristate tristate = data.getPermissionData(plugin.getContextForUser(user)).getPermissionValue(permission); + Message.CHECK_RESULT.send(sender, user.getName(), permission, Util.formatTristate(tristate)); + return CommandResult.SUCCESS; + } +} diff --git a/common/src/main/java/me/lucko/luckperms/common/constants/Message.java b/common/src/main/java/me/lucko/luckperms/common/constants/Message.java index 6fa889e45..ac16051d0 100644 --- a/common/src/main/java/me/lucko/luckperms/common/constants/Message.java +++ b/common/src/main/java/me/lucko/luckperms/common/constants/Message.java @@ -64,6 +64,8 @@ public enum Message { * Loading / Saving */ USER_NOT_FOUND("&bUser could not be found.", true), + USER_NOT_ONLINE("&bUser &a{0}&b is not online.", true), + USER_NO_DATA("&bUser &a{0}&b does not have any data loaded.", true), USER_SAVE_SUCCESS("&7(User data was saved to storage)", true), USER_SAVE_ERROR("There was an error whilst saving the user.", true), USER_CREATE_FAIL("There was an error whilst creating a new user.", true), @@ -106,6 +108,8 @@ public enum Message { SEARCH_SHOWING_USERS_WITH_PAGE("&bShowing user entries: {0}", true), SEARCH_SHOWING_GROUPS_WITH_PAGE("&bShowing group entries: {0}", true), + CHECK_RESULT("&aPermission check result for user &b{0}&a for permission &b{1}&a in current contexts: &f{2}", true), + CREATE_SUCCESS("&b{0}&a was successfully created.", true), DELETE_SUCCESS("&b{0}&a was successfully deleted.", true), RENAME_SUCCESS("&b{0}&a was successfully renamed to &b{1}&a.", true), diff --git a/common/src/main/java/me/lucko/luckperms/common/constants/Permission.java b/common/src/main/java/me/lucko/luckperms/common/constants/Permission.java index 2f1d27468..e092888ac 100644 --- a/common/src/main/java/me/lucko/luckperms/common/constants/Permission.java +++ b/common/src/main/java/me/lucko/luckperms/common/constants/Permission.java @@ -37,8 +37,9 @@ public enum Permission { SYNC(list("sync"), Type.NONE), INFO(list("info"), Type.NONE), - SEARCH(list("search"), Type.NONE), VERBOSE(list("verbose"), Type.NONE), + SEARCH(list("search"), Type.NONE), + CHECK(list("check"), Type.NONE), IMPORT(list("import"), Type.NONE), EXPORT(list("export"), Type.NONE), RELOAD_CONFIG(list("reloadconfig"), Type.NONE), diff --git a/default-lang.yml b/default-lang.yml index 4a98986f2..9f5d3850c 100644 --- a/default-lang.yml +++ b/default-lang.yml @@ -25,6 +25,8 @@ does-not-have-temp-permission: "{0} does not have this permission set temporaril user-not-found: "&bUser could not be found." +user-not-online: "&bUser &a{0}&b is not online." +user-no-data: "&bUser &a{0}&b does not have any data loaded." user-save-success: "&7(User data was saved to storage)" user-save-error: "There was an error whilst saving the user." user-create-fail: "There was an error whilst creating a new user." @@ -64,6 +66,8 @@ search-showing-groups: "&bShowing group entries:" search-showing-users-with-page: "&bShowing user entries: {0}" search-showing-groups-with-page: "&bShowing group entries: {0}" +check-result: "&aPermission check result for user &b{0}&a for permission &b{1}&a in current contexts: &f{2}" + create-success: "&b{0}&a was successfully created." delete-success: "&b{0}&a was successfully deleted." rename-success: "&b{0}&a was successfully renamed to &b{1}&a."