/**
  * Generates the starting piece and adds it to the structure. If the dungeon does not one, a
  * random piece is selected.
  */
 protected StructureDungeonPieceInst generateStartPiece(Random rand) {
   StructureDungeonPiece startPiece =
       dungeon.getStartingPiece().orElseGet(() -> selectNextPiece(rand)).getRandomPiece(rand);
   return addPiece(
       startPiece,
       Pos.at(
           -startPiece.size.sizeX / 2,
           dungeon.boundingBox.y2 / 2 - startPiece.size.sizeY / 2,
           -startPiece.size.sizeZ));
 }
 public StructureDungeonGenerator(StructureDungeon<?> dungeon) {
   this.dungeon = dungeon;
   this.generated = new WeightedList<>(dungeon.getPieceAmountRange().max);
 }