GhostDisplays/main/kotlin/net/hareworks/ghostdisplays/api/audience/AudiencePredicates.kt
2025-12-06 04:40:18 +09:00

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
}
}
}