From dc8004d5e6797ce6b9e9de25d35dbee21ecaf9d7 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sun, 11 Mar 2012 10:47:37 +0000 Subject: Anvil format: fixed loading with XZY ordering git-svn-id: http://mc-server.googlecode.com/svn/trunk@398 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/WSSAnvil.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'source') diff --git a/source/WSSAnvil.cpp b/source/WSSAnvil.cpp index d3b4a51fe..73449e5bc 100644 --- a/source/WSSAnvil.cpp +++ b/source/WSSAnvil.cpp @@ -137,9 +137,9 @@ bool cWSSAnvil::LoadChunkFromData(const cChunkCoords & a_Chunk, const AString & // Decompress the data: char Uncompressed[CHUNK_INFLATE_MAX]; z_stream strm; - strm.zalloc = (alloc_func)NULL; - strm.zfree = (free_func)NULL; - strm.opaque = NULL; + strm.zalloc = (alloc_func)NULL; + strm.zfree = (free_func)NULL; + strm.opaque = NULL; inflateInit(&strm); strm.next_out = (Bytef *)Uncompressed; strm.avail_out = sizeof(Uncompressed); @@ -170,15 +170,13 @@ bool cWSSAnvil::LoadChunkFromData(const cChunkCoords & a_Chunk, const AString & bool cWSSAnvil::LoadChunkFromNBT(const cChunkCoords & a_Chunk, cNBTTag & a_NBT) { // The data arrays, in MCA-native y/z/x ordering (will be reordered for the final chunk data) - char BlockData[cChunk::c_NumBlocks]; - char MetaData[cChunk::c_NumBlocks / 2]; - char BlockLight[cChunk::c_NumBlocks / 2]; - char SkyLight[cChunk::c_NumBlocks / 2]; + char BlockData[cChunk::c_BlockDataSize]; + char * MetaData = BlockData + cChunk::c_NumBlocks; + char * BlockLight = MetaData + cChunk::c_NumBlocks / 2; + char * SkyLight = BlockLight + cChunk::c_NumBlocks / 2; - memset(BlockData, E_BLOCK_AIR, sizeof(BlockData)); - memset(MetaData, 0, sizeof(MetaData)); - memset(BlockLight, 0, sizeof(BlockLight)); - memset(SkyLight, 0xff, sizeof(SkyLight)); // By default, data not present in the NBT means air, which means full skylight + memset(BlockData, E_BLOCK_AIR, sizeof(BlockData) - cChunk::c_NumBlocks / 2); + memset(SkyLight, 0xff, cChunk::c_NumBlocks / 2); // By default, data not present in the NBT means air, which means full skylight // Load the blockdata, blocklight and skylight: cNBTList * Sections = (cNBTList *)a_NBT.FindChildByPath("Level\\Sections"); -- cgit v1.2.3