mirror of
https://github.com/PaperMC/Paper.git
synced 2025-05-18 21:20:24 -07:00
Add Entity#isTrackedBy (#12332)
This commit is contained in:
parent
de64e70458
commit
1b889688a5
@ -698,6 +698,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
|
||||
@NotNull
|
||||
Set<Player> getTrackedBy();
|
||||
|
||||
/**
|
||||
* Checks to see if a player is currently tracking this entity.
|
||||
*
|
||||
* @param player the player to check
|
||||
* @return if the player is currently tracking this entity
|
||||
* @see #getTrackedBy()
|
||||
*/
|
||||
boolean isTrackedBy(@NotNull Player player);
|
||||
|
||||
/**
|
||||
* Sets whether the entity has a team colored (default: white) glow.
|
||||
*
|
||||
|
@ -725,6 +725,18 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
return players.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTrackedBy(final Player player) {
|
||||
Preconditions.checkState(!this.entity.generation, "Cannot check tracking players during world generation");
|
||||
Preconditions.checkArgument(player != null, "Player cannot be null");
|
||||
|
||||
ServerLevel world = ((CraftWorld) this.getWorld()).getHandle();
|
||||
ChunkMap.TrackedEntity entityTracker = world.getChunkSource().chunkMap.entityMap.get(this.getEntityId());
|
||||
if (entityTracker == null) return false;
|
||||
|
||||
return entityTracker.seenBy.contains(((CraftPlayer) player).getHandle().connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String message) {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user