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,
|
||||
'slotArray': readSlotArray,
|
||||
'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) {
|
||||
var cursor = offset + 7;
|
||||
if (cursor > buffer.length) return null;
|
||||
|
84
packets.json
84
packets.json
@ -133,6 +133,90 @@
|
||||
"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": [
|
||||
{
|
||||
"name": "data",
|
||||
|
Loading…
x
Reference in New Issue
Block a user