Exemplo n.º 1
0
 @Command(
     aliases = {"team"},
     desc = "Manage the teams in the match.",
     usage = "<force, alias, shuffle> [player, old team] [force team, new team]",
     min = 1)
 public static void team(final CommandContext cmd, CommandSender sender) throws CommandException {
   if (cmd.getString(0).equalsIgnoreCase("force")) {
     if (sender.hasPermission("cardinal.team.force")) {
       if (cmd.argsLength() >= 3) {
         if (Bukkit.getPlayer(cmd.getString(1)) != null) {
           String msg = "";
           for (int i = 2; i < cmd.argsLength(); i++) {
             msg += cmd.getString(i) + " ";
           }
           msg = msg.trim();
           if (TeamUtils.getTeamByName(msg) != null) {
             TeamModule team = TeamUtils.getTeamByName(msg);
             if (!team.contains(Bukkit.getPlayer(cmd.getString(1)))) {
               team.add(Bukkit.getPlayer(cmd.getString(1)), true, false);
               sender.sendMessage(
                   team.getColor()
                       + Bukkit.getPlayer(cmd.getString(1)).getName()
                       + ChatColor.GRAY
                       + " forced to "
                       + team.getCompleteName());
             } else
               throw new CommandException(
                   new LocalizedChatMessage(
                           ChatConstant.ERROR_ALREADY_JOINED,
                           TeamUtils.getTeamByPlayer((Player) sender).getCompleteName()
                               + ChatColor.RED)
                       .getMessage(((Player) sender).getLocale()));
           } else {
             throw new CommandException(
                 new LocalizedChatMessage(ChatConstant.ERROR_NO_TEAM_MATCH)
                     .getMessage(ChatUtils.getLocale(sender)));
           }
         } else {
           throw new CommandException(
               new LocalizedChatMessage(ChatConstant.ERROR_NO_PLAYER_MATCH)
                   .getMessage(ChatUtils.getLocale(sender)));
         }
       } else {
         throw new CommandUsageException(
             "Too few arguments.", "/team <force> <player> <force team>");
       }
     } else {
       throw new CommandPermissionsException();
     }
   } else if (cmd.getString(0).equalsIgnoreCase("alias")) {
     if (sender.hasPermission("cardinal.team.alias")) {
       if (cmd.argsLength() >= 3) {
         TeamModule team = TeamUtils.getTeamByName(cmd.getString(1));
         if (team != null) {
           String msg = "";
           for (int i = 2; i < cmd.argsLength(); i++) {
             msg += cmd.getString(i) + " ";
           }
           msg = msg.trim();
           String locale = ChatUtils.getLocale(sender);
           sender.sendMessage(
               ChatColor.GRAY
                   + new LocalizedChatMessage(
                           ChatConstant.GENERIC_TEAM_ALIAS,
                           team.getCompleteName() + ChatColor.GRAY,
                           team.getColor() + msg + ChatColor.GRAY)
                       .getMessage(locale));
           team.setName(msg);
           Bukkit.getServer().getPluginManager().callEvent(new TeamNameChangeEvent(team));
         } else {
           throw new CommandException(
               new LocalizedChatMessage(ChatConstant.ERROR_NO_TEAM_MATCH)
                   .getMessage(ChatUtils.getLocale(sender)));
         }
       } else {
         throw new CommandUsageException(
             "Too few arguments!", "/team <alias> <old team> <new team>");
       }
     } else {
       throw new CommandPermissionsException();
     }
   } else if (cmd.getString(0).equalsIgnoreCase("shuffle")) {
     if (sender.hasPermission("cardinal.team.shuffle")) {
       List<Player> playersToShuffle = new ArrayList<>();
       for (Player player : Bukkit.getOnlinePlayers()) {
         if (TeamUtils.getTeamByPlayer(player) != null) {
           if (!TeamUtils.getTeamByPlayer(player).isObserver()) {
             playersToShuffle.add(player);
             TeamModule observers = TeamUtils.getTeamById("observers");
             observers.add(player, true, false);
           }
         }
       }
       while (playersToShuffle.size() > 0) {
         Player player = playersToShuffle.get(new Random().nextInt(playersToShuffle.size()));
         TeamModule team =
             TeamUtils.getTeamWithFewestPlayers(GameHandler.getGameHandler().getMatch());
         team.add(player, true);
         playersToShuffle.remove(player);
       }
       String locale = ChatUtils.getLocale(sender);
       sender.sendMessage(
           ChatColor.GREEN
               + new LocalizedChatMessage(ChatConstant.GENERIC_TEAM_SHUFFLE).getMessage(locale));
     } else {
       throw new CommandPermissionsException();
     }
   } else if (cmd.getString(0).equalsIgnoreCase("size")) {
     if (sender.hasPermission("cardinal.team.size")) {
       TeamModule team = TeamUtils.getTeamByName(cmd.getString(1));
       if (team == null) {
         throw new CommandException(
             new LocalizedChatMessage(ChatConstant.ERROR_NO_TEAM_MATCH)
                 .getMessage(ChatUtils.getLocale(sender)));
       }
       team.setMax(cmd.getInteger(1));
       team.setMaxOverfill(cmd.getInteger(1));
       sender.sendMessage(
           new LocalizedChatMessage(
                   ChatConstant.GENERIC_TEAM_SIZE_UPDATE,
                   team.getCompleteName() + ChatColor.YELLOW,
                   cmd.getInteger(1) + "")
               .getMessage(ChatUtils.getLocale(sender)));
     } else {
       throw new CommandPermissionsException();
     }
   } else {
     throw new CommandUsageException(
         "Invalid arguments.",
         "/team <force, alias, shuffle, size> [player, old team] [force team, new team, size]");
   }
 }