001 package org.bukkit.command.defaults;
002
003 import java.util.Arrays;
004
005 import org.bukkit.Bukkit;
006 import org.bukkit.ChatColor;
007 import org.bukkit.command.CommandSender;
008 import org.bukkit.entity.Player;
009
010 public class TellCommand extends VanillaCommand {
011 public TellCommand() {
012 super("tell");
013 this.description = "Sends a private message to the given player";
014 this.usageMessage = "/tell <player> <message>";
015 this.setAliases(Arrays.asList(new String[] { "w", "msg" }));
016 this.setPermission("bukkit.command.tell");
017 }
018
019 @Override
020 public boolean execute(CommandSender sender, String currentAlias, String[] args) {
021 if (!testPermission(sender)) return true;
022 if (args.length < 2) {
023 sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
024 return false;
025 }
026
027 Player player = Bukkit.getPlayerExact(args[0]);
028
029 // If a player is hidden from the sender pretend they are offline
030 if (player == null || (sender instanceof Player && !((Player) sender).canSee(player))) {
031 sender.sendMessage("There's no player by that name online.");
032 } else {
033 StringBuilder message = new StringBuilder();
034
035 for (int i = 1; i < args.length; i++) {
036 if (i > 1) message.append(" ");
037 message.append(args[i]);
038 }
039
040 String result = ChatColor.GRAY + sender.getName() + " whispers " + message;
041
042 sender.sendMessage("[" + sender.getName() + "->" + player.getName() + "] " + message);
043 player.sendMessage(result);
044 }
045
046 return true;
047 }
048 }