Ejemplo n.º 1
0
 @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;
 }