getName(), $block->getEnchantmentTags()); } protected function describeState(RuntimeDataDescriber $w) : void{ $this->block->describeBlockItemState($w); } public function getBlock(?int $clickedFace = null) : Block{ return clone $this->block; } public function getFuelTime() : int{ return $this->block->getFuelTime(); } public function isFireProof() : bool{ return $this->block->isFireProofAsItem(); } public function getMaxStackSize() : int{ return $this->block->getMaxStackSize(); } public function isNull() : bool{ //TODO: we really shouldn't need to treat air as a special case here //this is needed because the "null" empty slot item is represented by an air block, but there's no real reason //why air should be needed at all. A separate special item type (or actual null) should be used instead, but //this would cause a lot of BC breaks, so we can't do it yet. return parent::isNull() || $this->block->getTypeId() === BlockTypeIds::AIR; } }