From 3804c5cea68d81125db6a66289c64af8ffa7f28b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 1 Jan 2013 05:52:34 -0500 Subject: [PATCH] refactor and fix map chunk bulk parsing --- lib/parser.js | 20 +++++++++----------- packets.json | 12 +++++++++++- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/parser.js b/lib/parser.js index d9a429d..1001b75 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -82,17 +82,15 @@ var readers = { }; function readMapChunkBulk (buffer, offset) { - var cursor = offset + 6; + var cursor = offset + 7; if (cursor > buffer.length) return null; - var chunkCount = buffer.readInt16BE(buffer, offset); - var dataSize = buffer.readInt32BE(buffer, offset + 2); + var chunkCount = buffer.readInt16BE(offset); + var dataSize = buffer.readInt32BE(offset + 2); + var skyLightSent = !!buffer.readInt8(offset + 6); - var endCursor = cursor + 1 + dataSize + 12 * chunkCount; + var endCursor = cursor + dataSize + 12 * chunkCount; if (endCursor > buffer.length) return null; - var skyLightSent = !!buffer.readInt8(buffer, cursor); - cursor += 1; - var compressedChunkDataEnd = cursor + dataSize; var compressedChunkData = buffer.slice(cursor, compressedChunkDataEnd); cursor = compressedChunkDataEnd; @@ -100,13 +98,13 @@ function readMapChunkBulk (buffer, offset) { var meta = []; var i, chunkX, chunkZ, primaryBitMap, addBitMap; for (i = 0; i < chunkCount; ++i) { - chunkX = buffer.readInt32BE(buffer, cursor); + chunkX = buffer.readInt32BE(cursor); cursor += 4; - chunkZ = buffer.readInt32BE(buffer, cursor); + chunkZ = buffer.readInt32BE(cursor); cursor += 4; - primaryBitMap = buffer.readUInt16BE(buffer, cursor); + primaryBitMap = buffer.readUInt16BE(cursor); cursor += 2; - addBitMap = buffer.readUInt16BE(buffer, cursor); + addBitMap = buffer.readUInt16BE(cursor); cursor += 2; meta.push({ diff --git a/packets.json b/packets.json index 97ad22a..a3403b9 100644 --- a/packets.json +++ b/packets.json @@ -135,10 +135,20 @@ ], "56": [ { - "name": "dummy", + "name": "data", "type": "mapChunkBulk" } ], + "70": [ + { + "name": "reason", + "type": "byte" + }, + { + "name": "gameMode", + "type": "byte" + } + ], "103": [ { "name": "windowId",