diff --git a/src/main/java/com/volmit/iris/gen/v2/scaffold/hunk/Hunk.java b/src/main/java/com/volmit/iris/gen/v2/scaffold/hunk/Hunk.java index 78e64dd82..595eb0ef2 100644 --- a/src/main/java/com/volmit/iris/gen/v2/scaffold/hunk/Hunk.java +++ b/src/main/java/com/volmit/iris/gen/v2/scaffold/hunk/Hunk.java @@ -1,7 +1,16 @@ package com.volmit.iris.gen.v2.scaffold.hunk; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Predicate; +import com.volmit.iris.gen.v2.scaffold.hunk.io.HunkIOAdapter; +import com.volmit.iris.gen.v2.scaffold.hunk.storage.*; +import com.volmit.iris.gen.v2.scaffold.hunk.view.*; +import com.volmit.iris.util.*; import org.bukkit.Chunk; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; @@ -10,13 +19,6 @@ import org.bukkit.generator.ChunkGenerator.ChunkData; import com.volmit.iris.gen.v2.scaffold.multicore.BurstExecutor; import com.volmit.iris.gen.v2.scaffold.multicore.MultiBurst; -import com.volmit.iris.util.Consumer2; -import com.volmit.iris.util.Consumer3; -import com.volmit.iris.util.Consumer4; -import com.volmit.iris.util.Consumer5; -import com.volmit.iris.util.Consumer8; -import com.volmit.iris.util.Function3; -import com.volmit.iris.util.KList; public interface Hunk { @@ -178,6 +180,34 @@ public interface Hunk return b; } + default Hunk readOnly() + { + return new ReadOnlyHunk<>(this); + } + + default int getNonNullEntries() + { + AtomicInteger count = new AtomicInteger(); + iterate((x,y,z,v)-> count.getAndAdd(1)); + + return count.get(); + } + + default void write(OutputStream s, HunkIOAdapter h) throws IOException + { + h.write(this, s); + } + + default ByteArrayTag writeByteArrayTag(HunkIOAdapter h, String name) throws IOException + { + return h.writeByteArrayTag(this, name); + } + + default void write(File s, HunkIOAdapter h) throws IOException + { + h.write(this, s); + } + default boolean isAtomic() { return false;