contract(0.025, 0, 0.025)->trim(Facing::UP, 0.05)]; } public function onPostPlace() : void{ $tile = $this->position->getWorld()->getTile($this->position); if($tile instanceof TileChest){ foreach([ Facing::rotateY($this->facing, true), Facing::rotateY($this->facing, false) ] as $side){ $c = $this->getSide($side); if($c instanceof Chest and $c->isSameType($this) and $c->facing === $this->facing){ $pair = $this->position->getWorld()->getTile($c->position); if($pair instanceof TileChest and !$pair->isPaired()){ $pair->pairWith($tile); $tile->pairWith($pair); break; } } } } } public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ if($player instanceof Player){ $chest = $this->position->getWorld()->getTile($this->position); if($chest instanceof TileChest){ if( !$this->getSide(Facing::UP)->isTransparent() or (($pair = $chest->getPair()) !== null and !$pair->getBlock()->getSide(Facing::UP)->isTransparent()) or !$chest->canOpenWith($item->getCustomName()) ){ return true; } $player->setCurrentWindow($chest->getInventory()); } } return true; } public function getFuelTime() : int{ return 300; } }