diff --git a/paper-api/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java b/paper-api/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java index 1bcf471979..639fd3166e 100644 --- a/paper-api/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java +++ b/paper-api/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/paper-api/src/main/java/org/bukkit/help/HelpTopic.java b/paper-api/src/main/java/org/bukkit/help/HelpTopic.java index 885ae23b6e..34d10dbb61 100644 --- a/paper-api/src/main/java/org/bukkit/help/HelpTopic.java +++ b/paper-api/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/paper-api/src/main/java/org/bukkit/help/IndexHelpTopic.java b/paper-api/src/main/java/org/bukkit/help/IndexHelpTopic.java index 559d2e6850..161e8e81f0 100644 --- a/paper-api/src/main/java/org/bukkit/help/IndexHelpTopic.java +++ b/paper-api/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();