From 0293f10d23f787efdc5264780915145fff3a1cac Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Wed, 8 Feb 2012 17:03:50 -0600 Subject: [PATCH] [Bleeding] Implemented customizable permission messages. By: Wesley Wolfe --- .../main/java/org/bukkit/command/Command.java | 30 ++++++++++++++++++- .../command/PluginCommandYamlParser.java | 5 ++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/paper-api/src/main/java/org/bukkit/command/Command.java b/paper-api/src/main/java/org/bukkit/command/Command.java index 6ce9611957..7c82fb0d00 100644 --- a/paper-api/src/main/java/org/bukkit/command/Command.java +++ b/paper-api/src/main/java/org/bukkit/command/Command.java @@ -21,6 +21,7 @@ public abstract class Command { protected String description = ""; protected String usageMessage; private String permission; + private String permissionMessage; protected Command(String name) { this(name, "", "/" + name, new ArrayList()); @@ -86,7 +87,14 @@ public abstract class Command { return true; } - target.sendMessage(ChatColor.RED + "I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error."); + if (permissionMessage == null) { + target.sendMessage(ChatColor.RED + "I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error."); + } else if (permissionMessage.length() != 0) { + for (String line : permissionMessage.replace("", permission).split("\n")) { + target.sendMessage(line); + } + } + return false; } @@ -171,6 +179,15 @@ public abstract class Command { return activeAliases; } + /** + * Returns a message to be displayed on a failed permission check for this command + * + * @return Permission check failed message + */ + public String getPermissionMessage() { + return permissionMessage; + } + /** * Gets a brief description of this command * @@ -214,6 +231,17 @@ public abstract class Command { return this; } + /** + * Sets the message sent when a permission check fails + * + * @param permissionMessage New permission message, null to indicate default message, or an empty string to indicate no message + * @return This command object, for linking + */ + public Command setPermissionMessage(String permissionMessage) { + this.permissionMessage = permissionMessage; + return this; + } + /** * Sets the example usage of this command * diff --git a/paper-api/src/main/java/org/bukkit/command/PluginCommandYamlParser.java b/paper-api/src/main/java/org/bukkit/command/PluginCommandYamlParser.java index bce3f80cf7..e7feea4909 100644 --- a/paper-api/src/main/java/org/bukkit/command/PluginCommandYamlParser.java +++ b/paper-api/src/main/java/org/bukkit/command/PluginCommandYamlParser.java @@ -27,6 +27,7 @@ public class PluginCommandYamlParser { Object usage = entry.getValue().get("usage"); Object aliases = entry.getValue().get("aliases"); Object permission = entry.getValue().get("permission"); + Object permissionMessage = entry.getValue().get("permission-message"); if (description != null) { newCmd.setDescription(description.toString()); @@ -54,6 +55,10 @@ public class PluginCommandYamlParser { newCmd.setPermission(permission.toString()); } + if (permissionMessage != null) { + newCmd.setPermissionMessage(permissionMessage.toString()); + } + pluginCmds.add(newCmd); } }