From 1d052231f07526a8badb2a74c20aa7905a6d7622 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Wed, 13 Jan 2021 09:44:40 -0500 Subject: [PATCH] Tile Data IO --- .../scaffold/hunk/io/HunkRegionSlice.java | 3 +++ .../hunk/io/TileDataHunkIOAdapter.java | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/java/com/volmit/iris/scaffold/hunk/io/TileDataHunkIOAdapter.java diff --git a/src/main/java/com/volmit/iris/scaffold/hunk/io/HunkRegionSlice.java b/src/main/java/com/volmit/iris/scaffold/hunk/io/HunkRegionSlice.java index d50c206e3..d4c5614a7 100644 --- a/src/main/java/com/volmit/iris/scaffold/hunk/io/HunkRegionSlice.java +++ b/src/main/java/com/volmit/iris/scaffold/hunk/io/HunkRegionSlice.java @@ -1,11 +1,13 @@ package com.volmit.iris.scaffold.hunk.io; import com.volmit.iris.Iris; +import com.volmit.iris.object.tile.TileData; import com.volmit.iris.scaffold.hunk.Hunk; import com.volmit.iris.scaffold.parallel.BurstExecutor; import com.volmit.iris.scaffold.parallel.GridLock; import com.volmit.iris.scaffold.parallel.MultiBurst; import com.volmit.iris.util.*; +import org.bukkit.block.TileState; import org.bukkit.block.data.BlockData; import java.io.IOException; @@ -14,6 +16,7 @@ import java.util.concurrent.atomic.AtomicReference; public class HunkRegionSlice { public static final Function2> BLOCKDATA = (h, c) -> new HunkRegionSlice<>(h, Hunk::newAtomicHunk, new BlockDataHunkIOAdapter(), c, "blockdata"); + public static final Function2>> TILE = (h, c) -> new HunkRegionSlice<>(h, Hunk::newAtomicHunk, new TileDataHunkIOAdapter(), c, "tile"); public static final Function3> STRING = (h, c, t) -> new HunkRegionSlice<>(h, Hunk::newAtomicHunk, new StringHunkIOAdapter(), c, t); public static final Function3> BOOLEAN = (h, c, t) -> new HunkRegionSlice<>(h, Hunk::newAtomicHunk, new BooleanHunkIOAdapter(), c, t); private final Function3> factory; diff --git a/src/main/java/com/volmit/iris/scaffold/hunk/io/TileDataHunkIOAdapter.java b/src/main/java/com/volmit/iris/scaffold/hunk/io/TileDataHunkIOAdapter.java new file mode 100644 index 000000000..daed44b87 --- /dev/null +++ b/src/main/java/com/volmit/iris/scaffold/hunk/io/TileDataHunkIOAdapter.java @@ -0,0 +1,25 @@ +package com.volmit.iris.scaffold.hunk.io; + +import com.volmit.iris.object.tile.TileData; +import org.bukkit.block.TileState; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class TileDataHunkIOAdapter extends PaletteHunkIOAdapter> { + @Override + public void write(TileData data, DataOutputStream dos) throws IOException { + data.toBinary(dos); + } + + @Override + public TileData read(DataInputStream din) throws IOException { + try { + return TileData.read(din); + } catch (Throwable throwable) { + throwable.printStackTrace(); + throw new IOException(); + } + } +}