diff --git a/lib/parser.js b/lib/parser.js index e0ca339..d40338f 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -81,8 +81,29 @@ var readers = { 'mapChunkBulk': readMapChunkBulk, 'entityMetadata': readEntityMetadata, 'objectData': readObjectData, + 'intArray': readIntArray, }; +function readIntArray(buffer, offset) { + var results = readByte(buffer, offset); + if (! results) return null; + var count = results.value; + var cursor = offset + results.size; + + var endCursor = cursor + 4 * count; + if (endCursor > buffer.length) return null; + var array = []; + for (var i = 0; i < count; ++i) { + array.push(buffer.readInt32BE(cursor)); + cursor += 4; + } + + return { + value: array, + size: endCursor - offset, + }; +} + var entityMetadataReaders = { 0: readByte, 1: readShort, diff --git a/packets.json b/packets.json index 9fea124..afcccba 100644 --- a/packets.json +++ b/packets.json @@ -235,6 +235,70 @@ "type": "short" } ], + "29": [ + { + "name": "entityIds", + "type": "intArray" + } + ], + "31": [ + { + "name": "entityId", + "type": "int" + }, + { + "name": "deltaX", + "type": "byte" + }, + { + "name": "deltaY", + "type": "byte" + }, + { + "name": "deltaZ", + "type": "byte" + } + ], + "32": [ + { + "name": "entityId", + "type": "int" + }, + { + "name": "yaw", + "type": "byte" + }, + { + "name": "pitch", + "type": "byte" + } + ], + "34": [ + { + "name": "entityId", + "type": "int" + }, + { + "name": "x", + "type": "int" + }, + { + "name": "y", + "type": "int" + }, + { + "name": "z", + "type": "int" + }, + { + "name": "yaw", + "type": "byte" + }, + { + "name": "pitch", + "type": "byte" + } + ], "35": [ { "name": "entityId",