From 21906a2b4a794b1955a844866b44c539fe7d29bd Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 13 May 2021 16:33:16 -0500 Subject: [PATCH] Hide hidden players from entity selector --- ...-hidden-players-from-entity-selector.patch | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 patches/server/0209-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0209-Hide-hidden-players-from-entity-selector.patch b/patches/server/0209-Hide-hidden-players-from-entity-selector.patch new file mode 100644 index 000000000..56b931e9a --- /dev/null +++ b/patches/server/0209-Hide-hidden-players-from-entity-selector.patch @@ -0,0 +1,61 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Thu, 13 May 2021 16:18:29 -0500 +Subject: [PATCH] Hide hidden players from entity selector + + +diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +index ee3123ac8a568d915ca4e1b42fc1196c269b287e..10c0eb9387da3ca4a8fddebd4f4d7fef3e0ccd23 100644 +--- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java ++++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +@@ -169,10 +169,10 @@ public class EntitySelector { + + if (this.j != null) { + entityplayer = commandlistenerwrapper.getServer().getPlayerList().getPlayer(this.j); +- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new EntityPlayer[]{entityplayer})); ++ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur + } else if (this.k != null) { + entityplayer = commandlistenerwrapper.getServer().getPlayerList().getPlayer(this.k); +- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new EntityPlayer[]{entityplayer})); ++ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur + } else { + Vec3D vec3d = (Vec3D) this.f.apply(commandlistenerwrapper.getPosition()); + Predicate predicate = this.a(vec3d); +@@ -182,7 +182,7 @@ public class EntitySelector { + EntityPlayer entityplayer1 = (EntityPlayer) commandlistenerwrapper.getEntity(); + + if (predicate.test(entityplayer1)) { +- return Lists.newArrayList(new EntityPlayer[]{entityplayer1}); ++ return !canSee(commandlistenerwrapper, entityplayer1) ? Collections.emptyList() : Lists.newArrayList(entityplayer1); // Purpur + } + } + +@@ -195,6 +195,7 @@ public class EntitySelector { + + predicate.getClass(); + object = worldserver.a(predicate::test); ++ ((List) object).removeIf(entityplayer3 -> !canSee(commandlistenerwrapper, (EntityPlayer) entityplayer3)); // Purpur + } else { + object = Lists.newArrayList(); + Iterator iterator = commandlistenerwrapper.getServer().getPlayerList().getPlayers().iterator(); +@@ -202,7 +203,7 @@ public class EntitySelector { + while (iterator.hasNext()) { + EntityPlayer entityplayer2 = (EntityPlayer) iterator.next(); + +- if (predicate.test(entityplayer2)) { ++ if (predicate.test(entityplayer2) && canSee(commandlistenerwrapper, entityplayer2)) { // Purpur + ((List) object).add(entityplayer2); + } + } +@@ -244,4 +245,11 @@ public class EntitySelector { + public static IChatMutableComponent a(List list) { + return ChatComponentUtils.b(list, Entity::getScoreboardDisplayName); + } ++ ++ // Purpur start ++ private boolean canSee(CommandListenerWrapper commandlistenerwrapper, EntityPlayer target) { ++ Entity entity = commandlistenerwrapper.getEntity(); ++ return !(entity instanceof EntityPlayer) || ((EntityPlayer) entity).getBukkitEntity().canSee(target.getBukkitEntity()); ++ } ++ // Purpur end + }