From 633ab3f106ae084bc951c88907d936f267ff4f69 Mon Sep 17 00:00:00 2001 From: Pixirora Date: Tue, 29 Aug 2023 23:45:24 -0400 Subject: [PATCH] clean up worldgen code & allow access of selection by generator accessing a selection by generator will allow a generator to directly access its own selection, allowing for generators that are compliant with multi-generation so that less overhead is present --- __pycache__/random.cpython-311.pyc | Bin 387 -> 0 bytes .../janerator/worldgen/GeneratorLookup.java | 22 ++++++++++++++---- .../worldgen/PlacementSelection.java | 19 ++++++++------- .../worldgen/generator/MultiGenerator.java | 4 +++- 4 files changed, 30 insertions(+), 15 deletions(-) delete mode 100644 __pycache__/random.cpython-311.pyc diff --git a/__pycache__/random.cpython-311.pyc b/__pycache__/random.cpython-311.pyc deleted file mode 100644 index f218e7f61d80b2bcd237662d147eeaf73cfb024f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmZWl!AiqG5S>le8ms*U%|V1yQYz5H*7Ybo+|Vo`Ue&1rJqv4 zQ=lh*Adp*6&W5HJXPGziX6MZ;``PdJ0PW^{#UC;LTGATXCG`m=bKo$8C*WiRz7w@Q zHg?bt(d!3 generatorMap; - private List selections; + private Map selections; private ChunkGenerator fallbackGenerator; public GeneratorLookup( @@ -21,8 +25,8 @@ public GeneratorLookup( .stream() .distinct() .map(generator -> new PlacementSelection(generator, GraphingUtils.getIndices(this.generatorMap, generator))) - .toList(); - this.fallbackGenerator = this.selections + .collect(Collectors.toMap(PlacementSelection::getUsedGenerator, Function.identity())); + this.fallbackGenerator = this.getAllSelections() .stream() .max((selection1, selection2) -> selection1.size() - selection2.size()) .get().getUsedGenerator(); @@ -36,8 +40,16 @@ public ChunkGenerator getAt(Coordinate coordinate) { return this.generatorMap.get(coordinate.toListIndex()); } - public List getAllSelections() { - return this.selections; + public Collection getAllSelections() { + return this.selections.values(); + } + + public PlacementSelection getSelection(ChunkGenerator generator) { + if (! this.selections.containsKey(generator)) { + throw new RuntimeException("No selection found associated with this generator."); + } + + return this.selections.get(generator); } public ChunkGenerator getDefault() { diff --git a/src/main/java/net/pixaurora/janerator/worldgen/PlacementSelection.java b/src/main/java/net/pixaurora/janerator/worldgen/PlacementSelection.java index d8f2dfb..add0234 100644 --- a/src/main/java/net/pixaurora/janerator/worldgen/PlacementSelection.java +++ b/src/main/java/net/pixaurora/janerator/worldgen/PlacementSelection.java @@ -7,26 +7,27 @@ public class PlacementSelection { private ChunkGenerator generator; - private List placements; + private List placements; public PlacementSelection(ChunkGenerator generator, List placements) { this.generator = generator; - this.placements = placements - .stream() - .map(Coordinate::toListIndex) - .toList(); + this.placements = placements; } - public boolean contains(int x, int z) { - return this.placements.contains( - new Coordinate(x, z).toListIndex() - ); + public List getPlacements() { + return this.placements; } public ChunkGenerator getUsedGenerator() { return this.generator; } + public boolean contains(int x, int z) { + return this.placements.contains( + new Coordinate(x, z) + ); + } + public int size() { return this.placements.size(); } diff --git a/src/main/java/net/pixaurora/janerator/worldgen/generator/MultiGenerator.java b/src/main/java/net/pixaurora/janerator/worldgen/generator/MultiGenerator.java index ebffd80..0bbd4df 100644 --- a/src/main/java/net/pixaurora/janerator/worldgen/generator/MultiGenerator.java +++ b/src/main/java/net/pixaurora/janerator/worldgen/generator/MultiGenerator.java @@ -191,7 +191,9 @@ public CompletableFuture createBiomes( ); return chunk; - }); + }, + executor + ); } @Override