public static void checkForElevators(World world, ChunkPosition pos, int numSolid) { if (checkedBlocks.contains(pos)) { return; } checkedBlocks.add(pos); boolean isCeiling = false; if (world.getBlockId(pos.x, pos.y, pos.z) == DECore.Elevator.blockID) { if (!BlockElevator.isCeiling(world, pos)) { elvs.add(pos); return; } else { isCeiling = true; } } if (isCeiling || DECore.isBlockOpeningMaterial(world, pos)) { if (pos.y > 0 && !DECore.isBlockLedgeMaterial(world, pos.x, pos.y - 1, pos.z)) { checkForElevators(world, new ChunkPosition(pos.x, pos.y - 1, pos.z), numSolid); } if (pos.y < DECore.max_elevator_Y && !DECore.isBlockLedgeMaterial(world, pos.x, pos.y + 1, pos.z)) { checkForElevators(world, new ChunkPosition(pos.x, pos.y + 1, pos.z), numSolid); } } else { numSolid++; if (numSolid > 2) { return; } for (int iter = 0; iter < 4; iter++) { int tempX = pos.x; int tempZ = pos.z; if (iter == 0) { tempZ--; } else if (iter == 1) { tempZ++; } else if (iter == 2) { tempX--; } else if (iter == 3) { tempX++; } ChunkPosition curPos = new ChunkPosition(tempX, pos.y, tempZ); checkForElevators(world, curPos, numSolid); } } }