mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Hide hidden players from entity selector
This commit is contained in:
committed by
granny
parent
facd3e2900
commit
e3d2aa6d03
@@ -1,80 +0,0 @@
|
|||||||
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/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java
|
|
||||||
index c8d39e6e1c570c9219f6066da273dc0130920519..d881caf99c2bad66b76bdc6ddb11a6cac1e94db6 100644
|
|
||||||
--- a/net/minecraft/commands/arguments/selector/EntitySelector.java
|
|
||||||
+++ b/net/minecraft/commands/arguments/selector/EntitySelector.java
|
|
||||||
@@ -198,10 +198,10 @@ public class EntitySelector {
|
|
||||||
|
|
||||||
if (this.playerName != null) {
|
|
||||||
entityplayer = source.getServer().getPlayerList().getPlayerByName(this.playerName);
|
|
||||||
- return entityplayer == null ? List.of() : List.of(entityplayer);
|
|
||||||
+ return entityplayer == null || !canSee(source, entityplayer) ? List.of() : List.of(entityplayer); // Purpur - Hide hidden players from entity selector
|
|
||||||
} else if (this.entityUUID != null) {
|
|
||||||
entityplayer = source.getServer().getPlayerList().getPlayer(this.entityUUID);
|
|
||||||
- return entityplayer == null ? List.of() : List.of(entityplayer);
|
|
||||||
+ return entityplayer == null || !canSee(source, entityplayer) ? List.of() : List.of(entityplayer); // Purpur - Hide hidden players from entity selector
|
|
||||||
} else {
|
|
||||||
Vec3 vec3d = (Vec3) this.position.apply(source.getPosition());
|
|
||||||
AABB axisalignedbb = this.getAbsoluteAabb(vec3d);
|
|
||||||
@@ -214,7 +214,7 @@ public class EntitySelector {
|
|
||||||
ServerPlayer entityplayer1 = (ServerPlayer) entity;
|
|
||||||
|
|
||||||
if (predicate.test(entityplayer1)) {
|
|
||||||
- return List.of(entityplayer1);
|
|
||||||
+ return !canSee(source, entityplayer1) ? List.of() : List.of(entityplayer1); // Purpur - Hide hidden players from entity selector
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -225,6 +225,7 @@ public class EntitySelector {
|
|
||||||
|
|
||||||
if (this.isWorldLimited()) {
|
|
||||||
object = source.getLevel().getPlayers(predicate, i);
|
|
||||||
+ ((List) object).removeIf(entityplayer3 -> !canSee(source, (ServerPlayer) entityplayer3)); // Purpur - Hide hidden players from entity selector
|
|
||||||
} else {
|
|
||||||
object = new ObjectArrayList();
|
|
||||||
Iterator iterator = source.getServer().getPlayerList().getPlayers().iterator();
|
|
||||||
@@ -232,7 +233,7 @@ public class EntitySelector {
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
ServerPlayer entityplayer2 = (ServerPlayer) iterator.next();
|
|
||||||
|
|
||||||
- if (predicate.test(entityplayer2)) {
|
|
||||||
+ if (predicate.test(entityplayer2) && canSee(source, entityplayer2)) { // Purpur - Hide hidden players from entity selector
|
|
||||||
((List) object).add(entityplayer2);
|
|
||||||
if (((List) object).size() >= i) {
|
|
||||||
return (List) object;
|
|
||||||
@@ -299,4 +300,10 @@ public class EntitySelector {
|
|
||||||
public static Component joinNames(List<? extends Entity> entities) {
|
|
||||||
return ComponentUtils.formatList(entities, Entity::getDisplayName);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Purpur start - Hide hidden players from entity selector
|
|
||||||
+ private boolean canSee(CommandSourceStack sender, ServerPlayer target) {
|
|
||||||
+ return !org.purpurmc.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(sender.getEntity() instanceof ServerPlayer player) || player.getBukkitEntity().canSee(target.getBukkitEntity());
|
|
||||||
+ }
|
|
||||||
+ // Purpur end - Hide hidden players from entity selector
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
index 3a0ed610320f9730806d463647f53857265aa2e8..f4e5d43625838f0dd6979e10a21ef58e8e0e1263 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
@@ -249,6 +249,7 @@ public class PurpurConfig {
|
|
||||||
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
|
|
||||||
public static int commandTPSBarTickInterval = 20;
|
|
||||||
public static boolean commandGamemodeRequiresPermission = false;
|
|
||||||
+ public static boolean hideHiddenPlayersFromEntitySelector = false;
|
|
||||||
private static void commandSettings() {
|
|
||||||
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
|
|
||||||
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
|
|
||||||
@@ -261,6 +262,7 @@ public class PurpurConfig {
|
|
||||||
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
|
|
||||||
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
|
|
||||||
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);
|
|
||||||
+ hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int barrelRows = 3;
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
--- a/net/minecraft/commands/arguments/selector/EntitySelector.java
|
||||||
|
+++ b/net/minecraft/commands/arguments/selector/EntitySelector.java
|
||||||
|
@@ -192,26 +_,27 @@
|
||||||
|
this.checkPermissions(source);
|
||||||
|
if (this.playerName != null) {
|
||||||
|
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName);
|
||||||
|
- return playerByName == null ? List.of() : List.of(playerByName);
|
||||||
|
+ return playerByName == null || !canSee(source, playerByName) ? List.of() : List.of(playerByName); // Purpur - Hide hidden players from entity selector
|
||||||
|
} else if (this.entityUUID != null) {
|
||||||
|
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayer(this.entityUUID);
|
||||||
|
- return playerByName == null ? List.of() : List.of(playerByName);
|
||||||
|
+ return playerByName == null || !canSee(source, playerByName) ? List.of() : List.of(playerByName); // Purpur - Hide hidden players from entity selector
|
||||||
|
} else {
|
||||||
|
Vec3 vec3 = this.position.apply(source.getPosition());
|
||||||
|
AABB absoluteAabb = this.getAbsoluteAabb(vec3);
|
||||||
|
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, null);
|
||||||
|
if (this.currentEntity) {
|
||||||
|
- return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) ? List.of(serverPlayer) : List.of();
|
||||||
|
+ return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) && canSee(source, serverPlayer) ? List.of(serverPlayer) : List.of(); // Purpur - Hide hidden players from entity selector
|
||||||
|
} else {
|
||||||
|
int resultLimit = this.getResultLimit();
|
||||||
|
List<ServerPlayer> players;
|
||||||
|
if (this.isWorldLimited()) {
|
||||||
|
players = source.getLevel().getPlayers(predicate, resultLimit);
|
||||||
|
+ players.removeIf(entityplayer3 -> !canSee(source, entityplayer3)); // Purpur - Hide hidden players from entity selector
|
||||||
|
} else {
|
||||||
|
players = new ObjectArrayList<>();
|
||||||
|
|
||||||
|
for (ServerPlayer serverPlayer1 : source.getServer().getPlayerList().getPlayers()) {
|
||||||
|
- if (predicate.test(serverPlayer1)) {
|
||||||
|
+ if (predicate.test(serverPlayer1) && canSee(source, serverPlayer1)) { // Purpur - Hide hidden players from entity selector
|
||||||
|
players.add(serverPlayer1);
|
||||||
|
if (players.size() >= resultLimit) {
|
||||||
|
return players;
|
||||||
|
@@ -270,4 +_,10 @@
|
||||||
|
public static Component joinNames(List<? extends Entity> names) {
|
||||||
|
return ComponentUtils.formatList(names, Entity::getDisplayName);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Purpur start - Hide hidden players from entity selector
|
||||||
|
+ private boolean canSee(CommandSourceStack sender, ServerPlayer target) {
|
||||||
|
+ return !org.purpurmc.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(sender.getEntity() instanceof ServerPlayer player) || player.getBukkitEntity().canSee(target.getBukkitEntity());
|
||||||
|
+ }
|
||||||
|
+ // Purpur end - Hide hidden players from entity selector
|
||||||
|
}
|
||||||
@@ -234,6 +234,7 @@ public class PurpurConfig {
|
|||||||
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
|
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
|
||||||
public static int commandTPSBarTickInterval = 20;
|
public static int commandTPSBarTickInterval = 20;
|
||||||
public static boolean commandGamemodeRequiresPermission = false;
|
public static boolean commandGamemodeRequiresPermission = false;
|
||||||
|
public static boolean hideHiddenPlayersFromEntitySelector = false;
|
||||||
private static void commandSettings() {
|
private static void commandSettings() {
|
||||||
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
|
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
|
||||||
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
|
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
|
||||||
@@ -246,6 +247,7 @@ public class PurpurConfig {
|
|||||||
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
|
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
|
||||||
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
|
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
|
||||||
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);
|
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);
|
||||||
|
hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int barrelRows = 3;
|
public static int barrelRows = 3;
|
||||||
|
|||||||
Reference in New Issue
Block a user