facing = $r->readHorizontalFacing(); $this->lit = $r->readBool(); } protected function encodeState(RuntimeDataWriter $w) : void{ $w->writeHorizontalFacing($this->facing); $w->writeBool($this->lit); } public function getLightLevel() : int{ return $this->lit ? 13 : 0; } public function isLit() : bool{ return $this->lit; } /** * @return $this */ public function setLit(bool $lit = true) : self{ $this->lit = $lit; return $this; } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if($player instanceof Player){ $furnace = $this->position->getWorld()->getTile($this->position); if($furnace instanceof TileFurnace && $furnace->canOpenWith($item->getCustomName())){ $player->setCurrentWindow($furnace->getInventory()); } } return true; } public function onScheduledUpdate() : void{ $furnace = $this->position->getWorld()->getTile($this->position); if($furnace instanceof TileFurnace && $furnace->onUpdate()){ if(mt_rand(1, 60) === 1){ //in vanilla this is between 1 and 5 seconds; try to average about 3 $this->position->getWorld()->addSound($this->position, $furnace->getFurnaceType()->getCookSound()); } $this->position->getWorld()->scheduleDelayedBlockUpdate($this->position, 1); //TODO: check this } } }