@Command(name = "help")
    public void helpCommand(CommandSender sender, CommandArgs args)
    {
        if (args.size() > 0)
        {
            String commandName = args.getString(0);
            SubCommand command = getCommand(commandName);
            if (command != null)
            {
                sender.sendMessage("/" + args.getBaseLabel() + " " + args.getString(0) + " " + command.getUsage());
                sender.sendMessage("    " + _(command.getName() + "_description"));
            }
            else
            {
                sender.sendMessage(_("help_cmdnotfound", args.getString(0)));
            }
        }
        else
        {
            sender.sendMessage(_("help_listofcommands"));
            sender.sendMessage(" ");

            List<SubCommand> subCommands = new ArrayList<SubCommand>(args.getBaseCommand().getAllSubCommands());
            Collections.sort(subCommands, SubCommand.COMPARATOR);

            for (SubCommand command : subCommands)
            {
                if (command.getPermission() != null && !sender.hasPermission(command.getPermission()))
                {
                    continue;
                }
                sender.sendMessage("/" + args.getBaseLabel() + " " + command.getName() + " " + command.getUsage());
                sender.sendMessage("    " + _(command.getName() + "_description"));
                sender.sendMessage(" ");
            }
        }
    }