mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-27 21:24:25 -04:00
more packets parsed
This commit is contained in:
parent
3804c5cea6
commit
4523996067
@ -79,8 +79,89 @@ var readers = {
|
|||||||
'float': readFloat,
|
'float': readFloat,
|
||||||
'slotArray': readSlotArray,
|
'slotArray': readSlotArray,
|
||||||
'mapChunkBulk': readMapChunkBulk,
|
'mapChunkBulk': readMapChunkBulk,
|
||||||
|
'entityMetadata': readEntityMetadata,
|
||||||
|
'objectData': readObjectData,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var entityMetadataReaders = {
|
||||||
|
0: readByte,
|
||||||
|
1: readShort,
|
||||||
|
2: readInt,
|
||||||
|
3: readFloat,
|
||||||
|
4: readString,
|
||||||
|
5: readSlot,
|
||||||
|
6: readVector,
|
||||||
|
};
|
||||||
|
|
||||||
|
function readVector(buffer, offset) {
|
||||||
|
if (offset + 12 > buffer.length) return null;
|
||||||
|
return {
|
||||||
|
value: {
|
||||||
|
x: buffer.readInt32BE(offset),
|
||||||
|
y: buffer.readInt32BE(offset + 4),
|
||||||
|
z: buffer.readInt32BE(offset + 8),
|
||||||
|
},
|
||||||
|
size: 12,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function readEntityMetadata(buffer, offset) {
|
||||||
|
var cursor = offset;
|
||||||
|
var metadata = {};
|
||||||
|
var item, key, type, results;
|
||||||
|
while (true) {
|
||||||
|
if (cursor + 1 > buffer.length) return null;
|
||||||
|
item = buffer.readUInt8(cursor);
|
||||||
|
cursor += 1;
|
||||||
|
if (item === 0x7f) break;
|
||||||
|
key = item & 0x1f;
|
||||||
|
type = item >> 5;
|
||||||
|
reader = entityMetadataReaders[type];
|
||||||
|
assert.ok(reader, "missing reader for entity metadata type " + type);
|
||||||
|
results = reader(buffer, cursor);
|
||||||
|
if (! results) return null;
|
||||||
|
metadata[key] = results.value;
|
||||||
|
cursor += results.size;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
value: metadata,
|
||||||
|
size: cursor - offset,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function readObjectData(buffer, offset) {
|
||||||
|
var cursor = offset + 4;
|
||||||
|
if (cursor > buffer.length) return null;
|
||||||
|
var intField = buffer.readInt32BE(offset);
|
||||||
|
|
||||||
|
if (intField === 0) {
|
||||||
|
return {
|
||||||
|
value: {
|
||||||
|
intField: intField,
|
||||||
|
},
|
||||||
|
size: cursor - offset,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cursor + 6 > buffer.length) return null;
|
||||||
|
var velocityX = buffer.readInt16BE(cursor);
|
||||||
|
cursor += 2;
|
||||||
|
var velocityY = buffer.readInt16BE(cursor);
|
||||||
|
cursor += 2;
|
||||||
|
var velocityZ = buffer.readInt16BE(cursor);
|
||||||
|
cursor += 2;
|
||||||
|
|
||||||
|
return {
|
||||||
|
value: {
|
||||||
|
intField: intField,
|
||||||
|
velocityX: velocityX,
|
||||||
|
velocityY: velocityY,
|
||||||
|
velocityZ: velocityZ,
|
||||||
|
},
|
||||||
|
size: cursor - offset,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function readMapChunkBulk (buffer, offset) {
|
function readMapChunkBulk (buffer, offset) {
|
||||||
var cursor = offset + 7;
|
var cursor = offset + 7;
|
||||||
if (cursor > buffer.length) return null;
|
if (cursor > buffer.length) return null;
|
||||||
|
84
packets.json
84
packets.json
@ -133,6 +133,90 @@
|
|||||||
"type": "short"
|
"type": "short"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"23": [
|
||||||
|
{
|
||||||
|
"name": "eid",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "type",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "x",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "y",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "z",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaw",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pitch",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "objectData",
|
||||||
|
"type": "objectData"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"24": [
|
||||||
|
{
|
||||||
|
"name": "eid",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "type",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "x",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "y",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "z",
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yaw",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pitch",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "headYaw",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "velocityX",
|
||||||
|
"type": "short"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "velocityY",
|
||||||
|
"type": "short"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "velocityZ",
|
||||||
|
"type": "short"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "metadata",
|
||||||
|
"type": "entityMetadata"
|
||||||
|
}
|
||||||
|
],
|
||||||
"56": [
|
"56": [
|
||||||
{
|
{
|
||||||
"name": "data",
|
"name": "data",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user