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