@Override public boolean execute( CommandSender sender, String alias, Map<String, Object> data, String... args) { if (!CommandManager.isRequirementsMet(sender, this)) { return false; } if (args.length == 0 || (args.length == 1 && args[0].matches(HELP_PATTERN))) { showUsage(sender, 1); } else if (args.length > 1 && args[0].matches(HELP_PATTERN)) { showUsage(sender, args[1]); } else if (args.length > params.length) { String cmdName = args[params.length].toLowerCase(); Command cmd = aliasMap.get(cmdName); String[] subArgs = new String[args.length - 1 - params.length]; System.arraycopy(args, 1 + params.length, subArgs, 0, subArgs.length); int ix = 0; for (String p : params) { data.put(p, args[ix++]); } if (!hasAccess(cmd, sender)) { if (cmd != null && sender.isOp()) { sender.sendMessage( MessageFormat.format( "\u00a7eYou do not have access (\u00a74{0}\u00a7e)", cmd.getPermission())); } else { sender.sendMessage("\u00a7eYou do not have access"); } showUsage(sender, args[0]); } else if (!cmd.execute(sender, cmdName, data, subArgs)) { showUsage(sender, args[0]); } } else { showUsage(sender, 1); } return true; }