public function kill() { parent::kill(); $this->poofAway(); }
public function kill() { if ($this->dead === true or $this->spawned === false) { return; } parent::kill(); if ($this->inventory !== null) { $this->inventory->clearAll(); } $message = $this->getName() . " died"; $cause = $this->getLastDamageCause(); $ev = null; if ($cause instanceof EntityDamageEvent) { $ev = $cause; $cause = $ev->getCause(); } switch ($cause) { case EntityDamageEvent::CAUSE_ENTITY_ATTACK: if ($ev instanceof EntityDamageByEntityEvent) { $e = $ev->getDamager(); if ($e instanceof Player) { $message = $this->getName() . " was killed by " . $e->getName(); break; } elseif ($e instanceof Living) { $message = $this->getName() . " was slain by " . $e->getName(); break; } } $message = $this->getName() . " was killed"; break; case EntityDamageEvent::CAUSE_PROJECTILE: if ($ev instanceof EntityDamageByEntityEvent) { $e = $ev->getDamager(); if ($e instanceof Living) { $message = $this->getName() . " was shot by " . $e->getName(); break; } } $message = $this->getName() . " was shot by arrow"; break; case EntityDamageEvent::CAUSE_SUICIDE: $message = $this->getName() . " died"; break; case EntityDamageEvent::CAUSE_VOID: $message = $this->getName() . " fell out of the world"; break; case EntityDamageEvent::CAUSE_FALL: if ($ev instanceof EntityDamageEvent) { if ($ev->getFinalDamage() > 2) { $message = $this->getName() . " fell from a high place"; break; } } $message = $this->getName() . " hit the ground too hard"; break; case EntityDamageEvent::CAUSE_SUFFOCATION: $message = $this->getName() . " suffocated in a wall"; break; case EntityDamageEvent::CAUSE_LAVA: $message = $this->getName() . " tried to swim in lava"; break; case EntityDamageEvent::CAUSE_FIRE: $message = $this->getName() . " went up in flames"; break; case EntityDamageEvent::CAUSE_FIRE_TICK: $message = $this->getName() . " burned to death"; break; case EntityDamageEvent::CAUSE_DROWNING: $message = $this->getName() . " drowned"; break; case EntityDamageEvent::CAUSE_CONTACT: $message = $this->getName() . " was pricked to death"; break; case EntityDamageEvent::CAUSE_BLOCK_EXPLOSION: case EntityDamageEvent::CAUSE_ENTITY_EXPLOSION: case EntityDamageEvent::CAUSE_MAGIC: case EntityDamageEvent::CAUSE_CUSTOM: default: } $this->server->getPluginManager()->callEvent($ev = new PlayerDeathEvent($this, $this->getDrops(), $message)); if ($ev->getDeathMessage() != "") { $this->server->broadcast($ev->getDeathMessage(), Server::BROADCAST_CHANNEL_USERS); } }