getSide(Facing::DOWN)->getTypeId() !== BlockTypeIds::AIR; } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{ if($player !== null){ return $player->consumeObject($this); } return false; } public function getFoodRestore() : int{ return 2; } public function getSaturationRestore() : float{ return 0.4; } public function requiresHunger() : bool{ return true; } /** * @return EffectInstance[] */ public function getAdditionalEffects() : array{ return []; } abstract public function getResidue() : Block; public function onConsume(Living $consumer) : void{ $this->position->getWorld()->setBlock($this->position, $this->getResidue()); } }