
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.
56 lines
1.8 KiB
Java
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");
|
|
}
|
|
}
|