Death.kt

Branches > main > 743d568 > files / src / main / kotlin / net / bowmap / handlers / Death.kt

package net.bowmap.handlers

import net.bowmap.stormbow.handler
import net.bowmap.stormbow.fact.*
import net.bowmap.stormbow.effect.*

import net.bowmap.paper.*
import net.bowmap.server.item.BUG
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor.*
import org.bukkit.Material
import org.bukkit.entity.Entity
import org.bukkit.entity.Player
import org.bukkit.entity.Zombie
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDeathEvent
import org.bukkit.inventory.ItemStack
import org.bukkit.damage.DamageSource

// Doesn't use attacker but how the player died does contribute to the death event
// This should probably be the damage source?
private fun deathMessage(player: Player, attacker: DamageSource): Component {
  return headComponent(player)
         .append(SPACE)
         .append(player.displayName())
         .append(Component.text(" Died (jk).", RED))
}

object Death {
  fun register() {
    handler<PlayerDied> {
      effects(Cancel(), Broadcast(message = deathMessage(player, cause)))
    }

    handler<PlayerKilledEntity> {
      effects(Give(player, BUG))
    }
  }
}