isActivable = true; $this->hardness = 17.5; } public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null){ $faces = [ 0 => 4, 1 => 2, 2 => 5, 3 => 3, ]; $this->meta = $faces[$player instanceof Player ? $player->getDirection() : 0]; $this->getLevel()->setBlock($block, $this, true, true); $nbt = new Compound(false, [ new Enum("Items", []), new String("id", Tile::FURNACE), new Int("x", $this->x), new Int("y", $this->y), new Int("z", $this->z) ]); $nbt->Items->setTagType(NBT::TAG_Compound); new Furnace($this->getLevel()->getChunk($this->x >> 4, $this->z >> 4), $nbt); return true; } public function onBreak(Item $item){ $this->getLevel()->setBlock($this, new Air(), true, true); return true; } public function onActivate(Item $item, Player $player = null){ if($player instanceof Player){ $t = $this->getLevel()->getTile($this); $furnace = false; if($t instanceof Furnace){ $furnace = $t; }else{ $nbt = new Compound(false, [ new Enum("Items", []), new String("id", Tile::FURNACE), new Int("x", $this->x), new Int("y", $this->y), new Int("z", $this->z) ]); $nbt->Items->setTagType(NBT::TAG_Compound); $furnace = new Furnace($this->getLevel()->getChunk($this->x >> 4, $this->z >> 4), $nbt); } if(($player->getGamemode() & 0x01) === 0x01){ return true; } $player->addWindow($furnace->getInventory()); } return true; } public function getBreakTime(Item $item){ switch($item->isPickaxe()){ case 5: return 0.7; case 4: return 0.9; case 3: return 1.35; case 2: return 0.45; case 1: return 2.65; default: return 17.5; } } public function getDrops(Item $item){ $drops = []; if($item->isPickaxe() >= 1){ $drops[] = [Item::FURNACE, 0, 1]; } return $drops; } }