From 8e8366b3181b5e1ac9d62b076a53e44f4520712a Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Thu, 26 Sep 2024 20:56:56 +0200 Subject: [PATCH] add jigsaw structure marker --- .../iris/engine/jigsaw/PlannedStructure.java | 3 ++ .../matter/slices/JigsawStructureMatter.java | 36 +++++++++++++++++++ .../container/JigsawStructureContainer.java | 14 ++++++++ 3 files changed, 53 insertions(+) create mode 100644 core/src/main/java/com/volmit/iris/util/matter/slices/JigsawStructureMatter.java create mode 100644 core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawStructureContainer.java 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 9ee15169b..09c819478 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 @@ -30,6 +30,7 @@ import com.volmit.iris.util.mantle.Mantle; import com.volmit.iris.util.math.Position2; import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer; +import com.volmit.iris.util.matter.slices.container.JigsawStructureContainer; import com.volmit.iris.util.matter.slices.container.JigsawStructuresContainer; import com.volmit.iris.util.scheduling.J; import lombok.Data; @@ -146,10 +147,12 @@ public class PlannedStructure { int id = rng.i(0, Integer.MAX_VALUE); JigsawPieceContainer container = JigsawPieceContainer.toContainer(i.getPiece()); + JigsawStructureContainer structureContainer = JigsawStructureContainer.toContainer(structure); i.setRealPositions(xx, height, zz, placer); return v.place(xx, height, zz, placer, options, rng, (b, data) -> { e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id); e.set(b.getX(), b.getY(), b.getZ(), container); + e.set(b.getX(), b.getY(), b.getZ(), structureContainer); if (data instanceof IrisBlockData d) { e.set(b.getX(), b.getY(), b.getZ(), d.getCustom()); } diff --git a/core/src/main/java/com/volmit/iris/util/matter/slices/JigsawStructureMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/JigsawStructureMatter.java new file mode 100644 index 000000000..54e28b9e4 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/util/matter/slices/JigsawStructureMatter.java @@ -0,0 +1,36 @@ +package com.volmit.iris.util.matter.slices; + +import com.volmit.iris.util.data.palette.Palette; +import com.volmit.iris.util.matter.Sliced; +import com.volmit.iris.util.matter.slices.container.JigsawStructureContainer; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +@Sliced +public class JigsawStructureMatter extends RawMatter { + + public JigsawStructureMatter() { + this(1, 1, 1); + } + + public JigsawStructureMatter(int width, int height, int depth) { + super(width, height, depth, JigsawStructureContainer.class); + } + + @Override + public Palette getGlobalPalette() { + return null; + } + + @Override + public void writeNode(JigsawStructureContainer b, DataOutputStream dos) throws IOException { + dos.writeUTF(b.getLoadKey()); + } + + @Override + public JigsawStructureContainer readNode(DataInputStream din) throws IOException { + return new JigsawStructureContainer(din.readUTF()); + } +} diff --git a/core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawStructureContainer.java b/core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawStructureContainer.java new file mode 100644 index 000000000..14c2d0d14 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawStructureContainer.java @@ -0,0 +1,14 @@ +package com.volmit.iris.util.matter.slices.container; + +import com.volmit.iris.engine.object.IrisJigsawStructure; + +public class JigsawStructureContainer extends RegistrantContainer { + + public JigsawStructureContainer(String loadKey) { + super(IrisJigsawStructure.class, loadKey); + } + + public static JigsawStructureContainer toContainer(IrisJigsawStructure structure) { + return new JigsawStructureContainer(structure.getLoadKey()); + } +}