[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.

By: Travis Watkins <amaranth@ubuntu.com>
This commit is contained in:
Bukkit/Spigot 2012-01-31 13:50:12 -06:00
parent b2d95b3937
commit f7f18879e3
4 changed files with 40 additions and 1 deletions

View file

@ -19,6 +19,10 @@ public class ListCommand extends VanillaCommand {
StringBuilder players = new StringBuilder();
for (Player player : Bukkit.getOnlinePlayers()) {
// If a player is hidden from the sender don't show them in the list
if (sender instanceof Player && !((Player) sender).canSee(player))
continue;
if (players.length() > 0) {
players.append(", ");
}

View file

@ -24,7 +24,8 @@ public class TellCommand extends VanillaCommand {
Player player = Bukkit.getPlayerExact(args[0]);
if (player == null) {
// 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();

View file

@ -490,4 +490,26 @@ public interface Player extends HumanEntity, CommandSender, OfflinePlayer, Plugi
*/
public void setAllowFlight(boolean flight);
/**
* Hides a player from this player
*
* @param player Player to hide
*/
public void hidePlayer(Player player);
/**
* Allows this player to see a player that was previously hidden
*
* @param player Player to show
*/
public void showPlayer(Player player);
/**
* Checks to see if a player has been hidden from this player
*
* @param player Player to check
* @return True if the provided player is not being hidden from this player
*/
public boolean canSee(Player player);
}

View file

@ -609,4 +609,16 @@ public class TestPlayer implements Player {
public void setBedSpawnLocation(Location location) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void hidePlayer(Player player) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void showPlayer(Player player) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean canSee(Player player) {
throw new UnsupportedOperationException("Not supported yet.");
}
}