Fact.kt
Branches > main > a68f328 > files / src / main / kotlin / net / bowmap / stormbow / Fact.kt
package net.bowmap.stormbow
import org.bukkit.entity.*
import org.bukkit.damage.DamageSource
import org.bukkit.block.Block
import org.bukkit.inventory.ItemStack
import net.kyori.adventure.audience.Audience
import net.kyori.adventure.text.Component
sealed interface Fact
// TODO a player is a game entity...
// Game entities should probably be referenced by their UUID
data class PlayerSentChatMessage(val player: Player, val audience: Collection<Audience>, val message: Component) : Fact
data class PlayerBrokeBlock(val player: Player, val block: Block) : Fact
data class PlayerKilledEntity(val player: Player, val entity: Entity, val cause: DamageSource) : Fact
data class PlayerDied(val player: Player, val cause: DamageSource) : Fact
data class PlayerJoined(val player: Player) : Fact
data class PlayerQuit(val player: Player) : Fact
data class PlayerStartedFishing(val player: Player, val hook: FishHook) : Fact
data class PlayerCaughtFish(val player: Player, val hook: FishHook) : Fact
// Bowmap items do not have durability, so they can't be used here
data class ItemLostDurability(val player: Player, val itemStack: ItemStack) : Fact