package com.leontg77.uhc.cmds; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import com.leontg77.uhc.Main; import com.leontg77.uhc.utils.PlayerUtils; /** * Whitelist command class. * * @author LeonTG77 */ public class WhitelistCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (!sender.hasPermission("uhc.whitelist")) { sender.sendMessage(Main.NO_PERM_MSG); return true; } if (args.length == 0) { sender.sendMessage(Main.PREFIX + "Usage: /whitelist <on|off|add|remove|all|clear|list> [player]"); return true; } if (args.length > 1) { if (args[0].equalsIgnoreCase("add")) { Player target = Bukkit.getServer().getPlayer(args[1]); if (target == null) { OfflinePlayer offline = PlayerUtils.getOfflinePlayer(args[1]); PlayerUtils.broadcast(Main.PREFIX + ChatColor.GREEN + offline.getName() + " �7has been whitelisted."); offline.setWhitelisted(true); return true; } PlayerUtils.broadcast(Main.PREFIX + ChatColor.GREEN + target.getName() + " �7has been whitelisted."); target.setWhitelisted(true); return true; } if (args[0].equalsIgnoreCase("remove")) { Player target = Bukkit.getServer().getPlayer(args[1]); if (target == null) { OfflinePlayer offline = PlayerUtils.getOfflinePlayer(args[1]); PlayerUtils.broadcast(Main.PREFIX + ChatColor.GREEN + offline.getName() + " �7is no longer whitelisted."); offline.setWhitelisted(false); return true; } PlayerUtils.broadcast(Main.PREFIX + ChatColor.GREEN + target.getName() + " �7is no longer whitelisted."); target.setWhitelisted(false); return true; } } if (args[0].equalsIgnoreCase("on")) { PlayerUtils.broadcast(Main.PREFIX + "The whitelist is now on"); Bukkit.getServer().setWhitelist(true); } else if (args[0].equalsIgnoreCase("off")) { PlayerUtils.broadcast(Main.PREFIX + "The whitelist is now off"); Bukkit.getServer().setWhitelist(false); } else if (args[0].equalsIgnoreCase("all")) { for (Player online : PlayerUtils.getPlayers()) { online.setWhitelisted(true); } PlayerUtils.broadcast(Main.PREFIX + "All players has been whitelisted."); } else if (args[0].equalsIgnoreCase("clear")) { for (OfflinePlayer whitelisted : Bukkit.getWhitelistedPlayers()) { whitelisted.setWhitelisted(false); } PlayerUtils.broadcast(Main.PREFIX + "The whitelist has been cleared."); } else if (args[0].equalsIgnoreCase("list")) { if (Bukkit.getWhitelistedPlayers().size() <= 0) { sender.sendMessage(Main.PREFIX + "There are no whitelisted players."); return true; } StringBuilder list = new StringBuilder(); int i = 1; for (OfflinePlayer whitelisted : Bukkit.getWhitelistedPlayers()) { if (list.length() > 0) { if (i == Bukkit.getWhitelistedPlayers().size()) { list.append(" and "); } else { list.append(", "); } } list.append(whitelisted.getName()); i++; } sender.sendMessage(Main.PREFIX + "There are �6" + (i - 1) + " �7whitelisted players"); sender.sendMessage("�8� �7Wl'd players: �f" + list.toString() + "."); } else { sender.sendMessage(Main.PREFIX + "Usage: /whitelist <on|off|add|remove|all|clear|list> [player]"); } return true; } @Override public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { if (!sender.hasPermission("uhc.whitelist")) { return null; } ArrayList<String> toReturn = new ArrayList<String>(); if (args.length == 1) { ArrayList<String> types = new ArrayList<String>(); types.add("on"); types.add("off"); types.add("add"); types.add("remove"); types.add("all"); types.add("clear"); types.add("list"); if (args[0].equals("")) { for (String type : types) { toReturn.add(type); } } else { for (String type : types) { if (type.startsWith(args[0].toLowerCase())) { toReturn.add(type); } } } } if (args.length == 2) { if (args[0].equalsIgnoreCase("add")) { if (args[1].equals("")) { for (Player online : PlayerUtils.getPlayers()) { if (!online.isWhitelisted()) { toReturn.add(online.getName()); } } } else { for (Player online : PlayerUtils.getPlayers()) { if (online.getName().toLowerCase().startsWith(args[1].toLowerCase())) { if (!online.isWhitelisted()) { toReturn.add(online.getName()); } } } } } else if (args[0].equalsIgnoreCase("remove")) { if (args[1].equals("")) { for (OfflinePlayer whitelisted : Bukkit.getServer().getWhitelistedPlayers()) { toReturn.add(whitelisted.getName()); } } else { for (OfflinePlayer whitelisted : Bukkit.getServer().getWhitelistedPlayers()) { if (whitelisted.getName().toLowerCase().startsWith(args[1].toLowerCase())) { toReturn.add(whitelisted.getName()); } } } } } return toReturn; } }