diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java b/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java index acfd9348a..cf8d94406 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java @@ -60,4 +60,8 @@ public class IrisJigsawPiece extends IrisRegistrant return p; } + + public boolean isTerminal() { + return connectors.size() == 1; + } } diff --git a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java index f6c1df804..7fa6318fa 100644 --- a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java +++ b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java @@ -19,9 +19,11 @@ public class PlannedStructure { private KMap objectRotationCache; private RNG rng; private boolean verbose; + private boolean terminating; public PlannedStructure(IrisJigsawStructure structure, IrisPosition position, RNG rng) { + terminating = false; objectRotationCache = new KMap<>(); verbose = true; this.pieces = new KList<>(); @@ -186,7 +188,14 @@ public class PlannedStructure { { for(String j : getData().getJigsawPoolLoader().load(i).getPieces().shuffleCopy(rng)) { - p.addIfMissing(getData().getJigsawPieceLoader().load(j)); + IrisJigsawPiece pi = getData().getJigsawPieceLoader().load(j); + + if(terminating && !pi.isTerminal()) + { + continue; + } + + p.addIfMissing(pi); } } @@ -198,6 +207,11 @@ public class PlannedStructure { } private void generateTerminators() { + if(getStructure().isTerminate()) + { + terminating = true; + generateOutwards(structure.getMaxDepth()); + } } public KList getPiecesWithAvailableConnectors()