From 5a333c23ac72b72acd957b4ce02a389e5b312716 Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Sat, 2 Sep 2023 10:30:44 +0200 Subject: [PATCH 1/4] Fix Exact BlockData Filter --- .../java/com/volmit/iris/engine/object/IrisObjectPlacement.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java index 0825a98c7..9ae7be341 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java @@ -255,7 +255,7 @@ public class IrisObjectPlacement { if (B.isStorageChest(data)) { IrisLootTable picked = null; - if (cache.exact.containsKey(data.getMaterial()) && cache.exact.containsKey(data)) { + if (cache.exact.containsKey(data.getMaterial()) && cache.exact.get(data.getMaterial()).containsKey(data)) { picked = cache.exact.get(data.getMaterial()).get(data).pullRandom(); } else if (cache.basic.containsKey(data.getMaterial())) { picked = cache.basic.get(data.getMaterial()).pullRandom(); From f735db9843ea6831eb8bc9882c0ab7f499e66a5d Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Sat, 2 Sep 2023 10:31:34 +0200 Subject: [PATCH 2/4] Fix not finding IrisObjectPlacement for jigsaw structures --- .../volmit/iris/engine/framework/Engine.java | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/src/main/java/com/volmit/iris/engine/framework/Engine.java index 4daaf0725..aa692d60d 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Engine.java +++ b/src/main/java/com/volmit/iris/engine/framework/Engine.java @@ -36,6 +36,9 @@ import com.volmit.iris.util.context.ChunkContext; import com.volmit.iris.util.context.IrisContext; import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.DataProvider; +import com.volmit.iris.util.decree.handlers.JigsawPieceHandler; +import com.volmit.iris.util.decree.handlers.JigsawPoolHandler; +import com.volmit.iris.util.decree.handlers.JigsawStructureHandler; import com.volmit.iris.util.documentation.BlockCoordinates; import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.format.C; @@ -54,6 +57,7 @@ import com.volmit.iris.util.parallel.MultiBurst; import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; +import com.volmit.iris.util.scheduling.S; import com.volmit.iris.util.stream.ProceduralStream; import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; @@ -73,9 +77,8 @@ import org.bukkit.inventory.ItemStack; import oshi.util.tuples.Pair; import java.awt.*; -import java.util.Arrays; -import java.util.Set; -import java.util.UUID; +import java.util.*; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -774,9 +777,54 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat } } + KList pieces = new KList<>(); + KList pools = new KList<>(); + int r = 2; + for (int xX = -r; xX <= r; xX++) { + for (int zZ = -r; zZ <= r; zZ++) { + IrisJigsawStructure structure = getStructureAt((x >> 4) + xX, (z >> 4) + zZ); + if (structure != null) { + for (String pieceID : structure.getPieces()) { + IrisJigsawPiece result = searchAllPieces(pieceID, object, pieces, pools); + if (result != null) { + pieces.clear(); + pools.clear(); + return new PlacedObject(result.getPlacementOptions(), getData().getObjectLoader().load(object), id, x, z); + } + } + } + } + } + pieces.clear(); + pools.clear(); + return new PlacedObject(null, getData().getObjectLoader().load(object), id, x, z); } + private IrisJigsawPiece searchAllPieces(String pieceID, String target, KList pieces, KList pools) { + IrisJigsawPiece piece = getData().getJigsawPieceLoader().load(pieceID); + if (piece.getObject().equals(target)) + return piece; + + pieces.add(pieceID); + for (IrisJigsawPieceConnector connector : piece.getConnectors()) { + for (String poolID : connector.getPools()) { + if (pools.contains(poolID)) + continue; + pools.add(poolID); + + for (String pieceId : getData().getJigsawPoolLoader().load(poolID).getPieces()) { + if (pieces.contains(pieceId)) + continue; + + IrisJigsawPiece piece1 = searchAllPieces(pieceId, target, pieces, pools); + if (piece1 != null) + return piece1; + } + } + } + return null; + } int getCacheID(); From 86808017db73974907cef17e7dbccf570d68f89d Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Wed, 6 Sep 2023 18:24:15 +0200 Subject: [PATCH 3/4] Disable initial rotation if set to true --- .../java/com/volmit/iris/engine/jigsaw/PlannedStructure.java | 2 +- .../com/volmit/iris/engine/object/IrisJigsawStructure.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java index 63d8c97f2..54f7e901d 100644 --- a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java +++ b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java @@ -256,7 +256,7 @@ public class PlannedStructure { } private void generateStartPiece() { - pieces.add(new PlannedPiece(this, position, getData().getJigsawPieceLoader().load(rng.pick(getStructure().getPieces())), 0, rng.nextInt(4), 0)); + pieces.add(new PlannedPiece(this, position, getData().getJigsawPieceLoader().load(rng.pick(getStructure().getPieces())), 0, getStructure().isDisableInitialRotation() ? 0 : rng.nextInt(4), 0)); } private void generateTerminators() { diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java index b12e8deee..8a009364f 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java @@ -62,6 +62,9 @@ public class IrisJigsawStructure extends IrisRegistrant { @Desc("Force Y to a specific value") private int lockY = -1; + @Desc("Set to true to prevent rotating the initial structure piece") + private boolean disableInitialRotation = false; + private transient AtomicCache maxDimension = new AtomicCache<>(); private void loadPool(String p, KList pools, KList pieces) { From d324790f66d4c735b66ae29df04e098a698ccc52 Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Sun, 17 Sep 2023 15:54:08 -0400 Subject: [PATCH 4/4] forgot the v+ lol --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0f43fab58..7b82899e7 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ plugins { id "de.undercouch.download" version "5.0.1" } -version '2.7.6-1.20.1' +version '2.7.7-1.20.1' def nmsVersion = '1.20.1' //[NMS] def apiVersion = '1.20' def specialSourceVersion = '1.11.0' //[NMS]