pocketmine\entity\Human::entityBaseTick PHP Method

entityBaseTick() public method

public entityBaseTick ( $tickDiff = 1, $EnchantL )
    public function entityBaseTick($tickDiff = 1, $EnchantL = 0)
    {
        if ($this->getInventory() instanceof PlayerInventory) {
            $EnchantL = $this->getInventory()->getHelmet()->getEnchantmentLevel(Enchantment::TYPE_WATER_BREATHING);
        }
        $hasUpdate = parent::entityBaseTick($tickDiff, $EnchantL);
        if ($this->server->foodEnabled) {
            $food = $this->getFood();
            $health = $this->getHealth();
            if ($food >= 18) {
                $this->foodTickTimer++;
                if ($this->foodTickTimer >= 80 and $health < $this->getMaxHealth()) {
                    $this->heal(1, new EntityRegainHealthEvent($this, 1, EntityRegainHealthEvent::CAUSE_SATURATION));
                    $this->exhaust(3.0, PlayerExhaustEvent::CAUSE_HEALTH_REGEN);
                    $this->foodTickTimer = 0;
                }
            } elseif ($food === 0) {
                $this->foodTickTimer++;
                if ($this->foodTickTimer >= 80) {
                    $diff = $this->server->getDifficulty();
                    $can = false;
                    if ($diff === 1) {
                        $can = $health > 10;
                    } elseif ($diff === 2) {
                        $can = $health > 1;
                    } elseif ($diff === 3) {
                        $can = true;
                    }
                    if ($can) {
                        $this->attack(1, new EntityDamageEvent($this, EntityDamageEvent::CAUSE_STARVATION, 1));
                    }
                }
            }
            if ($food <= 6) {
                if ($this->isSprinting()) {
                    $this->setSprinting(false);
                }
            }
        }
        return $hasUpdate;
    }

Usage Example

Example #1
0
 public function entityBaseTick($tickDiff = 1)
 {
     $hasUpdate = parent::entityBaseTick($tickDiff);
     $entries = $this->attributeMap->needSend();
     if (count($entries) > 0) {
         $pk = new UpdateAttributesPacket();
         $pk->entityId = 0;
         $pk->entries = $entries;
         $this->dataPacket($pk);
         foreach ($entries as $entry) {
             $entry->markSynchronized();
         }
     }
     return $hasUpdate;
 }