From 5174c713639c2e71abe5f0a641149c0f6f4bc258 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 23 Feb 2023 19:27:29 -0600 Subject: [PATCH] Downgrade to Java 8 --- .../core/api/external/methods/data/DhApiTerrainDataRepo.java | 4 ++-- .../fullData/sources/SingleChunkFullDataSource.java | 4 +++- .../dataObjects/fullData/sources/SparseFullDataSource.java | 3 ++- .../core/dataObjects/render/columnViews/IColumnDataView.java | 2 +- .../lod/core/file/fullDatafile/FullDataFileHandler.java | 2 +- .../core/file/fullDatafile/GeneratedFullDataFileHandler.java | 2 +- .../lod/core/file/structure/ClientOnlySaveStructure.java | 3 ++- .../com/seibel/lod/core/generation/WorldGenerationQueue.java | 5 +++-- 8 files changed, 15 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/com/seibel/lod/core/api/external/methods/data/DhApiTerrainDataRepo.java b/core/src/main/java/com/seibel/lod/core/api/external/methods/data/DhApiTerrainDataRepo.java index 8410aa6ca..29bcaa991 100644 --- a/core/src/main/java/com/seibel/lod/core/api/external/methods/data/DhApiTerrainDataRepo.java +++ b/core/src/main/java/com/seibel/lod/core/api/external/methods/data/DhApiTerrainDataRepo.java @@ -137,9 +137,9 @@ public class DhApiTerrainDataRepo implements IDhApiTerrainDataRepo int dataColumnsReturned = 0; // get each column over the area - for (var x = 0; x < widthOfAreaInBlocks; x++) + for (int x = 0; x < widthOfAreaInBlocks; x++) { - for (var z = 0; z < widthOfAreaInBlocks; z++) + for (int z = 0; z < widthOfAreaInBlocks; z++) { DhLodPos blockColumnPos = new DhLodPos(LodUtil.BLOCK_DETAIL_LEVEL, startingBlockPos.x + x, startingBlockPos.z + z); DhApiResult result = getTerrainDataColumnArray(levelWrapper, blockColumnPos, null); diff --git a/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SingleChunkFullDataSource.java b/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SingleChunkFullDataSource.java index 425692df2..cb1187e30 100644 --- a/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SingleChunkFullDataSource.java +++ b/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SingleChunkFullDataSource.java @@ -154,7 +154,9 @@ public class SingleChunkFullDataSource extends FullArrayView implements IIncompl throw new IOException(LodUtil.formatLog("Spotty Flag BitSet size outside reasonable range: {} (expects {} to {})", length, 1, SECTION_SIZE * SECTION_SIZE / 8 + 63)); } - byte[] bytes = dos.readNBytes(length); + + byte[] bytes = new byte[length]; + dos.readFully(bytes, 0, length); BitSet isColumnNotEmpty = BitSet.valueOf(bytes); // Data array content diff --git a/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SparseFullDataSource.java b/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SparseFullDataSource.java index d584095f1..95846ecf3 100644 --- a/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SparseFullDataSource.java +++ b/core/src/main/java/com/seibel/lod/core/dataObjects/fullData/sources/SparseFullDataSource.java @@ -364,7 +364,8 @@ public class SparseFullDataSource implements IIncompleteFullDataSource } // read in the presence of each data column - byte[] bytes = inputStream.readNBytes(numberOfDataColumns); + byte[] bytes = new byte[numberOfDataColumns]; + inputStream.readFully(bytes, 0, numberOfDataColumns); BitSet dataArrayIndexHasData = BitSet.valueOf(bytes); diff --git a/core/src/main/java/com/seibel/lod/core/dataObjects/render/columnViews/IColumnDataView.java b/core/src/main/java/com/seibel/lod/core/dataObjects/render/columnViews/IColumnDataView.java index 41642874c..93dfca35f 100644 --- a/core/src/main/java/com/seibel/lod/core/dataObjects/render/columnViews/IColumnDataView.java +++ b/core/src/main/java/com/seibel/lod/core/dataObjects/render/columnViews/IColumnDataView.java @@ -10,7 +10,7 @@ public interface IColumnDataView default Iterator iterator() { - return new Iterator<>() + return new Iterator() { private int index = 0; private final int size = size(); diff --git a/core/src/main/java/com/seibel/lod/core/file/fullDatafile/FullDataFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/fullDatafile/FullDataFileHandler.java index bb25fba42..3c988e41c 100644 --- a/core/src/main/java/com/seibel/lod/core/file/fullDatafile/FullDataFileHandler.java +++ b/core/src/main/java/com/seibel/lod/core/file/fullDatafile/FullDataFileHandler.java @@ -375,7 +375,7 @@ public class FullDataFileHandler implements IFullDataSourceProvider }) ); } - return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)) + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) .thenApply((v) -> dataSource.trySelfPromote()); } diff --git a/core/src/main/java/com/seibel/lod/core/file/fullDatafile/GeneratedFullDataFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/fullDatafile/GeneratedFullDataFileHandler.java index 883861ebe..8017dc8b3 100644 --- a/core/src/main/java/com/seibel/lod/core/file/fullDatafile/GeneratedFullDataFileHandler.java +++ b/core/src/main/java/com/seibel/lod/core/file/fullDatafile/GeneratedFullDataFileHandler.java @@ -110,7 +110,7 @@ public class GeneratedFullDataFileHandler extends FullDataFileHandler }) ); } - return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)) + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) .thenApply((voidValue) -> dataSource.trySelfPromote()); } } diff --git a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java index 1b1c93664..159b81433 100644 --- a/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java +++ b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java @@ -13,6 +13,7 @@ import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper; import javax.annotation.Nullable; import java.io.File; import java.util.*; +import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -122,7 +123,7 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure } ).sorted(); - return fileStream.toList(); + return fileStream.collect(Collectors.toList()); } @Override diff --git a/core/src/main/java/com/seibel/lod/core/generation/WorldGenerationQueue.java b/core/src/main/java/com/seibel/lod/core/generation/WorldGenerationQueue.java index a25c52009..1d54c1a8f 100644 --- a/core/src/main/java/com/seibel/lod/core/generation/WorldGenerationQueue.java +++ b/core/src/main/java/com/seibel/lod/core/generation/WorldGenerationQueue.java @@ -610,7 +610,7 @@ public class WorldGenerationQueue implements Closeable return null; })); }); - this.generatorClosingFuture = CompletableFuture.allOf(array.toArray(CompletableFuture[]::new)); //FIXME: Closer threading issues with runCurrentGenTasksUntilBusy + this.generatorClosingFuture = CompletableFuture.allOf(array.toArray(new CompletableFuture[0])); //FIXME: Closer threading issues with runCurrentGenTasksUntilBusy this.looseWoldGenTasks.forEach(t -> t.future.complete(false)); this.looseWoldGenTasks.clear(); return this.generatorClosingFuture; @@ -627,7 +627,8 @@ public class WorldGenerationQueue implements Closeable try { - this.generatorClosingFuture.orTimeout(SHUTDOWN_TIMEOUT_SEC, TimeUnit.SECONDS).join(); + // this will throw a timeout exception if the generator doesn't return soon enough + this.generatorClosingFuture.get(SHUTDOWN_TIMEOUT_SEC, TimeUnit.SECONDS); } catch (Throwable e) {