From d955a0ead390e35c48319aae73737135b4efa092 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 15 Apr 2024 01:27:02 +0300 Subject: [PATCH] processRegionVoxels fix --- src/files/WorldFiles.cpp | 3 ++- src/files/WorldFiles.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/files/WorldFiles.cpp b/src/files/WorldFiles.cpp index 518aebf0..8a4a3904 100644 --- a/src/files/WorldFiles.cpp +++ b/src/files/WorldFiles.cpp @@ -598,9 +598,10 @@ void WorldFiles::processRegionVoxels(int x, int z, regionproc func) { int gx = cx + x * REGION_SIZE; int gz = cz + z * REGION_SIZE; uint32_t length; - std::unique_ptr data (readChunkData(gx, gz, length, regfile.get())); + auto data = readChunkData(gx, gz, length, regfile.get()); if (data == nullptr) continue; + data = decompress(data.get(), length, CHUNK_DATA_LEN); if (func(data.get())) { put(gx, gz, REGION_LAYER_VOXELS, std::move(data), CHUNK_DATA_LEN, true); } diff --git a/src/files/WorldFiles.h b/src/files/WorldFiles.h index 41bb0ead..2d49003f 100644 --- a/src/files/WorldFiles.h +++ b/src/files/WorldFiles.h @@ -117,6 +117,7 @@ class WorldFiles { /// @param dstlen max expected length of source buffer /// @return decompressed bytes array std::unique_ptr decompress(const ubyte* src, size_t srclen, size_t dstlen); + std::unique_ptr readChunkData(int x, int y, uint32_t& length, regfile* file); void fetchChunks(WorldRegion* region, int x, int y, regfile* file);