pocketmine\entity\Snake::attack PHP Метод

attack() публичный Метод

public attack ( $damage, EntityDamageEvent $source )
$source pocketmine\event\entity\EntityDamageEvent
    public function attack($damage, EntityDamageEvent $source)
    {
        if ($this->attackTime > 0 or $this->noDamageTicks > 0) {
            $lastCause = $this->getLastDamageCause();
            if ($lastCause !== null and $lastCause->getDamage() >= $damage) {
                $source->setCancelled();
            }
        }
        parent::attack($damage, $source);
        if ($source->isCancelled()) {
            return;
        }
        if ($source instanceof EntityDamageByEntityEvent) {
            $e = $source->getDamager();
            if ($source instanceof EntityDamageByChildEntityEvent) {
                $e = $source->getChild();
            }
            if ($e->isOnFire() > 0) {
                $this->setOnFire(2 * $this->server->getDifficulty());
            }
        }
        $pk = new EntityEventPacket();
        $pk->eid = $this->getId();
        $pk->event = $this->getHealth() <= 0 ? EntityEventPacket::DEATH_ANIMATION : EntityEventPacket::HURT_ANIMATION;
        // Ouch!
        Server::broadcastPacket($this->hasSpawned, $pk);
        // TESTING
        for ($i = 0; $i < 400; $i++) {
            $pk = new AnimatePacket();
            $pk->eid = $this->getId();
            $pk->action = $i;
            Server::broadcastPacket($this->hasSpawned, $pk);
        }
        // END TESTING
        $this->attackTime = 0;
        // 0.5 seconds cooldown
    }