/f show|who command will no longer reveal players as online if they are hidden from the viewer by the Vanish API

This commit is contained in:
Brettflan 2012-04-26 08:08:11 -05:00
parent 1defa2984b
commit e3a7188b0d
2 changed files with 11 additions and 4 deletions

View File

@ -113,7 +113,7 @@ public class CmdShow extends FCommand
for (FPlayer follower : admins) for (FPlayer follower : admins)
{ {
if (follower.isOnline()) if (follower.isOnlineAndVisibleTo(me))
{ {
memberOnlineNames.add(follower.getNameAndTitle(fme)); memberOnlineNames.add(follower.getNameAndTitle(fme));
} }
@ -125,7 +125,7 @@ public class CmdShow extends FCommand
for (FPlayer follower : mods) for (FPlayer follower : mods)
{ {
if (follower.isOnline()) if (follower.isOnlineAndVisibleTo(me))
{ {
memberOnlineNames.add(follower.getNameAndTitle(fme)); memberOnlineNames.add(follower.getNameAndTitle(fme));
} }
@ -137,7 +137,7 @@ public class CmdShow extends FCommand
for (FPlayer follower : normals) for (FPlayer follower : normals)
{ {
if (follower.isOnline()) if (follower.isOnlineAndVisibleTo(me))
{ {
memberOnlineNames.add(follower.getNameAndTitle(fme)); memberOnlineNames.add(follower.getNameAndTitle(fme));
} }

View File

@ -17,6 +17,13 @@ public class PlayerEntity extends Entity
return this.getPlayer() != null; return this.getPlayer() != null;
} }
// make sure target player should be able to detect that this player is online
public boolean isOnlineAndVisibleTo(Player player)
{
Player target = this.getPlayer();
return target != null && player.canSee(target);
}
public boolean isOffline() public boolean isOffline()
{ {
return ! isOnline(); return ! isOnline();