From 642dc4b162dd5b1da06d916e3a93c08f34fab4a8 Mon Sep 17 00:00:00 2001 From: Player Name Date: Wed, 22 Jul 2026 14:24:46 +0200 Subject: [PATCH] wider get local entities range, some things depend on it --- .../main/core/game/world/map/RegionManager.kt | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/Server/src/main/core/game/world/map/RegionManager.kt b/Server/src/main/core/game/world/map/RegionManager.kt index 07f602ae5..b75b5b774 100644 --- a/Server/src/main/core/game/world/map/RegionManager.kt +++ b/Server/src/main/core/game/world/map/RegionManager.kt @@ -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 getLocalEntities(location: Location, distance: Int, maximum: Int, ignore: Entity?): List { + inline fun getLocalEntities(location: Location, distance: Int, maximum: Int): List { val entities: MutableList = 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) @@ -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 = getLocalEntities(location, distance, 0, null) - @JvmStatic fun getLocalPlayers(location: Location, distance: Int): List = getLocalEntities(location, distance, 0, null) - @JvmStatic fun getLocalNPCs(location: Location, distance: Int): List = getLocalEntities(location, distance, 0, null) - @JvmStatic fun getLocalPlayers(location: Location): List = getLocalEntities(location, MapDistance.RENDERING.distance, 0, null) - @JvmStatic fun getLocalNPCs(location: Location): List = getLocalEntities(location, MapDistance.RENDERING.distance, 0, null) - @JvmStatic fun getSurroundingPlayers(player: Entity, maximum: Int): List = getLocalEntities(player.location, 1, maximum, null) - @JvmStatic fun getSurroundingNPCs(npc: Entity, maximum: Int): List = getLocalEntities(npc.location, 1, maximum, null) - @JvmStatic fun getLocalPlayersBoundingBox(location: Location, maximum: Int): List = getLocalEntities(location, 1, maximum, null) + @JvmStatic fun getLocalEntities(location: Location, distance: Int): List = getLocalEntities(location, distance, 0) + @JvmStatic fun getLocalPlayers(location: Location, distance: Int): List = getLocalEntities(location, distance, 0) + @JvmStatic fun getLocalNPCs(location: Location, distance: Int): List = getLocalEntities(location, distance, 0) + @JvmStatic fun getLocalPlayers(location: Location): List = getLocalEntities(location, MapDistance.RENDERING.distance, 0) + @JvmStatic fun getLocalNPCs(location: Location): List = getLocalEntities(location, MapDistance.RENDERING.distance, 0) + @JvmStatic fun getSurroundingPlayers(player: Entity, maximum: Int): List = getLocalEntities(player.location, 1, maximum) + @JvmStatic fun getSurroundingNPCs(npc: Entity, maximum: Int): List = getLocalEntities(npc.location, 1, maximum) + @JvmStatic fun getLocalPlayersBoundingBox(location: Location, maximum: Int): List = getLocalEntities(location, 1, maximum) /** * Gets a random teleport location in the radius around the given location.