/**
   * 'second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it
   * closes Mineshafts at the end, it adds Fences...'
   */
  public boolean addComponentParts(
      World par1World, Random par2Random, StructureBoundingBox par3StructureBoundingBox) {
    if (isLiquidInStructureBoundingBox(par1World, par3StructureBoundingBox)) {
      return false;
    }

    byte byte0 = 11;

    if (!isLargeRoom) {
      byte0 = 6;
    }

    fillWithRandomizedBlocks(
        par1World,
        par3StructureBoundingBox,
        0,
        0,
        0,
        13,
        byte0 - 1,
        14,
        true,
        par2Random,
        StructureStrongholdPieces.getStrongholdStones());
    placeDoor(par1World, par2Random, par3StructureBoundingBox, doorType, 4, 1, 0);
    randomlyFillWithBlocks(
        par1World,
        par3StructureBoundingBox,
        par2Random,
        0.07F,
        2,
        1,
        1,
        11,
        4,
        13,
        Block.web.blockID,
        Block.web.blockID,
        false);

    for (int i = 1; i <= 13; i++) {
      if ((i - 1) % 4 == 0) {
        fillWithBlocks(
            par1World,
            par3StructureBoundingBox,
            1,
            1,
            i,
            1,
            4,
            i,
            Block.planks.blockID,
            Block.planks.blockID,
            false);
        fillWithBlocks(
            par1World,
            par3StructureBoundingBox,
            12,
            1,
            i,
            12,
            4,
            i,
            Block.planks.blockID,
            Block.planks.blockID,
            false);
        placeBlockAtCurrentPosition(
            par1World, Block.torchWood.blockID, 0, 2, 3, i, par3StructureBoundingBox);
        placeBlockAtCurrentPosition(
            par1World, Block.torchWood.blockID, 0, 11, 3, i, par3StructureBoundingBox);

        if (isLargeRoom) {
          fillWithBlocks(
              par1World,
              par3StructureBoundingBox,
              1,
              6,
              i,
              1,
              9,
              i,
              Block.planks.blockID,
              Block.planks.blockID,
              false);
          fillWithBlocks(
              par1World,
              par3StructureBoundingBox,
              12,
              6,
              i,
              12,
              9,
              i,
              Block.planks.blockID,
              Block.planks.blockID,
              false);
        }

        continue;
      }

      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          1,
          1,
          i,
          1,
          4,
          i,
          Block.bookShelf.blockID,
          Block.bookShelf.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          12,
          1,
          i,
          12,
          4,
          i,
          Block.bookShelf.blockID,
          Block.bookShelf.blockID,
          false);

      if (isLargeRoom) {
        fillWithBlocks(
            par1World,
            par3StructureBoundingBox,
            1,
            6,
            i,
            1,
            9,
            i,
            Block.bookShelf.blockID,
            Block.bookShelf.blockID,
            false);
        fillWithBlocks(
            par1World,
            par3StructureBoundingBox,
            12,
            6,
            i,
            12,
            9,
            i,
            Block.bookShelf.blockID,
            Block.bookShelf.blockID,
            false);
      }
    }

    for (int j = 3; j < 12; j += 2) {
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          3,
          1,
          j,
          4,
          3,
          j,
          Block.bookShelf.blockID,
          Block.bookShelf.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          6,
          1,
          j,
          7,
          3,
          j,
          Block.bookShelf.blockID,
          Block.bookShelf.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          9,
          1,
          j,
          10,
          3,
          j,
          Block.bookShelf.blockID,
          Block.bookShelf.blockID,
          false);
    }

    if (isLargeRoom) {
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          1,
          5,
          1,
          3,
          5,
          13,
          Block.planks.blockID,
          Block.planks.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          10,
          5,
          1,
          12,
          5,
          13,
          Block.planks.blockID,
          Block.planks.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          4,
          5,
          1,
          9,
          5,
          2,
          Block.planks.blockID,
          Block.planks.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          4,
          5,
          12,
          9,
          5,
          13,
          Block.planks.blockID,
          Block.planks.blockID,
          false);
      placeBlockAtCurrentPosition(
          par1World, Block.planks.blockID, 0, 9, 5, 11, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.planks.blockID, 0, 8, 5, 11, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.planks.blockID, 0, 9, 5, 10, par3StructureBoundingBox);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          3,
          6,
          2,
          3,
          6,
          12,
          Block.fence.blockID,
          Block.fence.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          10,
          6,
          2,
          10,
          6,
          10,
          Block.fence.blockID,
          Block.fence.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          4,
          6,
          2,
          9,
          6,
          2,
          Block.fence.blockID,
          Block.fence.blockID,
          false);
      fillWithBlocks(
          par1World,
          par3StructureBoundingBox,
          4,
          6,
          12,
          8,
          6,
          12,
          Block.fence.blockID,
          Block.fence.blockID,
          false);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, 9, 6, 11, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, 8, 6, 11, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, 9, 6, 10, par3StructureBoundingBox);
      int k = getMetadataWithOffset(Block.ladder.blockID, 3);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 1, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 2, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 3, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 4, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 5, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 6, 13, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.ladder.blockID, k, 10, 7, 13, par3StructureBoundingBox);
      byte byte1 = 7;
      byte byte2 = 7;
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 1, 9, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1, 9, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 1, 8, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1, 8, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 1, 7, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1, 7, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 2, 7, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 + 1, 7, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 1, 7, byte2 - 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1 - 1, 7, byte2 + 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1, 7, byte2 - 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.fence.blockID, 0, byte1, 7, byte2 + 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1 - 2, 8, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1 + 1, 8, byte2, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1 - 1, 8, byte2 - 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1 - 1, 8, byte2 + 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1, 8, byte2 - 1, par3StructureBoundingBox);
      placeBlockAtCurrentPosition(
          par1World, Block.torchWood.blockID, 0, byte1, 8, byte2 + 1, par3StructureBoundingBox);
    }

    createTreasureChestAtCurrentPosition(
        par1World,
        par3StructureBoundingBox,
        par2Random,
        3,
        3,
        5,
        field_35056_b,
        1 + par2Random.nextInt(4));

    if (isLargeRoom) {
      placeBlockAtCurrentPosition(par1World, 0, 0, 12, 9, 1, par3StructureBoundingBox);
      createTreasureChestAtCurrentPosition(
          par1World,
          par3StructureBoundingBox,
          par2Random,
          12,
          8,
          1,
          field_35056_b,
          1 + par2Random.nextInt(4));
    }

    return true;
  }