public function attack($damage, EntityDamageEvent $source) { parent::attack($damage, $source); if (!$source->isCancelled()) { $pk = new EntityEventPacket(); $pk->eid = $this->id; $pk->event = EntityEventPacket::HURT_ANIMATION; foreach ($this->getLevel()->getPlayers() as $player) { $player->dataPacket($pk); } } }
public function attack($damage, EntityDamageEvent $source) { if ($source instanceof EntityDamageByChildEntityEvent) { if ($source instanceof ProjectileHitEvent && $source->getEntity() instanceof Arrow) { $this->setHealth(0); } } elseif ($source instanceof EntityDamageByBlockEvent && $source->getDamager() instanceof Cactus) { $this->setHealth(0); } parent::attack($damage, $source); if (!$source->isCancelled()) { $pk = new EntityEventPacket(); $pk->eid = $this->id; $pk->event = $this->getHealth() <= 0 ? EntityEventPacket::DEATH_ANIMATION : EntityEventPacket::HURT_ANIMATION; foreach ($this->getLevel()->getPlayers() as $player) { $player->dataPacket($pk); } } }