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