mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-28 13:45:37 -04:00
Implement @roblabla's changes
This commit is contained in:
parent
3121c0fdcc
commit
17e78c11f6
@ -321,19 +321,16 @@ var packets = {
|
||||
{ name: "location", type: "position" },
|
||||
{ name: "destroyStage", type: "byte" }
|
||||
]},
|
||||
map_chunk_bulk: {id: 0x26, fields: [ /* TODO: This is probably wrong */
|
||||
map_chunk_bulk: {id: 0x26, fields: [
|
||||
{ name: "skyLightSent", type: "bool" },
|
||||
{ name: "chunkColumnCount", type: "count", typeArgs: { type: "varint", countFor: "meta" } },
|
||||
{ name: "dataLength", type: "count", typeArgs: { type: "int", countFor: "chunkData" } },
|
||||
{ name: "chunkData", type: "buffer", typeArgs: { count: "dataLength" } },
|
||||
{ name: "meta", type: "array", typeArgs: { count: "chunkColumnCount",
|
||||
type: "container", typeArgs: { fields: [
|
||||
{ name: "meta", type: "array", typeArgs: { count: "chunkColumnCount", type: "container", typeArgs: { fields: [
|
||||
{ name: "x", type: "int" },
|
||||
{ name: "z", type: "int" },
|
||||
{ name: "bitMap", type: "ushort" },
|
||||
{ name: "addBitMap", type: "ushort" }
|
||||
] } } }
|
||||
]},
|
||||
]}}},
|
||||
{ name: "data", type: "restBuffer" }
|
||||
]}
|
||||
explosion: {id: 0x27, fields: [
|
||||
{ name: "x", type: "float" },
|
||||
{ name: "y", type: "float" },
|
||||
@ -428,10 +425,31 @@ var packets = {
|
||||
{ name: "text3", type: "string" },
|
||||
{ name: "text4", type: "string" }
|
||||
]},
|
||||
map: {id: 0x34, fields: [ /* TODO: No clue how to do this */
|
||||
map: {id: 0x34, fields: [
|
||||
{ name: "itemDamage", type: "varint" },
|
||||
{ name: "dataLength", type: "count", typeArgs: { type: "short", countFor: "data" } },
|
||||
{ name: "data", type: "buffer", typeArgs: { count: "dataLength" } },
|
||||
{ name: "scale", type: "byte" },
|
||||
{ name: "iconLength", type: "count", typeArgs: { type: "varint", countFor: "icons" } },
|
||||
{ name: "icons", type: "array", typeArgs: { count: "iconLength", type: "container", typeArgs: { fields: [
|
||||
{ name: "directionAndType", type: "byte" }, // Yeah... that will do
|
||||
{ name: "x", type: "byte" },
|
||||
{ name: "y", type: "byte" }
|
||||
]}}},
|
||||
{ name: "columns", type: "byte" },
|
||||
{ name: "rows", type: "byte", condition: function(field_values) {
|
||||
return field_values["columns"] !== 0;
|
||||
}},
|
||||
{ name: "x", type: "byte", condition: function(field_values) {
|
||||
return field_values["columns"] !== 0;
|
||||
}},
|
||||
{ name: "y", type: "byte", condition: function(field_values) {
|
||||
return field_values["columns"] !== 0;
|
||||
}},
|
||||
{ name: "dataLength", type: "count", typeArgs: { countFor: "data", type: "varint" }, condition: function(field_values) {
|
||||
return field_values["columns"] !== 0;
|
||||
}},
|
||||
{ name: "data", type: "buffer", typeArgs: { count: "dataLength" }, condition: function(field_values) {
|
||||
return field_values["columns"] !== 0;
|
||||
}},
|
||||
]},
|
||||
tile_entity_data:{id: 0x35, fields: [
|
||||
{ name: "location", type: "position" },
|
||||
@ -451,10 +469,40 @@ var packets = {
|
||||
]}
|
||||
}}
|
||||
]},
|
||||
player_info: {id: 0x38, fields: [ /* TODO: Again, no clue */
|
||||
{ name: "playerName", type: "string" },
|
||||
{ name: "online", type: "bool" },
|
||||
{ name: "ping", type: "short" }
|
||||
player_info: {id: 0x38, fields: [
|
||||
{ name: "action", type: "varint" },
|
||||
{ name: "length", type: "count", typeArgs: { type: "varint", countFor: "data" }},
|
||||
{ name: "data", type: "array", typeArgs: { count: "length", type: "container", typeArgs: { fields: [
|
||||
{ name: "UUID", type: "uuid" },
|
||||
{ name: "name", type: "string", condition: function(field_values) {
|
||||
return field_values["action"] === 0;
|
||||
}},
|
||||
{ name: "propertiesLength", type: "count", condition: function(field_values) {
|
||||
return field_values["action"] === 0;
|
||||
}, typeArgs: { countFor: "properties", type: "varint" }},
|
||||
{ name: "properties", type: "array", condition: function(field_values) {
|
||||
return field_values["action"] === 0;
|
||||
}, typeArgs: { count: propertiesLength, type: "container", typeArgs: { fields: [
|
||||
{ name: "name", type: "string" }
|
||||
{ name: "value", type: "string" },
|
||||
{ name: "isSigned", type: "bool" },
|
||||
{ name: "signature", type: "string", condition: function(field_values) {
|
||||
return field_values["isSigned"];
|
||||
}}
|
||||
]}},
|
||||
{ name: "gamemode", type: "varint", condition: function(field_values) {
|
||||
return field_values["action"] === 0 || field_values["action"] === 1;
|
||||
}},
|
||||
{ name: "ping", type: "varint", condition: function(field_values) {
|
||||
return field_values["action"] === 0 || field_values["action"] === 2;
|
||||
}},
|
||||
{ name: "hasDisplayName", type: "bool", condition: function(field_values) {
|
||||
return field_values["action"] === 0 || field_values["action"] === 3;
|
||||
}},
|
||||
{ name: "displayName", type: "string", condition: function(field_values) {
|
||||
return field_values["hasDisplayName"]; // Returns false if there is no value "hasDisplayName"
|
||||
}}
|
||||
]}}}
|
||||
]},
|
||||
abilities: {id: 0x39, fields: [
|
||||
{ name: "flags", type: "byte" },
|
||||
@ -573,7 +621,7 @@ var packets = {
|
||||
return field_values['action'] == 0 || field_values['action'] == 1;
|
||||
} },
|
||||
{ name: "fadeIn", type: "int", condition: function(field_values) {
|
||||
return field_values['action'] == 0 || field_values['action'] == 1;
|
||||
return field_values['action'] == 2;
|
||||
} },
|
||||
{ name: "stay", type: "int", condition: function(field_values) {
|
||||
return field_values['action'] == 2;
|
||||
@ -595,7 +643,7 @@ var packets = {
|
||||
]},
|
||||
update_entity_nbt: { id: 0x49, fields: [
|
||||
{ name: "entityId", type: "varint" },
|
||||
{ name: "tag", type: "string"} /* TODO: Should be of type "NBT Tag" */
|
||||
{ name: "tag", type: "restBuffer"}
|
||||
]}
|
||||
},
|
||||
toServer: {
|
||||
@ -786,6 +834,7 @@ var types = {
|
||||
'container': [readContainer, writeContainer, sizeOfContainer],
|
||||
'array': [readArray, writeArray, sizeOfArray],
|
||||
'buffer': [readBuffer, writeBuffer, sizeOfBuffer],
|
||||
'restBuffer': [readRestBuffer, writeRestBuffer, sizeOfRestBuffer],
|
||||
'count': [readCount, writeCount, sizeOfCount],
|
||||
// TODO : remove type-specific, replace with generic containers and arrays.
|
||||
'slot': [readSlot, writeSlot, sizeOfSlot],
|
||||
@ -1213,6 +1262,16 @@ function sizeOfBuffer(value) {
|
||||
return value.length;
|
||||
}
|
||||
|
||||
function readRestBuffer(buffer, offset, typeArgs, rootNode) {
|
||||
return {
|
||||
value: buffer.slice(offset),
|
||||
size: buffer.length - offset
|
||||
};
|
||||
}
|
||||
|
||||
var writeRestBuffer = writeBuffer;
|
||||
var sizeOfRestBuffer = sizeOfBuffer;
|
||||
|
||||
function readArray(buffer, offset, typeArgs, rootNode) {
|
||||
var results = {
|
||||
value: [],
|
||||
|
Loading…
x
Reference in New Issue
Block a user