public static void populateSmallRoom( LargeStructureWorld world, Random rand, int x, int y, int z) { SmallRoom design = smallRoomList.getRandomItem(rand).getObject(); switch (design) { case FLOWER_POTS: world.setBlock( x, y + 1, z, BlockList.death_flower_pot, rand.nextInt(4) == 0 ? 15 : rand.nextInt(15)); for (int extra = rand.nextInt(2 + rand.nextInt(5)), xx, zz; extra > 0; extra--) { xx = x + rand.nextInt(3) - rand.nextInt(3); zz = z + rand.nextInt(3) - rand.nextInt(3); if (world.isAir(xx, y + 1, zz)) { if (rand.nextInt(5) != 0) { boolean adj = false; for (int dir = 0; dir < 4; dir++) { if (world.getBlock(xx + Direction.offsetX[dir], y + 1, zz + Direction.offsetZ[dir]) == BlockList.death_flower_pot) { adj = true; break; } } if (adj) continue; } world.setBlock( xx, y + 1, zz, BlockList.death_flower_pot, rand.nextInt(4) == 0 ? 15 : rand.nextInt(15)); } } break; case CLUSTER: world.setBlock(x, y + 1, z, BlockList.laboratory_floor); world.setBlock(x, y + 2, z, BlockList.energy_cluster); for (int a = 0; a < 3; a++) { for (int b = 0; b < 2; b++) { if (world.getBlock(x - 4 + 8 * b, y + 2, z - 1 + a) == BlockList.laboratory_glass) world.setBlock(x - 4 + 8 * b, y + 2, z - 1 + a, BlockList.laboratory_obsidian); if (world.getBlock(x - 1 + a, y + 2, z - 4 + 8 * b) == BlockList.laboratory_glass) world.setBlock(x - 1 + a, y + 2, z - 4 + 8 * b, BlockList.laboratory_obsidian); } } break; case ENDER_CHEST: world.setBlock(x, y + 1, z, Blocks.ender_chest, rand.nextInt(4)); break; case LOOT_CHEST: world.setBlock(x, y + 1, z, Blocks.chest, rand.nextInt(4)); world.setTileEntityGenerator( x, y + 1, z, "LabSmallChest", new ITileEntityGenerator() { @Override public void onTileEntityRequested(String key, TileEntity tile, Random rand) { TileEntityChest chest = (TileEntityChest) tile; for (int a = 0; a < 3 + rand.nextInt(8 - rand.nextInt(3)); a++) { chest.setInventorySlotContents( rand.nextInt(chest.getSizeInventory()), smallChestLoot.generateIS(rand)); } } }); Block floorDecoration = rand.nextInt(11) == 0 ? Blocks.lapis_block : BlockList.laboratory_obsidian; for (int a = 0; a < 2; a++) { for (int b = 0; b < 2; b++) { world.setBlock(x - 1 + 2 * a, y, z - 2 + 4 * b, floorDecoration); world.setBlock(x - 2 + 4 * a, y, z - 1 + 2 * b, floorDecoration); } } break; case FLOOR_DESIGN: switch (rand.nextInt(3)) { case 0: world.setBlock(x, y, z, BlockList.laboratory_obsidian); for (int a = 0; a < 3; a++) { for (int b = 0; b < 2; b++) { world.setBlock(x - 2 + 4 * b, y, z - 1 + a, BlockList.laboratory_obsidian); world.setBlock(x - 1 + a, y, z - 2 + 4 * b, BlockList.laboratory_obsidian); } } break; case 1: for (int a = 0; a < 2; a++) { for (int b = 0; b < 2; b++) { world.setBlock(x - 1 + 2 * a, y, z - 2 + 4 * b, BlockList.laboratory_obsidian); world.setBlock(x - 2 + 4 * a, y, z - 1 + 2 * b, BlockList.laboratory_obsidian); } } break; case 2: world.setBlock(x, y, z, BlockList.laboratory_obsidian); for (int a = 0; a < 2; a++) { world.setBlock(x - 2 + 4 * a, y, z, BlockList.laboratory_obsidian); world.setBlock(x, y, z - 2 + 4 * a, BlockList.laboratory_obsidian); } break; } break; default: } }
public static void populateLargeRoom( LargeStructureWorld world, Random rand, int x, int y, int z) { LargeRoom design = largeRoomList.getRandomItem(rand).getObject(); switch (design) { case ENCASED_ENDIUM: world.setBlock(x, y + 2, z, BlockList.endium_block); for (int py = 0; py < 3; py++) { for (int px = 0; px < 3; px++) { for (int pz = 0; pz < 3; pz++) { if (world.isAir(x - 1 + px, y + 1 + py, z - 1 + pz)) world.setBlock(x - 1 + px, y + 1 + py, z - 1 + pz, BlockList.laboratory_glass); } } } break; case LOOT_CHESTS: for (int attempt = 0, placed = 0, dir; attempt < 30 && placed < 4; attempt++) { dir = rand.nextInt(4); if (world.isAir(x + Direction.offsetX[dir] * 4, y + 1, z + Direction.offsetZ[dir] * 4) && !world.isAir( x + Direction.offsetX[dir] * 5, y + 1, z + Direction.offsetZ[dir] * 5)) { world.setBlock( x + Direction.offsetX[dir] * 4, y + 1, z + Direction.offsetZ[dir] * 4, Blocks.chest, dir); world.setTileEntityGenerator( x + Direction.offsetX[dir] * 4, y + 1, z + Direction.offsetZ[dir] * 4, "LabLargeChest", new ITileEntityGenerator() { @Override public void onTileEntityRequested(String key, TileEntity tile, Random rand) { TileEntityChest chest = (TileEntityChest) tile; for (int a = 0; a < 3 + rand.nextInt(6 + rand.nextInt(3)); a++) { chest.setInventorySlotContents( rand.nextInt(chest.getSizeInventory()), largeChestLoot.generateIS(rand)); } } }); for (int a = 0; a < 3; a++) { world.setBlock( x + Direction.offsetX[dir] * 5 + Direction.offsetZ[dir] * (a - 1), y + 2, z + Direction.offsetZ[dir] * 5 + Direction.offsetX[dir] * (a - 1), BlockList.laboratory_obsidian); } ++placed; } if (placed > 0 && rand.nextInt(5) == 0) break; else if (placed > 1 && rand.nextInt(4) == 0) break; } break; case SPHALERITE_IRON_BLOCK: world.setBlock(x, y + 1, z, BlockList.laboratory_obsidian); world.setBlock(x, y + 2, z, Blocks.iron_block); world.setBlock(x, y + 3, z, BlockList.laboratory_obsidian); for (int a = 0; a < 4; a++) { world.setBlock( x + Direction.offsetX[a], y + 1, z + Direction.offsetZ[a], BlockList.sphalerite); world.setBlock( x + Direction.offsetX[a], y + 2, z + Direction.offsetZ[a], BlockList.laboratory_obsidian); world.setBlock( x + Direction.offsetX[a], y + 3, z + Direction.offsetZ[a], BlockList.sphalerite); } for (int a = 0; a < 2; a++) { for (int b = 0; b < 2; b++) { world.setBlock(x - 1 + 2 * a, y + 1, z - 1 + 2 * b, BlockList.laboratory_obsidian); world.setBlock(x - 1 + 2 * a, y + 2, z - 1 + 2 * b, BlockList.sphalerite); world.setBlock(x - 1 + 2 * a, y + 3, z - 1 + 2 * b, BlockList.laboratory_obsidian); } } break; default: } }