diff --git a/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java index 69f815fb1..f10ff67c7 100644 --- a/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java +++ b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java @@ -92,7 +92,7 @@ public class MantleJigsawComponent extends IrisMantleComponent { KSet cachedRegions, KMap> cache, KMap distanceCache) { for (IrisJigsawStructurePlacement i : structures) { if (rng.nextInt(i.getRarity()) == 0) { - if (checkDistances(i.collectDistances(), x, z, cachedRegions, cache, distanceCache)) + if (checkMinDistances(i.collectMinDistances(), x, z, cachedRegions, cache, distanceCache)) continue; IrisPosition position = new IrisPosition((x << 4) + rng.nextInt(15), 0, (z << 4) + rng.nextInt(15)); IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(i.getStructure()); @@ -104,9 +104,9 @@ public class MantleJigsawComponent extends IrisMantleComponent { } @ChunkCoordinates - private boolean checkDistances(KMap distances, int x, int z, KSet cachedRegions, KMap> cache, KMap distanceCache) { + private boolean checkMinDistances(KMap minDistances, int x, int z, KSet cachedRegions, KMap> cache, KMap distanceCache) { int range = 0; - for (int d : distances.values()) + for (int d : minDistances.values()) range = Math.max(range, d); for (int xx = -range; xx <= range; xx++) { @@ -122,9 +122,9 @@ public class MantleJigsawComponent extends IrisMantleComponent { } } Position2 pos = new Position2(x, z); - for (String structure : distances.keySet()) { + for (String structure : minDistances.keySet()) { if (!cache.containsKey(structure)) continue; - double minDist = distances.get(structure); + double minDist = minDistances.get(structure); minDist = minDist * minDist; for (Position2 sPos : cache.get(structure)) { double dist = distanceCache.computeIfAbsent(sPos, position2 -> position2.distance(pos)); diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawDistance.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawMinDistance.java similarity index 85% rename from core/src/main/java/com/volmit/iris/engine/object/IrisJigsawDistance.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawMinDistance.java index 17cbda4c2..818f4b3dd 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawDistance.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawMinDistance.java @@ -1,7 +1,6 @@ package com.volmit.iris.engine.object; import com.volmit.iris.engine.object.annotations.Desc; -import com.volmit.iris.engine.object.annotations.MaxNumber; import com.volmit.iris.engine.object.annotations.MinNumber; import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.Required; @@ -11,13 +10,13 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -@Snippet("jigsaw-structure-distance") +@Snippet("jigsaw-structure-min-distance") @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor @Desc("Represents the min distance between jigsaw structure placements") @Data -public class IrisJigsawDistance { +public class IrisJigsawMinDistance { @Required @RegistryListResource(IrisJigsawStructure.class) @Desc("The structure to check against") @@ -25,7 +24,6 @@ public class IrisJigsawDistance { @Required @MinNumber(0) - @MaxNumber(5000) @Desc("The min distance in blocks to a placed structure\nWARNING: The performance impact scales exponentially!") private int distance; } diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java index 2bb6faa70..16eea76e8 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java @@ -49,13 +49,13 @@ public class IrisJigsawStructurePlacement { @Desc("The 1 in X chance rarity") private int rarity = 100; - @ArrayType(type = IrisJigsawDistance.class) - @Desc("List of distances to check for") - private KList distances = new KList<>(); + @ArrayType(type = IrisJigsawMinDistance.class) + @Desc("List of minimum distances to check for") + private KList minDistances = new KList<>(); - public KMap collectDistances() { + public KMap collectMinDistances() { KMap map = new KMap<>(); - for (IrisJigsawDistance d : distances) { + for (IrisJigsawMinDistance d : minDistances) { map.compute(d.getStructure(), (k, v) -> v != null ? Math.min(toChunks(d.getDistance()), v) : toChunks(d.getDistance())); } return map;