From 45a7e6a6ea4e46cc448e28236b4ea10c81a1c1e8 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Mon, 11 Jan 2021 09:54:00 -0500 Subject: [PATCH] Placement fixes --- .../object/IrisJigsawStructurePlacement.java | 79 +++---------------- 1 file changed, 12 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawStructurePlacement.java b/src/main/java/com/volmit/iris/object/IrisJigsawStructurePlacement.java index 55cdef2db..b4ddb4411 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawStructurePlacement.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawStructurePlacement.java @@ -1,7 +1,9 @@ package com.volmit.iris.object; -import com.volmit.iris.scaffold.cache.AtomicCache; -import com.volmit.iris.util.*; +import com.volmit.iris.util.Desc; +import com.volmit.iris.util.DontObfuscate; +import com.volmit.iris.util.RegistryListJigsaw; +import com.volmit.iris.util.Required; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,76 +14,19 @@ import lombok.experimental.Accessors; @NoArgsConstructor @AllArgsConstructor @DontObfuscate -@Desc("Represents a jigsaw structure") +@Desc("Represents a jigsaw structure placer") @Data @EqualsAndHashCode(callSuper = false) -public class IrisJigsawStructure extends IrisRegistrant +public class IrisJigsawStructurePlacement extends IrisRegistrant { - @RegistryListJigsawPiece + @RegistryListJigsaw @Required @DontObfuscate - @ArrayType(min = 1,type = String.class) - @Desc("The starting pieces. Randomly chooses a starting piece, then connects pieces using the pools define in the starting piece.") - private KList pieces = new KList<>(); - - @MaxNumber(32) - @MinNumber(1) - @DontObfuscate - @Desc("The maximum pieces that can step out from the center piece") - private int maxDepth = 9; + @Desc("The structure to place") + private String structure; @DontObfuscate - @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; - - private transient AtomicCache maxDimension = new AtomicCache<>(); - - private void loadPool(String p, KList pools, KList pieces) - { - IrisJigsawPool pool = getLoader().getJigsawPoolLoader().load(p); - - for(String i : pool.getPieces()) - { - if(pieces.addIfMissing(i)) - { - loadPiece(i, pools, pieces); - } - } - } - - private void loadPiece(String p, KList pools, KList pieces) - { - IrisJigsawPiece piece = getLoader().getJigsawPieceLoader().load(p); - for(IrisJigsawPieceConnector i : piece.getConnectors()) - { - for(String j : i.getPools()) - { - if(pools.addIfMissing(j)) - { - loadPool(p, pools, pieces); - } - } - } - } - - public int getMaxDimension() - { - return maxDimension.aquire(() -> { - int max = 0; - KList pools = new KList<>(); - KList pieces = new KList<>(); - - for(String i : getPieces()) - { - loadPiece(i, pools, pieces); - } - - for(String i : pieces) - { - max = Math.max(max, getLoader().getJigsawPieceLoader().load(i).getMax3dDimension()); - } - - return max; - }); - } + @Required + @Desc("The 1 in X chance rarity") + private int rarity = 100; }