From 09a0f830137bf67628c8b0264c1ef6653ae02729 Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Sat, 11 May 2024 12:51:29 +0200 Subject: [PATCH] add terminating pool overwrite --- .../java/com/volmit/iris/engine/jigsaw/PlannedPiece.java | 2 +- .../com/volmit/iris/engine/jigsaw/PlannedStructure.java | 7 +++++-- .../com/volmit/iris/engine/object/IrisJigsawStructure.java | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java index 862674f8b..882f29f02 100644 --- a/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java +++ b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java @@ -160,6 +160,6 @@ public class PlannedPiece { } public boolean isFull() { - return connected.size() >= piece.getConnectors().size() || isDead(); + return connected.size() >= piece.getConnectors().size(); } } diff --git a/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java index 846ba406a..594f14c91 100644 --- a/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java +++ b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java @@ -257,7 +257,8 @@ public class PlannedStructure { private KList getShuffledPiecesFor(IrisJigsawPieceConnector c) { KList p = new KList<>(); - for (String i : c.getPools().shuffleCopy(rng)) { + KList pools = terminating && getStructure().getTerminatePool() != null ? new KList<>(getStructure().getTerminatePool()) : c.getPools().shuffleCopy(rng); + for (String i : pools) { for (String j : getData().getJigsawPoolLoader().load(i).getPieces().shuffleCopy(rng)) { IrisJigsawPiece pi = getData().getJigsawPieceLoader().load(j); @@ -283,7 +284,9 @@ public class PlannedStructure { } public KList getPiecesWithAvailableConnectors() { - return pieces.copy().removeWhere(PlannedPiece::isFull); + KList available = pieces.copy().removeWhere(PlannedPiece::isFull); + if (!terminating) available.removeIf(PlannedPiece::isDead); + return available; } public int getVolume() { diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java index 8a009364f..9d6d28506 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java @@ -56,6 +56,10 @@ public class IrisJigsawStructure extends IrisRegistrant { @Desc("If set to true, iris will look for any pieces with only one connector in valid pools for edge connectors and attach them to 'terminate' the paths/piece connectors. Essentially it caps off ends. For example in a village, Iris would add houses to the ends of roads where possible. For terminators to be selected, they can only have one connector or they wont be chosen.") private boolean terminate = true; + @RegistryListResource(IrisJigsawPool.class) + @Desc("The pool to use when terminating pieces") + private String terminatePool = null; + @Desc("Override the y range instead of placing on the height map") private IrisStyledRange overrideYRange = null;