Advertisement
Guest User

Untitled

a guest
Jun 11th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.72 KB | None | 0 0
  1.     @Override
  2.     public boolean unloadQueuedChunks() {
  3.         // NOTE: the return value is completely ignored
  4.         if (this.worldServer.getDisableLevelSaving()) {
  5.             return false;
  6.         }
  7.  
  8.         final int maxColumnsToUnload = 100;
  9.         final int maxCubesToUnload = 100*16;
  10.  
  11.         // unload cubes
  12.         for (int i = 0; i < maxCubesToUnload && !this.cubesToUnload.isEmpty(); i++) {
  13.             long cubeAddress = this.cubesToUnload.poll();
  14.             long columnAddress = cubeToColumn(cubeAddress);
  15.  
  16.             // get the cube
  17.             Column column = this.loadedColumns.get(columnAddress);
  18.             if (column == null) {
  19.                 // already unloaded
  20.                 continue;
  21.             }
  22.  
  23.             // unload the cube
  24.             int cubeY = getY(cubeAddress);
  25.             unloadAndSaveCube(column, cubeY);
  26.  
  27.             // unload column if it's empty or contains only force-loaded cubes
  28.             boolean canUnload = true;
  29.             for (Cube cube : column.getAllCubes()) {
  30.                 if (canQueueUnloadColumnForCube(cube)) {
  31.                     canUnload = false;
  32.                     break;
  33.                 }
  34.             }
  35.             if (canUnload) {
  36.                 //breaks here
  37.                 for (Cube cube : column.getAllCubes()) {
  38.                     unloadAndSaveCube(column, cube.getY());
  39.                 }
  40.                 assert column.getAllCubes().isEmpty();
  41.                 this.columnsToUnload.add(column.getChunkCoordIntPair());
  42.             }
  43.         }
  44.  
  45.         Set<ChunkPos> toReadd = new HashSet<>();
  46.         for (int i = 0; i < maxColumnsToUnload && !columnsToUnload.isEmpty(); ) {
  47.             ChunkPos pos = columnsToUnload.poll();
  48.             Column column = this.getColumn(pos.chunkXPos, pos.chunkZPos);
  49.             if (column == null) {
  50.                 continue;
  51.             }
  52.             if (!column.getAllCubes().isEmpty()) {
  53.                 toReadd.add(pos);
  54.                 continue;
  55.             }
  56.             i++;
  57.             column.onChunkUnload();
  58.             this.loadedColumns.remove(column.getAddress());
  59.             this.cubeIO.saveColumn(column);
  60.         }
  61.         columnsToUnload.addAll(toReadd);
  62.         return false;
  63.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement