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