mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
77 lines
4.6 KiB
Diff
77 lines
4.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <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 ee3123ac8a568d915ca4e1b42fc1196c269b287e..82125185233bdc59ef93d376e7327180c98c794d 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<Entity> 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<? extends Entity> list) {
|
|
return ChatComponentUtils.b(list, Entity::getScoreboardDisplayName);
|
|
}
|
|
+
|
|
+ // Purpur start
|
|
+ private boolean canSee(CommandListenerWrapper commandlistenerwrapper, EntityPlayer target) {
|
|
+ Entity entity = commandlistenerwrapper.getEntity();
|
|
+ return !net.pl3x.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(entity instanceof EntityPlayer) || ((EntityPlayer) entity).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 7e8654e4df61527f33d4fce2afdb14e29b90a4c2..61f385021e8e870a4cb1b9c2744105988c8b709a 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -212,8 +212,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;
|