43 lines
1.6 KiB
Kotlin
43 lines
1.6 KiB
Kotlin
package net.hareworks.ghostdisplays.api
|
|
|
|
import net.hareworks.ghostdisplays.api.audience.AudienceAction
|
|
import net.hareworks.ghostdisplays.api.audience.AudiencePredicate
|
|
import net.hareworks.ghostdisplays.api.click.ClickPriority
|
|
import net.hareworks.ghostdisplays.api.click.DisplayClickHandler
|
|
import net.hareworks.ghostdisplays.api.click.HandlerRegistration
|
|
import net.hareworks.ghostdisplays.internal.fake.FakeBlockDisplay
|
|
import net.hareworks.ghostdisplays.internal.fake.FakeDisplay
|
|
import net.hareworks.ghostdisplays.internal.fake.FakeItemDisplay
|
|
import net.hareworks.ghostdisplays.internal.fake.FakeTextDisplay
|
|
import org.bukkit.Location
|
|
import org.bukkit.entity.Player
|
|
import java.util.UUID
|
|
|
|
interface DisplayController {
|
|
val entityId: Int
|
|
val displayType: DisplayType
|
|
val location: Location
|
|
|
|
fun show(player: Player)
|
|
fun hide(player: Player)
|
|
fun isViewing(playerId: UUID): Boolean
|
|
fun viewerIds(): Set<UUID>
|
|
|
|
fun updateText(mutator: (FakeTextDisplay) -> Unit)
|
|
fun updateBlock(mutator: (FakeBlockDisplay) -> Unit)
|
|
fun updateItem(mutator: (FakeItemDisplay) -> Unit)
|
|
fun updateDisplay(mutator: (FakeDisplay) -> Unit)
|
|
fun teleport(location: Location)
|
|
|
|
fun setBaseVisibility(visible: Boolean)
|
|
fun addAudience(predicate: AudiencePredicate): HandlerRegistration
|
|
fun addAudienceRule(predicate: AudiencePredicate, action: AudienceAction): HandlerRegistration
|
|
fun clearAudienceRules()
|
|
fun refreshAudience(target: Player? = null)
|
|
fun needsPeriodicUpdate(): Boolean = false
|
|
|
|
fun destroy()
|
|
|
|
fun onClick(priority: ClickPriority = ClickPriority.NORMAL, handler: DisplayClickHandler): HandlerRegistration
|
|
}
|