From ef22a58631b8196f369543a48a4973dff7c079c8 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Sat, 11 Sep 2021 13:16:57 -0400 Subject: [PATCH] Matter inject --- src/main/java/com/volmit/iris/util/matter/Matter.java | 8 ++++++++ .../java/com/volmit/iris/util/matter/MatterSlice.java | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/com/volmit/iris/util/matter/Matter.java b/src/main/java/com/volmit/iris/util/matter/Matter.java index 98393adbf..2d716ffa4 100644 --- a/src/main/java/com/volmit/iris/util/matter/Matter.java +++ b/src/main/java/com/volmit/iris/util/matter/Matter.java @@ -23,6 +23,7 @@ import com.volmit.iris.engine.object.IrisPosition; import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.Varint; +import com.volmit.iris.util.decree.annotations.Param; import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.math.BlockPosition; import org.bukkit.World; @@ -88,6 +89,13 @@ public interface Matter { return m; } + default Matter copy() + { + Matter m = new IrisMatter(getWidth(), getHeight(), getDepth()); + getSliceMap().forEach((k,v) -> m.slice(k).forceInject(v)); + return m; + } + static Matter read(InputStream in) throws IOException, ClassNotFoundException { return read(in, (b) -> new IrisMatter(b.getX(), b.getY(), b.getZ())); } diff --git a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java index 873689106..f3cdf8d52 100644 --- a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java +++ b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java @@ -39,6 +39,16 @@ public interface MatterSlice extends Hunk { updateSync(filter::update); } + default void inject(MatterSlice slice) + { + iterateSync(slice::set); + } + + default void forceInject(MatterSlice slice) + { + inject((MatterSlice) slice); + } + void writeNode(T b, DataOutputStream dos) throws IOException; T readNode(DataInputStream din) throws IOException;