@Override public void run() { ChunkMesh[] newMeshes = new ChunkMesh[WorldRendererLwjgl.VERTICAL_SEGMENTS]; ChunkView chunkView = worldProvider.getLocalView(c.getPos()); if (chunkView != null) { c.setDirty(false); for (int seg = 0; seg < WorldRendererLwjgl.VERTICAL_SEGMENTS; seg++) { int meshHeight = ChunkConstants.SIZE_Y / WorldRendererLwjgl.VERTICAL_SEGMENTS; newMeshes[seg] = tessellator.generateMesh( chunkView, c.getPos(), meshHeight, seg * (ChunkConstants.SIZE_Y / WorldRendererLwjgl.VERTICAL_SEGMENTS)); } c.setPendingMesh(newMeshes); ChunkMonitor.fireChunkTessellated(c.getPos(), newMeshes); } chunkUpdateManager.finishedProcessing(c); // Clean these up because the task executor holds the object in memory. c = null; tessellator = null; worldProvider = null; }