diff --git a/__pycache__/random.cpython-311.pyc b/__pycache__/random.cpython-311.pyc deleted file mode 100644 index f218e7f..0000000 Binary files a/__pycache__/random.cpython-311.pyc and /dev/null differ diff --git a/src/main/java/net/pixaurora/janerator/worldgen/GeneratorLookup.java b/src/main/java/net/pixaurora/janerator/worldgen/GeneratorLookup.java index a96b011..6baf152 100644 --- a/src/main/java/net/pixaurora/janerator/worldgen/GeneratorLookup.java +++ b/src/main/java/net/pixaurora/janerator/worldgen/GeneratorLookup.java @@ -1,6 +1,10 @@ package net.pixaurora.janerator.worldgen; +import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; import net.minecraft.world.level.chunk.ChunkGenerator; import net.pixaurora.janerator.graphing.Coordinate; @@ -9,7 +13,7 @@ public class GeneratorLookup { private List 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