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);
     }
   }
 }