001 package org.bukkit.command.defaults;
002
003 import java.util.Collection;
004 import java.util.List;
005
006 import org.apache.commons.lang.Validate;
007 import org.bukkit.Bukkit;
008 import org.bukkit.command.CommandSender;
009 import org.bukkit.entity.Player;
010
011 import com.google.common.collect.ImmutableList;
012
013 public class ListCommand extends VanillaCommand {
014 public ListCommand() {
015 super("list");
016 this.description = "Lists all online players";
017 this.usageMessage = "/list";
018 this.setPermission("bukkit.command.list");
019 }
020
021 @Override
022 public boolean execute(CommandSender sender, String currentAlias, String[] args) {
023 if (!testPermission(sender)) return true;
024
025 StringBuilder online = new StringBuilder();
026
027 final Collection<? extends Player> players = Bukkit.getOnlinePlayers();
028
029 for (Player player : players) {
030 // If a player is hidden from the sender don't show them in the list
031 if (sender instanceof Player && !((Player) sender).canSee(player))
032 continue;
033
034 if (online.length() > 0) {
035 online.append(", ");
036 }
037
038 online.append(player.getDisplayName());
039 }
040
041 sender.sendMessage("There are " + players.size() + "/" + Bukkit.getMaxPlayers() + " players online:\n" + online.toString());
042
043 return true;
044 }
045
046 @Override
047 public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
048 Validate.notNull(sender, "Sender cannot be null");
049 Validate.notNull(args, "Arguments cannot be null");
050 Validate.notNull(alias, "Alias cannot be null");
051
052 return ImmutableList.of();
053 }
054 }