Exemplo n.º 1
0
  private void createOrLoadChunk(Vector3i chunkPos) {
    Chunk chunk = nearCache.get(chunkPos);
    if (chunk == null && !preparingChunks.contains(chunkPos)) {
      preparingChunks.add(chunkPos);
      pipeline.doTask(
          new AbstractChunkTask(chunkPos) {
            @Override
            public String getName() {
              return "Create or Load Chunk";
            }

            @Override
            public void run() {
              ChunkStore chunkStore = storageManager.loadChunkStore(getPosition());
              Chunk chunk;
              if (chunkStore == null) {
                chunk = new ChunkImpl(getPosition());
                generator.createChunk(chunk);
              } else {
                chunk = chunkStore.getChunk();
              }

              InternalLightProcessor.generateInternalLighting(chunk);
              chunk.deflate();
              readyChunks.offer(
                  new ReadyChunkInfo(chunk, createBatchBlockEventMappings(chunk), chunkStore));
            }
          });
    }
  }