31 lines
1010 B
Kotlin
31 lines
1010 B
Kotlin
package net.hareworks.ghostdisplays.api.audience
|
|
|
|
import org.bukkit.Location
|
|
import org.bukkit.entity.Player
|
|
import java.util.UUID
|
|
|
|
object AudiencePredicates {
|
|
fun anyone(): AudiencePredicate = AudiencePredicate { true }
|
|
|
|
fun permission(node: String): AudiencePredicate = AudiencePredicate { player ->
|
|
player.hasPermission(node)
|
|
}
|
|
|
|
fun world(worldName: String): AudiencePredicate = AudiencePredicate { player ->
|
|
player.world.name.equals(worldName, ignoreCase = true)
|
|
}
|
|
|
|
fun uuid(target: UUID): AudiencePredicate = AudiencePredicate { player ->
|
|
player.uniqueId == target
|
|
}
|
|
|
|
fun near(location: Location, radius: Double): AudiencePredicate {
|
|
val radiusSq = radius * radius
|
|
val worldName = location.world?.name
|
|
require(worldName != null) { "Location must have a world" }
|
|
return AudiencePredicate { player ->
|
|
player.world.name == worldName && player.location.distanceSquared(location) <= radiusSq
|
|
}
|
|
}
|
|
}
|