private void generateMineWESupport(ByteChunk chunk, int x, int y, int z) { // on a bridge if (chunk.getBlock(x, y - 1, z) == shaftBridgeId && chunk.getBlock(x, y - 1, z + 3) == shaftBridgeId) { // place supports generateMineSupport(chunk, x, y - 1, z); generateMineSupport(chunk, x, y - 1, z + 3); // in a tunnel } else { chunk.setBlock(x, y, z, shaftSupportId); chunk.setBlock(x, y + 1, z, shaftSupportId); chunk.setBlock(x, y, z + 3, shaftSupportId); chunk.setBlock(x, y + 1, z + 3, shaftSupportId); chunk.setBlocks(x, x + 1, y + 2, z, z + 4, shaftBeamId); } }
private void generateVerticalMineLevel(WorldGenerator generator, RealChunk chunk, int y) { int y1 = y + 6; boolean stairsFound = false; // going down? if (isShaftableLevel(generator, y - 16)) { if (generator.shapeProvider.isHorizontalNSShaft(chunk.chunkX, y, chunk.chunkZ) && generator.shapeProvider.isHorizontalNSShaft(chunk.chunkX, y - 16, chunk.chunkZ)) { // draw the going down bit placeMineStairBase(chunk, 10, y1, 15); placeMineStairStep(chunk, 10, y1, 14, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 1, 13, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 2, 12, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 3, 11, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 4, 10, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 5, 9, Stair.SOUTH, Stair.NORTHFLIP); placeMineStairStep(chunk, 10, y1 - 6, 8, Stair.SOUTH, Stair.NORTHFLIP); stairsFound = true; } if (!stairsFound && generator.shapeProvider.isHorizontalWEShaft(chunk.chunkX, y, chunk.chunkZ) && generator.shapeProvider.isHorizontalWEShaft(chunk.chunkX, y - 16, chunk.chunkZ)) { // draw the going down bit placeMineStairBase(chunk, 15, y1, 10); placeMineStairStep(chunk, 14, y1, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 13, y1 - 1, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 12, y1 - 2, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 11, y1 - 3, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 10, y1 - 4, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 9, y1 - 5, 10, Stair.EAST, Stair.WESTFLIP); placeMineStairStep(chunk, 8, y1 - 6, 10, Stair.EAST, Stair.WESTFLIP); } } // reset the stairs flag stairsFound = false; // going up? if (isShaftableLevel(generator, y + 32)) { if (generator.shapeProvider.isHorizontalNSShaft(chunk.chunkX, y, chunk.chunkZ) && generator.shapeProvider.isHorizontalNSShaft(chunk.chunkX, y + 16, chunk.chunkZ)) { // draw the going up bit placeMineStairBase(chunk, 5, y1, 15); placeMineStairStep(chunk, 5, y1 + 1, 14, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 2, 13, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 3, 12, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 4, 11, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 5, 10, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 6, 9, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 7, 8, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairStep(chunk, 5, y1 + 8, 7, Stair.NORTH, Stair.SOUTHFLIP); placeMineStairBase(chunk, 5, y1 + 8, 6); placeMineStairBase(chunk, 6, y1 + 8, 6); placeMineStairBase(chunk, 7, y1 + 8, 6); placeMineStairBase(chunk, 8, y1 + 8, 6); placeMineStairBase(chunk, 9, y1 + 8, 6); placeMineStairBase(chunk, 10, y1 + 8, 6); placeMineStairStep(chunk, 10, y1 + 9, 7, Stair.SOUTH, Stair.NORTHFLIP); generateMineSupport(chunk, 6, y1 + 7, 7); generateMineSupport(chunk, 9, y1 + 7, 7); stairsFound = true; } if (!stairsFound && generator.shapeProvider.isHorizontalWEShaft(chunk.chunkX, y, chunk.chunkZ) && generator.shapeProvider.isHorizontalWEShaft(chunk.chunkX, y + 16, chunk.chunkZ)) { // draw the going up bit placeMineStairBase(chunk, 15, y1, 5); placeMineStairStep(chunk, 14, y1 + 1, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 13, y1 + 2, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 12, y1 + 3, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 11, y1 + 4, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 10, y1 + 5, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 9, y1 + 6, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 8, y1 + 7, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairStep(chunk, 7, y1 + 8, 5, Stair.WEST, Stair.EASTFLIP); placeMineStairBase(chunk, 6, y1 + 8, 5); placeMineStairBase(chunk, 6, y1 + 8, 6); placeMineStairBase(chunk, 6, y1 + 8, 7); placeMineStairBase(chunk, 6, y1 + 8, 8); placeMineStairBase(chunk, 6, y1 + 8, 9); placeMineStairBase(chunk, 6, y1 + 8, 10); placeMineStairStep(chunk, 7, y1 + 9, 10, Stair.EAST, Stair.WESTFLIP); generateMineSupport(chunk, 7, y1 + 7, 6); generateMineSupport(chunk, 7, y1 + 7, 9); } } // make the ceiling pretty boolean pathFound = false; if (generator.shapeProvider.isHorizontalNSShaft(chunk.chunkX, y, chunk.chunkZ)) { generateMineCeiling(chunk, 6, 10, y1 + 3, 0, 6); generateMineCeiling(chunk, 6, 10, y1 + 3, 10, 16); generateMineAlcove(generator, chunk, 4, y1, 2, 4, 2); generateMineAlcove(generator, chunk, 10, y1, 2, 11, 3); pathFound = true; } if (generator.shapeProvider.isHorizontalWEShaft(chunk.chunkX, y, chunk.chunkZ)) { generateMineCeiling(chunk, 0, 6, y1 + 3, 6, 10); generateMineCeiling(chunk, 10, 16, y1 + 3, 6, 10); generateMineAlcove(generator, chunk, 2, y1, 4, 2, 4); generateMineAlcove(generator, chunk, 2, y1, 10, 3, 11); pathFound = true; } // draw the center bit if (pathFound) generateMineCeiling(chunk, 6, 10, y1 + 3, 6, 10); }