From 5f6abad7006b92e89598d8381b401f8fdd8951a9 Mon Sep 17 00:00:00 2001 From: Matt Bell Date: Wed, 13 Mar 2013 17:06:28 -0700 Subject: [PATCH 1/2] Updated to protocol 60 (1.5.0) --- lib/protocol.js | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/lib/protocol.js b/lib/protocol.js index 8eb623c..fad52ea 100644 --- a/lib/protocol.js +++ b/lib/protocol.js @@ -307,6 +307,17 @@ var packets = { { name: "global", type: "bool" } ], 0x3e: [ + { name: "particleName", type: "string" }, + { name: "x", type: "float" }, + { name: "y", type: "float" }, + { name: "z", type: "float" }, + { name: "offsetX", type: "float" }, + { name: "offsetY", type: "float" }, + { name: "offsetZ", type: "float" }, + { name: "particleSpeed", type: "float" }, + { name: "particles", type: "int" } + ], + 0x3f: [ { name: "soundName", type: "string" }, { name: "x", type: "int" }, { name: "y", type: "int" }, @@ -329,7 +340,8 @@ var packets = { { name: "windowId", type: "byte" }, { name: "inventoryType", type: "byte" }, { name: "windowTitle", type: "string" }, - { name: "slotCount", type: "byte" } + { name: "slotCount", type: "byte" }, + { name: "useProvidedTitle", type: "bool" } ], 0x65: [ { name: "windowId", type: "byte" } @@ -417,6 +429,30 @@ var packets = { 0xcd: [ { name: "payload", type: "byte" } ], + 0xce: [ + { name: "name", type: "string" }, + { name: "displayText", type: "string" }, + { name: "create", type: "bool" } + ], + 0xcf: [ + { name: "itemName", type: "string" }, + { name: "remove", type: "bool" }, + { name: "scoreName", type: "string" }, + { name: "value", type: "int" } + ], + 0xd0: [ + { name: "position", type: "byte" }, + { name: "name", type: "string" } + ], + 0xd1: [ + { name: "team", type: "string" }, + { name: "mode", type: "byte" }, + { name: "name", type: "string" }, + { name: "prefix", type: "string" }, + { name: "suffix", type: "string" }, + { name: "friendlyFire", type: "bool" }, + { name: "players", type: "stringArray" } + ], 0xfa: [ { name: "channel", type: "string" }, { name: "data", type: "byteArray16" } @@ -1241,8 +1277,8 @@ function parsePacket(buffer, isServer) { } module.exports = { - version: 51, - minecraftVersion: '1.4.7', + version: 60, + minecraftVersion: '1.5.0', sessionVersion: 13, parsePacket: parsePacket, createPacketBuffer: createPacketBuffer, From 4a366d75b59eb780a79a31587f4475b01574c951 Mon Sep 17 00:00:00 2001 From: Matt Bell Date: Wed, 13 Mar 2013 17:57:18 -0700 Subject: [PATCH 2/2] Added stringArray datatype --- lib/protocol.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lib/protocol.js b/lib/protocol.js index fad52ea..5b0a077 100644 --- a/lib/protocol.js +++ b/lib/protocol.js @@ -497,6 +497,7 @@ var types = { 'intVector': [readIntVector, IntVectorWriter], 'byteVector': [readByteVector, ByteVectorWriter], 'byteVectorArray': [readByteVectorArray, ByteVectorArrayWriter], + 'stringArray': [readStringArray, StringArrayWriter], }; function ByteArray32Writer(value) { @@ -677,6 +678,24 @@ ByteVectorArrayWriter.prototype.write = function(buffer, offset) { }); } +function StringArrayWriter(value) { + this.value = value; + this.size = 2; + for (var i = 0; i < this.value.length; ++i) { + this.value[i] = stringWriter = new StringWriter(this.value[i]); + this.size += stringWriter.size; + } +} + +StringArrayWriter.prototype.write = function(buffer, offset) { + buffer.writeInt16BE(this.value.length, offset); + offset += 2; + this.value.forEach(function(stringWriter) { + stringWriter.write(buffer, offset); + offset += stringWriter.size; + }); +} + function readIntArray8(buffer, offset) { var results = readByte(buffer, offset); if (! results) return null; @@ -954,6 +973,26 @@ function readSlotArray (buffer, offset) { }; } +function readStringArray (buffer, offset) { + var results = readShort(buffer, offset); + if (! results) return null; + var count = results.value; + var cursor = offset + results.size; + + var stringArray = []; + for (var i = 0; i < count; ++i) { + results = readString(buffer, cursor); + if (! results) return null; + stringArray.push(results.value); + cursor += results.size; + } + + return { + value: stringArray, + size: cursor - offset, + }; +} + function readShort(buffer, offset) { if (offset + 2 > buffer.length) return null; var value = buffer.readInt16BE(offset);