lit ? Block::BURNING_FURNACE : Block::FURNACE; } protected function writeStateToMeta() : int{ return $this->facing; } public function readStateFromMeta(int $meta) : void{ $this->facing = BlockDataValidator::readHorizontalFacing($meta); } public function getStateBitmask() : int{ return 0b111; } public function getName() : string{ return "Furnace"; } public function getHardness() : float{ return 3.5; } public function getToolType() : int{ return BlockToolType::TYPE_PICKAXE; } public function getToolHarvestLevel() : int{ return TieredTool::TIER_WOODEN; } public function getLightLevel() : int{ return $this->lit ? 13 : 0; } public function isLit() : bool{ return $this->lit; } /** * @param bool $lit * * @return $this */ public function setLit(bool $lit = true) : self{ $this->lit = $lit; return $this; } public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, Player $player = null) : bool{ if($player !== null){ $this->facing = Facing::opposite($player->getHorizontalFacing()); } if(parent::place($item, $blockReplace, $blockClicked, $face, $clickVector, $player)){ $this->level->addTile(TileFactory::createFromItem(TileFurnace::class, $this->getLevel(), $this->asVector3(), $item)); return true; } return false; } public function onActivate(Item $item, Player $player = null) : bool{ if($player instanceof Player){ $furnace = $this->getLevel()->getTile($this); if($furnace instanceof TileFurnace and $furnace->canOpenWith($item->getCustomName())){ $player->addWindow($furnace->getInventory()); } } return true; } }