#1409: Add methods to get players seeing specific chunks
This commit is contained in:
parent
16c9767978
commit
58c41cebbc
@ -48,6 +48,7 @@ import org.bukkit.craftbukkit.block.CraftBiome;
|
|||||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.generator.structure.GeneratedStructure;
|
import org.bukkit.generator.structure.GeneratedStructure;
|
||||||
import org.bukkit.generator.structure.Structure;
|
import org.bukkit.generator.structure.Structure;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
@ -376,6 +377,11 @@ public class CraftChunk implements Chunk {
|
|||||||
return getCraftWorld().getStructures(getX(), getZ(), structure);
|
return getCraftWorld().getStructures(getX(), getZ(), structure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Player> getPlayersSeeingChunk() {
|
||||||
|
return getWorld().getPlayersSeeingChunk(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) return true;
|
if (this == o) return true;
|
||||||
|
@ -350,6 +350,31 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Player> getPlayersSeeingChunk(Chunk chunk) {
|
||||||
|
Preconditions.checkArgument(chunk != null, "chunk cannot be null");
|
||||||
|
|
||||||
|
return getPlayersSeeingChunk(chunk.getX(), chunk.getZ());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Player> getPlayersSeeingChunk(int x, int z) {
|
||||||
|
if (!isChunkLoaded(x, z)) {
|
||||||
|
return Collections.emptySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<EntityPlayer> players = world.getChunkSource().chunkMap.getPlayers(new ChunkCoordIntPair(x, z), false);
|
||||||
|
|
||||||
|
if (players.isEmpty()) {
|
||||||
|
return Collections.emptySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
return players.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.map(EntityPlayer::getBukkitEntity)
|
||||||
|
.collect(Collectors.toUnmodifiableSet());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChunkInUse(int x, int z) {
|
public boolean isChunkInUse(int x, int z) {
|
||||||
return isChunkLoaded(x, z);
|
return isChunkLoaded(x, z);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user