mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-08 11:24:11 +01:00
[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:
parent
b2d95b3937
commit
f7f18879e3
4 changed files with 40 additions and 1 deletions
|
@ -19,6 +19,10 @@ public class ListCommand extends VanillaCommand {
|
||||||
StringBuilder players = new StringBuilder();
|
StringBuilder players = new StringBuilder();
|
||||||
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
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) {
|
if (players.length() > 0) {
|
||||||
players.append(", ");
|
players.append(", ");
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,8 @@ public class TellCommand extends VanillaCommand {
|
||||||
|
|
||||||
Player player = Bukkit.getPlayerExact(args[0]);
|
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.");
|
sender.sendMessage("There's no player by that name online.");
|
||||||
} else {
|
} else {
|
||||||
StringBuilder message = new StringBuilder();
|
StringBuilder message = new StringBuilder();
|
||||||
|
|
|
@ -490,4 +490,26 @@ public interface Player extends HumanEntity, CommandSender, OfflinePlayer, Plugi
|
||||||
*/
|
*/
|
||||||
public void setAllowFlight(boolean flight);
|
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -609,4 +609,16 @@ public class TestPlayer implements Player {
|
||||||
public void setBedSpawnLocation(Location location) {
|
public void setBedSpawnLocation(Location location) {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
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.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue