mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-23 11:25:11 -06:00
wider get local entities range, some things depend on it
This commit is contained in:
parent
f797ea1b37
commit
642dc4b162
1 changed files with 12 additions and 13 deletions
|
|
@ -415,13 +415,12 @@ object RegionManager {
|
|||
* @param location the location.
|
||||
* @param distance the distance.
|
||||
* @param maximum the maximum number of entities to return.
|
||||
* @param ignore an entity to exclude (may be null).
|
||||
* @return the list.
|
||||
*/
|
||||
inline fun<reified T: Entity> getLocalEntities(location: Location, distance: Int, maximum: Int, ignore: Entity?): List<T> {
|
||||
inline fun<reified T: Entity> getLocalEntities(location: Location, distance: Int, maximum: Int): List<T> {
|
||||
val entities: MutableList<T> = ArrayList(20)
|
||||
for (cx in (location.absChunkX - 2)..(location.absChunkX + 2)) {
|
||||
for (cy in (location.absChunkY - 2)..(location.absChunkY + 2)) {
|
||||
for (cx in (location.absChunkX - 8)..(location.absChunkX + 8)) {
|
||||
for (cy in (location.absChunkY - 8)..(location.absChunkY + 8)) {
|
||||
val chunk = Location(cx shl 3, cy shl 3, location.z).chunk
|
||||
if (T::class.java.isAssignableFrom(Player::class.java)) {
|
||||
entities.addAll(chunk.players as Collection<T>)
|
||||
|
|
@ -432,20 +431,20 @@ object RegionManager {
|
|||
}
|
||||
}
|
||||
val b = ZoneBorders(location.x - distance, location.y - distance, location.x + distance, location.y + distance)
|
||||
var filtered = entities.filter { it != ignore && b.insideBorder(it.location.x, it.location.y) }
|
||||
var filtered = entities.filter { b.insideBorder(it.location.x, it.location.y) }
|
||||
if (maximum > 0 && filtered.size > maximum) {
|
||||
filtered = filtered.slice(0 until maximum)
|
||||
}
|
||||
return filtered
|
||||
}
|
||||
@JvmStatic fun getLocalEntities(location: Location, distance: Int): List<Entity> = getLocalEntities<Entity>(location, distance, 0, null)
|
||||
@JvmStatic fun getLocalPlayers(location: Location, distance: Int): List<Player> = getLocalEntities<Player>(location, distance, 0, null)
|
||||
@JvmStatic fun getLocalNPCs(location: Location, distance: Int): List<NPC> = getLocalEntities<NPC>(location, distance, 0, null)
|
||||
@JvmStatic fun getLocalPlayers(location: Location): List<Player> = getLocalEntities<Player>(location, MapDistance.RENDERING.distance, 0, null)
|
||||
@JvmStatic fun getLocalNPCs(location: Location): List<NPC> = getLocalEntities<NPC>(location, MapDistance.RENDERING.distance, 0, null)
|
||||
@JvmStatic fun getSurroundingPlayers(player: Entity, maximum: Int): List<Player> = getLocalEntities<Player>(player.location, 1, maximum, null)
|
||||
@JvmStatic fun getSurroundingNPCs(npc: Entity, maximum: Int): List<NPC> = getLocalEntities<NPC>(npc.location, 1, maximum, null)
|
||||
@JvmStatic fun getLocalPlayersBoundingBox(location: Location, maximum: Int): List<Player> = getLocalEntities<Player>(location, 1, maximum, null)
|
||||
@JvmStatic fun getLocalEntities(location: Location, distance: Int): List<Entity> = getLocalEntities<Entity>(location, distance, 0)
|
||||
@JvmStatic fun getLocalPlayers(location: Location, distance: Int): List<Player> = getLocalEntities<Player>(location, distance, 0)
|
||||
@JvmStatic fun getLocalNPCs(location: Location, distance: Int): List<NPC> = getLocalEntities<NPC>(location, distance, 0)
|
||||
@JvmStatic fun getLocalPlayers(location: Location): List<Player> = getLocalEntities<Player>(location, MapDistance.RENDERING.distance, 0)
|
||||
@JvmStatic fun getLocalNPCs(location: Location): List<NPC> = getLocalEntities<NPC>(location, MapDistance.RENDERING.distance, 0)
|
||||
@JvmStatic fun getSurroundingPlayers(player: Entity, maximum: Int): List<Player> = getLocalEntities<Player>(player.location, 1, maximum)
|
||||
@JvmStatic fun getSurroundingNPCs(npc: Entity, maximum: Int): List<NPC> = getLocalEntities<NPC>(npc.location, 1, maximum)
|
||||
@JvmStatic fun getLocalPlayersBoundingBox(location: Location, maximum: Int): List<Player> = getLocalEntities<Player>(location, 1, maximum)
|
||||
|
||||
/**
|
||||
* Gets a random teleport location in the radius around the given location.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue