Travis Watkins 5e6125e01b [Bleeding] Added Vanish API for hiding players from each other.
Adds Player.hidePlayer, Player.showPlayer, and Player.canSee for managing
what players are hidden from a player. When someone is hidden from a player
the player cannot see them in the user list or /list and they cannot /tell
them so they appear to be completely gone from the server.
2012-02-03 03:32:21 -05:00

56 lines
1.8 KiB
Java

package org.bukkit.command.defaults;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class TellCommand extends VanillaCommand {
public TellCommand() {
super("tell");
this.description = "Sends a private message to the given player";
this.usageMessage = "/tell <player> <message>";
this.setPermission("bukkit.command.tell");
}
@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
if (!testPermission(sender)) return true;
if (args.length < 2) {
sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
return false;
}
Player player = Bukkit.getPlayerExact(args[0]);
// If a player is hidden from the sender pretend they are offline
if (player == null || (sender instanceof Player && !((Player) sender).canSee(player))) {
sender.sendMessage("There's no player by that name online.");
} else {
StringBuilder message = new StringBuilder();
for (int i = 1; i < args.length; i++) {
if (i > 1) message.append(" ");
message.append(args[i]);
}
String result = ChatColor.GRAY + sender.getName() + " whispers " + message;
if (sender instanceof ConsoleCommandSender) {
Bukkit.getLogger().info("[" + sender.getName() + "->" + player.getName() + "] " + message);
Bukkit.getLogger().info(result);
}
player.sendMessage(result);
}
return true;
}
@Override
public boolean matches(String input) {
return input.startsWith("tell ") || input.equalsIgnoreCase("tell");
}
}