Merge pull request #44 from mappum/master

Updated to latest protocol
This commit is contained in:
Andrew Kelley 2013-03-13 19:41:10 -07:00
commit 07505da2e8

View File

@ -307,6 +307,17 @@ var packets = {
{ name: "global", type: "bool" } { name: "global", type: "bool" }
], ],
0x3e: [ 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: "soundName", type: "string" },
{ name: "x", type: "int" }, { name: "x", type: "int" },
{ name: "y", type: "int" }, { name: "y", type: "int" },
@ -329,7 +340,8 @@ var packets = {
{ name: "windowId", type: "byte" }, { name: "windowId", type: "byte" },
{ name: "inventoryType", type: "byte" }, { name: "inventoryType", type: "byte" },
{ name: "windowTitle", type: "string" }, { name: "windowTitle", type: "string" },
{ name: "slotCount", type: "byte" } { name: "slotCount", type: "byte" },
{ name: "useProvidedTitle", type: "bool" }
], ],
0x65: [ 0x65: [
{ name: "windowId", type: "byte" } { name: "windowId", type: "byte" }
@ -417,6 +429,30 @@ var packets = {
0xcd: [ 0xcd: [
{ name: "payload", type: "byte" } { 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: [ 0xfa: [
{ name: "channel", type: "string" }, { name: "channel", type: "string" },
{ name: "data", type: "byteArray16" } { name: "data", type: "byteArray16" }
@ -461,6 +497,7 @@ var types = {
'intVector': [readIntVector, IntVectorWriter], 'intVector': [readIntVector, IntVectorWriter],
'byteVector': [readByteVector, ByteVectorWriter], 'byteVector': [readByteVector, ByteVectorWriter],
'byteVectorArray': [readByteVectorArray, ByteVectorArrayWriter], 'byteVectorArray': [readByteVectorArray, ByteVectorArrayWriter],
'stringArray': [readStringArray, StringArrayWriter],
}; };
function ByteArray32Writer(value) { function ByteArray32Writer(value) {
@ -641,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) { function readIntArray8(buffer, offset) {
var results = readByte(buffer, offset); var results = readByte(buffer, offset);
if (! results) return null; if (! results) return null;
@ -918,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) { function readShort(buffer, offset) {
if (offset + 2 > buffer.length) return null; if (offset + 2 > buffer.length) return null;
var value = buffer.readInt16BE(offset); var value = buffer.readInt16BE(offset);
@ -1241,8 +1316,8 @@ function parsePacket(buffer, isServer) {
} }
module.exports = { module.exports = {
version: 51, version: 60,
minecraftVersion: '1.4.7', minecraftVersion: '1.5.0',
sessionVersion: 13, sessionVersion: 13,
parsePacket: parsePacket, parsePacket: parsePacket,
createPacketBuffer: createPacketBuffer, createPacketBuffer: createPacketBuffer,