Add new kit & register
This commit is contained in:
@@ -47,4 +47,32 @@ object DirectionUtil {
|
||||
return adjustedYaw
|
||||
}
|
||||
|
||||
fun getTargetPlayerInLineOfSight(
|
||||
player: Player,
|
||||
maxDistance: Double,
|
||||
width: Double
|
||||
): Player?
|
||||
{
|
||||
val direction = player.eyeLocation.direction.normalize()
|
||||
val origin = player.eyeLocation.toVector()
|
||||
val world = player.world
|
||||
|
||||
val nearbyPlayers = world.getNearbyEntitiesByType( Player::class.java, player.location, maxDistance, maxDistance, maxDistance )
|
||||
|
||||
return nearbyPlayers
|
||||
.filter { it.uniqueId != player.uniqueId }
|
||||
.filter { nearby ->
|
||||
val nearbyLocation = nearby.location.add( 0.0, 0.5, 0.0 ).toVector()
|
||||
|
||||
val toEntitiy = nearbyLocation.subtract( origin )
|
||||
|
||||
val distanceAlongLine = toEntitiy.dot( direction )
|
||||
if ( distanceAlongLine !in 0.0..maxDistance ) return@filter false
|
||||
|
||||
val perpendicularDistance = toEntitiy.subtract(direction.multiply( distanceAlongLine )).length()
|
||||
perpendicularDistance <= width
|
||||
}
|
||||
.minByOrNull { it.location.distanceSquared( player.location ) }
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user