@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]"); } }