From e42f89a6ac7ea8b65f66399a7e6449de038903b9 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 1 Jan 2013 14:54:25 -0500 Subject: [PATCH] fix slot parsing --- lib/parser.js | 12 +++++++----- packets.json | 10 ++++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/parser.js b/lib/parser.js index f125594..e0ca339 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -324,29 +324,31 @@ function readBool(buffer, offset) { function readSlot(buffer, offset) { var results = readShort(buffer, offset); if (! results) return null; - var blockId = results.value; + var cursor = offset + results.size; + if (blockId === -1) { return { value: { id: blockId }, - size: results.size, + size: cursor - offset, }; } - var cursor = offset + results.size; results = readByte(buffer, cursor); if (! results) return null; var itemCount = results.value; - cursor += results.size; + results = readShort(buffer, cursor); if (! results) return null; var itemDamage = results.value; - cursor += results.size; + results = readShort(buffer, cursor); if (! results) return null; var nbtDataSize = results.value; + cursor += results.size; + if (nbtDataSize === -1) nbtDataSize = 0; var nbtDataEnd = cursor + nbtDataSize; var nbtData = buffer.slice(cursor, nbtDataEnd); diff --git a/packets.json b/packets.json index 35068c9..fb8c7ca 100644 --- a/packets.json +++ b/packets.json @@ -217,6 +217,16 @@ "type": "entityMetadata" } ], + "40": [ + { + "name": "eid", + "type": "int" + }, + { + "name": "metadata", + "type": "entityMetadata" + } + ], "56": [ { "name": "data",