Files
Purpur/patches/server/0195-Hide-hidden-players-from-entity-selector.patch
William Blake Galbreath 17368d1aa9 Updated Upstream (Paper & Tuinity)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
12dec20 Bump paerweight to 1.1.7
e33ed89 Get short commit ref using a more proper method
7d6147d Remove now unneeded patch due to paperweight 1.1.7
e72fa41 Update task dependency for includeMappings so the new task isn't skipped
0ad5526 Trim whitspace off of git hash (oops)

Tuinity Changes:
e878ba9 Update paper
2bd2849 Bring back fix codec spam patch
2021-06-27 00:42:39 -05:00

76 lines
4.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
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 0fb8f32427843f4bfd90ab88ecb3ab3e4a4fda31..f99f1ba7f912a2fd503e12c446b342a8d04356a0 100644
--- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java
+++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java
@@ -184,10 +184,10 @@ public class EntitySelector {
if (this.playerName != null) {
entityplayer = commandlistenerwrapper.getServer().getPlayerList().getPlayerByName(this.playerName);
- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer}));
+ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur
} else if (this.entityUUID != null) {
entityplayer = commandlistenerwrapper.getServer().getPlayerList().getPlayer(this.entityUUID);
- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer}));
+ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur
} else {
Vec3 vec3d = (Vec3) this.position.apply(commandlistenerwrapper.getPosition());
Predicate<Entity> predicate = this.getPredicate(vec3d);
@@ -197,7 +197,7 @@ public class EntitySelector {
ServerPlayer entityplayer1 = (ServerPlayer) commandlistenerwrapper.getEntity();
if (predicate.test(entityplayer1)) {
- return Lists.newArrayList(new ServerPlayer[]{entityplayer1});
+ return !canSee(commandlistenerwrapper, entityplayer1) ? Collections.emptyList() : Lists.newArrayList(entityplayer1); // Purpur
}
}
@@ -207,6 +207,7 @@ public class EntitySelector {
if (this.isWorldLimited()) {
object = commandlistenerwrapper.getLevel().getPlayers(predicate);
+ ((List) object).removeIf(entityplayer3 -> !canSee(commandlistenerwrapper, (ServerPlayer) entityplayer3)); // Purpur
} else {
object = Lists.newArrayList();
Iterator iterator = commandlistenerwrapper.getServer().getPlayerList().getPlayers().iterator();
@@ -214,7 +215,7 @@ public class EntitySelector {
while (iterator.hasNext()) {
ServerPlayer entityplayer2 = (ServerPlayer) iterator.next();
- if (predicate.test(entityplayer2)) {
+ if (predicate.test(entityplayer2) && canSee(commandlistenerwrapper, entityplayer2)) { // Purpur
((List) object).add(entityplayer2);
}
}
@@ -256,4 +257,10 @@ public class EntitySelector {
public static Component joinNames(List<? extends Entity> list) {
return ComponentUtils.formatList(list, Entity::getDisplayName);
}
+
+ // Purpur start
+ private boolean canSee(CommandSourceStack sender, ServerPlayer target) {
+ return !net.pl3x.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(sender.getEntity() instanceof ServerPlayer player) || player.getBukkitEntity().canSee(target.getBukkitEntity());
+ }
+ // Purpur end
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index e152eb5884bc564e15415cd50b3942913825c13d..36912a7cfd3efd49cefbbaf9dc7110de105cd638 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -311,8 +311,10 @@ public class PurpurConfig {
}
public static boolean commandGamemodeRequiresPermission = false;
+ public static boolean hideHiddenPlayersFromEntitySelector = false;
private static void commandSettings() {
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);
+ hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);
}
public static boolean barrelSixRows = false;