Matter inject

This commit is contained in:
cyberpwn 2021-09-11 13:16:57 -04:00
parent acf4fa106f
commit ef22a58631
2 changed files with 18 additions and 0 deletions

View File

@ -23,6 +23,7 @@ import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.Varint; 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.hunk.Hunk;
import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.BlockPosition;
import org.bukkit.World; import org.bukkit.World;
@ -88,6 +89,13 @@ public interface Matter {
return m; 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 { static Matter read(InputStream in) throws IOException, ClassNotFoundException {
return read(in, (b) -> new IrisMatter(b.getX(), b.getY(), b.getZ())); return read(in, (b) -> new IrisMatter(b.getX(), b.getY(), b.getZ()));
} }

View File

@ -39,6 +39,16 @@ public interface MatterSlice<T> extends Hunk<T> {
updateSync(filter::update); updateSync(filter::update);
} }
default void inject(MatterSlice<T> slice)
{
iterateSync(slice::set);
}
default void forceInject(MatterSlice<?> slice)
{
inject((MatterSlice<T>) slice);
}
void writeNode(T b, DataOutputStream dos) throws IOException; void writeNode(T b, DataOutputStream dos) throws IOException;
T readNode(DataInputStream din) throws IOException; T readNode(DataInputStream din) throws IOException;