From 316869fb997b1ae7f02b63700358505c0887500d Mon Sep 17 00:00:00 2001 From: rmichela Date: Sat, 10 Mar 2012 18:07:56 -0500 Subject: [Bleeding] Added support for amending help topic visibility permissions in help.yml. Addresses BUKKIT-1113 --- src/main/java/org/bukkit/help/GenericCommandHelpTopic.java | 6 +++++- src/main/java/org/bukkit/help/HelpTopic.java | 14 +++++++++++++- src/main/java/org/bukkit/help/IndexHelpTopic.java | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java b/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java index 1bcf4719..639fd316 100644 --- a/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java +++ b/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java @@ -70,6 +70,10 @@ public class GenericCommandHelpTopic extends HelpTopic { return true; } - return command.testPermissionSilent(sender); + if (amendedPermission != null) { + return sender.hasPermission(amendedPermission); + } else { + return command.testPermissionSilent(sender); + } } } diff --git a/src/main/java/org/bukkit/help/HelpTopic.java b/src/main/java/org/bukkit/help/HelpTopic.java index 885ae23b..34d10dbb 100644 --- a/src/main/java/org/bukkit/help/HelpTopic.java +++ b/src/main/java/org/bukkit/help/HelpTopic.java @@ -17,15 +17,27 @@ public abstract class HelpTopic { protected String name; protected String shortText; protected String fullText; + protected String amendedPermission; /** - * Determines if a {@link Player} is allowed to see this help topic. + * Determines if a {@link Player} is allowed to see this help topic. HelpTopic implementations should take + * server administrator wishes into account as set by the {@link HelpTopic#amendCanSee(String)} function. * * @param player The Player in question. * @return True of the Player can see this help topic, false otherwise. */ public abstract boolean canSee(CommandSender player); + /** + * Allows the server administrator to override the permission required to see a help topic. HelpTopic + * implementations should take this into account when determining topic visibility on the + * {@link HelpTopic#canSee(org.bukkit.command.CommandSender)} function. + * @param amendedPermission The permission node the server administrator wishes to apply to this topic. + */ + public void amendCanSee(String amendedPermission) { + this.amendedPermission = amendedPermission; + } + /** * Returns the name of this help topic. * @return The topic name. diff --git a/src/main/java/org/bukkit/help/IndexHelpTopic.java b/src/main/java/org/bukkit/help/IndexHelpTopic.java index 559d2e68..161e8e81 100644 --- a/src/main/java/org/bukkit/help/IndexHelpTopic.java +++ b/src/main/java/org/bukkit/help/IndexHelpTopic.java @@ -41,6 +41,11 @@ public class IndexHelpTopic extends HelpTopic { return sender.hasPermission(permission); } + @Override + public void amendCanSee(String amendedPermission) { + permission = amendedPermission; + } + public String getFullText(CommandSender sender) { StringBuilder sb = new StringBuilder(); -- cgit v1.2.3