Inactive [INFO] Help 3 - a Smarter /help [1060]

Discussion in 'Inactive/Unsupported Plugins' started by jascotty2, Apr 19, 2011.

  1. Offline


    Help - The Smart /help Menu
    Version: 0.3.2
    Download: Help.jar

    This is a new thread for the Help version that i maintain
    (tkelly hasn't been on for about a month as of this submission, and no updates to his version since 531)

    Version 0.3 is (finally) out! :D

    (any suggestions for what to work on next are welcome ;) )

    Help has support for both GroupManager and Permissions, so you can use either one. You can also use neither if you so choose. Help will not force you to any which one.

    What is Help?
    Help is a clean and advanced /help menu. Help separates "main" commands from secondary ones, allowing you to have a clean initial menu, but still able to dig down and get access to every possible command.

    It is also the first /help menu to take into account permissions; some commands simply aren't applicable to all users, so those commands should clearly not be visible to those users. Now, default users' help menus won't be cluttered with commands for admin tools they have no way of using.

    Scroll down for a preview, or see below for how to hook into Help :)

    Help Commands
    /help (#) : Shows the /help menu.
    /help (#)[/I][/B]:[/FONT] Shows all the help entries for [I][plugin][/I]. [B][FONT=courier new]/help plugins[/FONT][/B] : Shows a list of all the plugins with Help entries. [FONT=courier new][B]/help search [I][query][/I][/B][/FONT] : Searches for [I][query][/I] within it' entries. [B][FONT=courier new]/help reload[/FONT][/B] : Reloads the entries from ExtraHelp.yml. [SIZE=5][B][FONT=helvetica]Plugin Support[/FONT][/B][/SIZE] Help requires that plugins tell Help about the commands they use. This makes sure that the commands and permissions are accurate and precise (rather than trying to auto fetch commands). Because it's ridiculous to assume that all plugins will instantly jump up and support Help (we can dream can't we? :D), server admins can mimic this behavior by supplying... [SIZE=5][B][FONT=helvetica]Custom ExtraHelp/[/FONT][/B][/SIZE] I'll also cover how you can add custom commands to the /help menu here. Each command has a "name", this name is only for you, as Help doesn't care about it (they just need to be unique names). In the following example the names are 'versions', 'pluginversions', 'kick' and 'essentialswho'. Within these Nodes you [FONT=Georgia][U][I][B]need[/B][/I][/U][/FONT] [B][SIZE=4]2[/SIZE][/B] things: command, description, [SIZE=2][S]and plugin[/S][/SIZE]. These should be self-explanatory. The two optional pieces are "main" and "permissions" [INDENT=1]The previously required "plugin" node has been replaced by the filename itself.[/INDENT] [INDENT=1]so if you have entries for "Minecraft", put those entries within "Minecraft.yml" in help's ExtreHelp folder.[/INDENT] [INDENT=1]If you have many commands & don't want them cluttering the same file (like worldedit), you can put them in a folder instead (the folder name will be the name used for plugin)[/INDENT] If you specify a "main", you can choose whether or not the command is important enough to show up on the main /help menu; if you leave it blank or skip it, it will default to 'false' If you specify a "visible", you can specify whether the command shows up at all. This is useful for overriding other plugins' built-in Help support (in case you don't want all the commands); if you leave it blank or skip it, it will default to 'true'. If you specify a "permissions", you can choose what is necessary for the user to see the command; and leaving it blank will allow all to see. So in the case of /version, all users can use it, so no permissions. But with /who, you have to have essentials.list, so that was specified. There is also a special permission case, "OP". By specifying this, this will require the user to be an OP to use the command (as is the case with Minecraft's built-in /kick command). [code] versions: command: version description: Show the version of Minecraft and CB plugin: CraftBukkit main: true pluginversions: command: version [plugin] description: Shows the version of [plugin] plugin: CraftBukkit kick: command: kick [player] description: Kicks [player] from the server plugin: Minecraft main: true permissions: OP essentialswho: command: who description: Show who's one the server plugin: Essentials main: true permissions: essentials.list [/code] [B][SIZE=5][FONT=helvetica]How To Hook into Help.[/FONT][/SIZE][/B] [spoiler="API"] Hooking into Help is extremely easy, and very similar to hooking into any permission-plugin. When your plugin is starting up, just grab the Help plugin and register your commands with Help's registerCommand() method; that's it! Here's the API and some examples. If you'd like a concrete example, check out the relevant source code from [URL=''][COLOR=rgb(16, 97, 179)]MyHome[/COLOR][/URL] and [URL=''][COLOR=rgb(16, 97, 179)]BigBrother[/COLOR][/URL]. [SIZE=4][FONT=helvetica][B]Help API[/B][/FONT][/SIZE] [code] /** * Registers the given command, description, and plugin. * There are no permissions, so all users can see it. * It is also not a "main" help entry. * @return Whether or not it was successful */ public boolean registerCommand(String command, String description, Plugin plugin); /** * Registers the given command, description, and plugin. * There are no permissions, so all users can see it. * You can set whether the plugin is a "main" entry or not * @return Whether or not it was successful */ public boolean registerCommand(String command, String description, Plugin plugin, boolean main); /** * Registers the given command, description, and plugin. * You can specify one or more permissions. * If a user has permissions for at least (1) of them, he can see this command * It is also not a "main" help entry. * @return Whether or not it was successful */ public boolean registerCommand(String command, String description, Plugin plugin, String... permissions); /** * Registers the given command, description, and plugin. * You can specify one or more permissions. * If a user has permissions for at least (1) of them, he can see this command * You can set whether the plugin is a "main" entry or not * @return Whether or not it was successful */ public boolean registerCommand(String command, String description, Plugin plugin, boolean main, String... permissions); /** * Gets the help text associated with this command * @param command the command to lookup * @return help text, or null if none */ public String getHelp(String command); /** * Gets all of the commands registered with this plugin * @param plugin plugin to lookup * @return list of commands */ public ArrayList getPluginCommands(String plugin); [/code] [SIZE=4][FONT=helvetica][B]Basic Example[/B][/FONT][/SIZE] [code] // plugin is the instance of your Plugin registering the commands Plugin test = plugin.getServer().getPluginManager().getPlugin("Help"); if (test != null) { Logger log = Logger.getLogger("Minecraft"); Help helpPlugin = ((Help) test); // Registers a main command. But all users will be able to see it helpPlugin.registerCommand("home help", "Help for all MyHome commands", plugin, true); // Registers a secondary command to our plugin (MyHome), but the user has to have the permission to see it helpPlugin.registerCommand("home", "Go home young chap!", plugin, "myhome.home.basic.home"); log.log(Level.INFO, "'Help' support enabled."); } else { Logger log = Logger.getLogger("Minecraft"); log.log(Level.WARNING, "'Help' isn't detected. No /help support."); } [/code] [SIZE=4][FONT=helvetica][B]Slightly More Advanced Example[/B][/FONT][/SIZE] [code] Help helpPlugin = ((Help) test); String[] permissions = new String[]{"", "", "bb.admin.rollback", "bb.admin.cleanse"}; // If a user has any one of those permissions, they'll be able to see /bb help. A main command helpPlugin.registerCommand("bb help", "Help for all BigBrother commands", plugin, true, permissions); // If a user has "" they'll be able to see /bb watch [player]. A secondary command helpPlugin.registerCommand("bb watch [player]", "Toggle the watch on [player]", plugin, permissions[0]); [/code] [/spoiler] [FONT=helvetica][SIZE=5][B]Plugins with Help Support[/B][/SIZE][/FONT] Here's a quick list of plugins (and version) that have built in Help support. - MyHome v1.9.2+ - MyWarp v1.10.3+ - BigBrother v1.6.4+ - Citizens v1.0+ - General 3.1+ - TelePlus 1.6+ - Pixl 1.3+ - Vampire 1.3+ - BetterShop 1.6.2+ - Wormhole-X-Treme 0.812+ - Tele++ v1.3.4 [FONT=helvetica][SIZE=5][B]ExtraHelp Packs[/B][/SIZE][/FONT] [URL=''][COLOR=rgb(16, 97, 179)]FabianN put together a repository of entries for your ExtraHelp/ that represent other plugins' commands.[/COLOR][/URL] It's really awesome and was helped put together by others from the community. [SIZE=5][B][FONT=helvetica]Preview[/FONT][/B][/SIZE] [IMG][/IMG] [IMG][/IMG] [SIZE=5][B][FONT=helvetica]Changelog[/FONT][/B][/SIZE] Version 0.3.2 - 7/21/11 [LIST] [*]lowered chat fill size.. should fix some wrapping issues [/LIST] Version 0.3.1 - 7/7/11 [LIST] [*]fixed NullPointerException on entry save when no permissions [/LIST] Version 0.3 - 7/6/11 [LIST] [*]fixed loading help & plugin help registering before plugin onEnable [/LIST] [spoiler="Changelog"] Version 0.3 beta2 - 7/4/11 [LIST] [*]plugin console output fixed [*]console output width changed for when running windows [*]plugin help override can be disabled (default) [LIST] [*]plugin help registering is ignored if the command exists already [*]alternatively, can be disabled completely [/LIST] [*]saving of registered commands can be disabled (also, now saves to file, not "_orig" files) [*]ExtraHelp now uses filename as plugin name (plugin field no longer used) [*]added formatting options: [LIST] [*]shortenEntries : can show in old, one-line style [*]chat line (useWordWrap:false) - minecraft chat wraps to next line [*]columns (useWordWrap:true) - command on left, description in word wrap line(s) [LIST] [*]can be right-aligned (wordWrapRight:true) [/LIST] [/LIST] [*]plugin entries can be set to not sorted (listed in the order found in the help file) [*]"/help reload" is now op-only [*]"ExtraHelp.yml" will now be converted (again.. seems to have been removed somewhere..) [*]ExtraHelp supports a multi-directory structure (like FabiaN's help package) (plugin name will be the directory name) [*]improved node error messages when loading [*]fixed permissions 3x illegalAccessErrors on load (and api errors) [/LIST] Version - 4/4/11 [LIST] [*]another illegalAccessError (hopefully) resolved [/LIST] Version 0.2.4 - 4/2/11 [LIST] [*]updated an illegalAccess error that was occurring in 617 [/LIST] Version 0.2.3 - 3/25/11 [LIST] [*]fixed a null pointer exception in plugin help [/LIST] Version 0.2.2 - 3/24/11 [LIST] [*]various null pointer fixes (could have nullpointerException on load without) [*]improved help listing [*]added console help support [/LIST] [SIZE=5][FONT=helvetica]Before i started maintaining: [/FONT][/SIZE] [I][SIZE=12px][SIZE=5][FONT=helvetica][B][URL=''][COLOR=rgb(16, 97, 179)][COLOR=rgb(16, 97, 179)]Help v0.2 [531][/COLOR][/COLOR][/URL][/B][/FONT][/SIZE][/SIZE][/I] [I][SIZE=12px][I]Released 15 Mar, 2011[/I][/SIZE][/I] [I][SIZE=12px]- Built with latest recommend build (531)[/SIZE][/I] [I][SIZE=12px]- Multiline support. Descriptions of commands can now be as long as you'd like.[/SIZE][/I] [I][SIZE=12px]- Separated ExtraHelp.yml into separate YML files (for each plugin, etc).[/SIZE][/I] [I][SIZE=12px]- Plugin overriding. Don't like how a plugin has their Help support? Completely customize their entries.[/SIZE][/I] [I][SIZE=12px][SIZE=5][FONT=helvetica][B][URL=''][COLOR=rgb(16, 97, 179)]Help v0.1.1 [493][/COLOR][/URL][/B][/FONT][/SIZE][/SIZE][/I] [I][SIZE=12px][I]Released 6 Mar, 2011[/I][/SIZE][/I] [I][SIZE=12px]- Built with latest recommend build (493)[/SIZE][/I] [I][SIZE=12px]- Updated for GroupManager 1.0[/SIZE][/I] [I][SIZE=12px][SIZE=5][FONT=helvetica][B][URL=''][COLOR=rgb(16, 97, 179)][COLOR=rgb(16, 97, 179)]Help v0.1 [440][/COLOR][/COLOR][/URL][/B][/FONT][/SIZE][/SIZE][/I] [I][SIZE=12px][I]Released 28 Feb, 2011[/I][/SIZE][/I] [I][SIZE=12px]- Intial Release[/SIZE][/I] [\spoiler]/
  2. Offline


    There is a huge repo on GitHub for ExtraHelp files. It would be nice if you'd upload them there (if you can).

    Link from the OP to the repo:
  3. Offline


    I'm using it on 1060 with PermissionsEx which gives you both SuperPerms and Yeti's Permissions without any problems.
  4. Offline


    Well, the reason I was keeping them to myself is that the entries I wrote were tailored for my own preferences: I omitted commands I didn't expect to use, and likewise with certain commands' optional parameters that were cluttering up the place. For that reason, I'd feel bad giving people a spotty help file they assumed was complete.

    On the other hand, if the general sentiment is that slightly junky work is better than none at all (others can expand it later?), I can go post what I have. I'm just not all that proud of it.

    Anyway, PermissionsEx works great!
    Don Redhorse likes this.
  5. Offline


    I've kinda done the same thing, and as soon as I figure out how I can submit to the github repo for the extra help files, I'll put up mine for: General, TeleportSuite, OpenWarp, BackToBody, and Locker. Granted, most of these are partials, but they are better than nothing.
    Lathanael likes this.
  6. Offline


    If you need any help with GitHub, pm me, maybe we get it to work together :)

    @Rofang: I'm certain, that your HelpFiles are better than to have nothing, and they can be easily pulled and edited from GitHub if someone feels the need to.
  7. Offline

    Celtic Minstrel

    Um, you don't need one for General. :p It has built-in support for Help.
  8. Offline


    That's odd, I didn't see any defaults for it so made the ExtraHelp file. Oh well. =/
  9. Offline


    Dear god, using GitHub was an ordeal for someone of my ignorance, but I managed to put my help files into a pull request to Fabian. And here I was thinking it might be like editing a wiki... :'(
  10. Offline


    I'm retarded. Now that that's out of the way, when I type /help, how do I get plugins to show up on the main pages without having to type /help plugins?
  11. Offline

    Celtic Minstrel

    Well, unless you were using cjc's General 2.2 which didn't have it yet.
  12. Offline


    Nope, apparently I had a partially downloaded jar file. Yet it didn't complain. So none of General was working. Very odd.
  13. Offline


    One of the things I loved about this was the fact that the permissions nodes would HIDE commands if they weren't available. I had to switch to PermissionsEX for the hybrid perms/permissions. and Sadly not Help won't hide the commands users can't use. It simply shows all help menus and commands to everyone.

    Is this happening to everyone or just me?

    TY, once I got that back in it works great.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  14. Offline


    I have a few problems with it. I mean it works but I can't really set whatever I want.

    First problem is I always get: 'Permissions plugin is disabled' and I have no idea what to do with that.
    Second of all: I can't make such a nice table as on second pic (with home menu) - I can when I make an extra help yml but than I need to type /help buildr (<- or whatever I want to be in next menu).
    I also tried to modify the plugin.yml in the jar to add more commands eg. /adminrights and it displays admin's rights, but I cant change colour (notepad++ days I did and it'd all OK but it turns out it's not).

    I want to make kind of AMA menu with different answer for each group. Because of lack of permissions (still no idea why it doesn't work i spent like 2 days working on it and still...), with them I could somehow make it but it would look terrible.

    btw. can anyone explain to me what the plugin part of code is for? I mean sam in real world example because I don't quite see purpose of that (I tried stuff with and without it).

    Thanks for help in advance. :D
  15. Offline


    OMFG THANK YOU SOOO MUCH i swear my friend said essentials was the way to go but nooooooo that doesnt take into account permissions :D so thank you so much i am sooooooooo excited
  16. Offline


    I cant get any extra help to work following your instructions. Only two of the supplied extra help files actually load
  17. Offline


    is this plugin gonna be updated for 1.8 ? all i get is a error when i try to /help
  18. Offline

    Celtic Minstrel

    I've started work on a possible replacement, but don't hold your breath; I'm not sure when it'll be ready for use or if I'll even finish it at all.
    fahlman likes this.
  19. Offline


    Take a look here. It provides the same functions and even supports the HelpFiles of the mentioned repo in the OP
  20. Offline

    Celtic Minstrel

    Uh, that's no good; it has a billion other features that some people won't want.
  21. Offline


    Well it depends on what you want. It is an alternative. I agree if you'd only want the /help function it is a bit of overkill. But if you are in need of more functions it might be worth a look ;)
    And you can disable things you do not want to have, so they do not take memory/cpu load.
  22. Offline


    Hi, I am not sure how to upload these to the git repository so I will upload them here. Here are all of my ExtraHelp files,
    There are 32 of them and they are complete as far as I know. I went through every single command for all of my plugins and made sure that they are in here. I hope they will be of help. Just unzip it and they are all in there.

    Also thanks to the plugin developer. I really appreciate your work. It makes my server 100x better. Good luck on developing the 1.8 compatible build, I'm really looking forward to it.

    Attached Files:

  23. Offline


    If youd like i'll upload them for you.
  24. Offline


    If you'd like to that would be great.
  25. Offline


  26. Offline


    Let's hope you do finish it. Thank you for attempting.
  27. Offline


    Does this work on 1185?

    If it doesent then i hope youll fix this plugin since its a wery nice thing.
  28. Offline

    Celtic Minstrel

    I don't see any reason why it wouldn't work, though I don't really know.
  29. Offline


    It has error messages at start up and doesn't see all extra files. It does display some help commands though, so it's not completely broken.
  30. Offline


    @jascotty2 @Celtic Minstrel
    It has error messages at start up and doesn't see all extra files.
    I have problem to view the ExtraHelp.yml file that I added.
    When I do /help, there is no extra lines. Tried to search for words, also didnt find anything.
    Then I read this above:
    I have my config setup as this: (open)

    shortenEntries: false
    allowPluginHelp: true
    wordWrapRight: true
    allowPluginOverride: true
    entriesPerPage: 9
    sortPluginHelp: true
    useWordWrap: true
    savePluginHelp: false

    Running RB1185 with Essentials 2.6.1

    EDIT: My bad. Was a yml issue. :( Thought I didnt do those anymore xD
  31. Offline

    Celtic Minstrel

    What error messages?

Share This Page