diff --git a/src/main/java/net/hollowcube/polar/PolarReader.java b/src/main/java/net/hollowcube/polar/PolarReader.java index 8b4c645..aff6bc4 100644 --- a/src/main/java/net/hollowcube/polar/PolarReader.java +++ b/src/main/java/net/hollowcube/polar/PolarReader.java @@ -74,9 +74,13 @@ private PolarReader() {} continue; var packed = buffer.read(LONG_ARRAY); - var bitsPerEntry = packed.length * 64 / PolarChunk.HEIGHTMAP_SIZE; - heightmaps[i] = new int[PolarChunk.HEIGHTMAP_SIZE]; - PaletteUtil.unpack(heightmaps[i], packed, bitsPerEntry); + if (packed.length == 0) { + heightmaps[i] = new int[0]; + } else { + var bitsPerEntry = packed.length * 64 / PolarChunk.HEIGHTMAP_SIZE; + heightmaps[i] = new int[PolarChunk.HEIGHTMAP_SIZE]; + PaletteUtil.unpack(heightmaps[i], packed, bitsPerEntry); + } } // Objects diff --git a/src/main/java/net/hollowcube/polar/PolarWriter.java b/src/main/java/net/hollowcube/polar/PolarWriter.java index 82a1c0f..b81205d 100644 --- a/src/main/java/net/hollowcube/polar/PolarWriter.java +++ b/src/main/java/net/hollowcube/polar/PolarWriter.java @@ -61,7 +61,8 @@ private static void writeChunk(@NotNull NetworkBuffer buffer, @NotNull PolarChun for (int i = 0; i < PolarChunk.MAX_HEIGHTMAPS; i++) { var heightmap = chunk.heightmap(i); if (heightmap == null) continue; - buffer.write(LONG_ARRAY, PaletteUtil.pack(heightmap, bitsPerEntry)); + if (heightmap.length == 0) buffer.write(LONG_ARRAY, new long[0]); + else buffer.write(LONG_ARRAY, PaletteUtil.pack(heightmap, bitsPerEntry)); } }