From 0e57870ba9e667fc1ba2caa1715f95f70c002da9 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 4 Oct 2023 07:41:36 -0500 Subject: [PATCH] Fix world gen not allowing down sampling --- .../GeneratedFullDataFileHandler.java | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java index e1586ef07..282648c28 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java @@ -342,16 +342,48 @@ public class GeneratedFullDataFileHandler extends FullDataFileHandler // world gen has already been checked for this file return; } - metaFile.genQueueChecked = true; + + + if (dataSource instanceof IIncompleteFullDataSource) + { + this.incompleteDataSources.put(metaFile.pos, (IIncompleteFullDataSource)dataSource); + } + byte minGeneratorSectionDetailLevel = (byte) (worldGenQueue.highestDataDetail() + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); ArrayList genPosList = MissingWorldGenPositionFinder.getUngeneratedPosList(dataSource, minGeneratorSectionDetailLevel, true); + ArrayList> taskFutureList = new ArrayList<>(); for (DhSectionPos genPos : genPosList) { + this.getLoadOrMakeFile(genPos, true); + this.getLoadOrMakeFile(metaFile.pos, true); + + GenTask genTask = new GenTask(dataSource.getSectionPos(), new WeakReference<>(dataSource)); - worldGenQueue.submitGenTask(genPos, dataSource.getSectionPos().getDetailLevel(), genTask); + CompletableFuture worldGenFuture = worldGenQueue.submitGenTask(genPos, dataSource.getDataDetailLevel(), genTask); + worldGenFuture.whenComplete((genTaskResult, ex) -> + { + this.onWorldGenTaskComplete(genTaskResult, ex, genTask, genPos); + this.onWorldGenTaskComplete(genTaskResult, ex, genTask, metaFile.pos); + }); + + taskFutureList.add(worldGenFuture); } + + + if (taskFutureList.size() != 0) + { + metaFile.genQueueChecked = true; + } + + + CompletableFuture.allOf(taskFutureList.toArray(new CompletableFuture[0])) + .whenComplete((voidObj, ex) -> + { + metaFile.flushAndSaveAsync(); + this.incompleteDataSources.remove(metaFile.pos); + }); }