pocketmine\entity\Entity::addEffect PHP Method

addEffect() public method

public addEffect ( Effect $effect )
$effect Effect
    public function addEffect(Effect $effect)
    {
        Server::getInstance()->getPluginManager()->callEvent($ev = new EntityEffectAddEvent($this, $effect));
        if ($ev->isCancelled()) {
            return false;
        }
        if ($effect->getId() === Effect::HEALTH_BOOST) {
            $this->setHealth($this->getHealth() + 4 * ($effect->getAmplifier() + 1));
        }
        if ($effect->getId() === Effect::ABSORPTION and $this instanceof Human) {
            $this->setAbsorption(4 * ($effect->getAmplifier() + 1));
        }
        if (isset($this->effects[$effect->getId()])) {
            $oldEffect = $this->effects[$effect->getId()];
            if ($effect->getAmplifier() <= $oldEffect->getAmplifier() and $effect->getDuration() < $oldEffect->getDuration()) {
                return;
            }
            $effect->add($this, true, $oldEffect);
        } else {
            $effect->add($this, false);
        }
        $this->effects[$effect->getId()] = $effect;
        $this->recalculateEffectColor();
        return true;
    }

Usage Example

Example #1
0
 public function onConsume(Entity $human)
 {
     $pk = new EntityEventPacket();
     $pk->eid = $human->getId();
     $pk->event = EntityEventPacket::USE_ITEM;
     if ($human instanceof Player) {
         $human->dataPacket($pk);
     }
     Server::broadcastPacket($human->getViewers(), $pk);
     $ev = new EntityEatItemEvent($human, $this);
     $human->addSaturation($ev->getSaturationRestore());
     $human->addFood($ev->getFoodRestore());
     foreach ($ev->getAdditionalEffects() as $effect) {
         $human->addEffect($effect);
     }
     $human->getInventory()->setItemInHand($ev->getResidue());
 }
All Usage Examples Of pocketmine\entity\Entity::addEffect