mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-29 14:13:45 -04:00
refactor and fix map chunk bulk parsing
This commit is contained in:
parent
c51cb26769
commit
3804c5cea6
@ -82,17 +82,15 @@ var readers = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function readMapChunkBulk (buffer, offset) {
|
function readMapChunkBulk (buffer, offset) {
|
||||||
var cursor = offset + 6;
|
var cursor = offset + 7;
|
||||||
if (cursor > buffer.length) return null;
|
if (cursor > buffer.length) return null;
|
||||||
var chunkCount = buffer.readInt16BE(buffer, offset);
|
var chunkCount = buffer.readInt16BE(offset);
|
||||||
var dataSize = buffer.readInt32BE(buffer, offset + 2);
|
var dataSize = buffer.readInt32BE(offset + 2);
|
||||||
|
var skyLightSent = !!buffer.readInt8(offset + 6);
|
||||||
|
|
||||||
var endCursor = cursor + 1 + dataSize + 12 * chunkCount;
|
var endCursor = cursor + dataSize + 12 * chunkCount;
|
||||||
if (endCursor > buffer.length) return null;
|
if (endCursor > buffer.length) return null;
|
||||||
|
|
||||||
var skyLightSent = !!buffer.readInt8(buffer, cursor);
|
|
||||||
cursor += 1;
|
|
||||||
|
|
||||||
var compressedChunkDataEnd = cursor + dataSize;
|
var compressedChunkDataEnd = cursor + dataSize;
|
||||||
var compressedChunkData = buffer.slice(cursor, compressedChunkDataEnd);
|
var compressedChunkData = buffer.slice(cursor, compressedChunkDataEnd);
|
||||||
cursor = compressedChunkDataEnd;
|
cursor = compressedChunkDataEnd;
|
||||||
@ -100,13 +98,13 @@ function readMapChunkBulk (buffer, offset) {
|
|||||||
var meta = [];
|
var meta = [];
|
||||||
var i, chunkX, chunkZ, primaryBitMap, addBitMap;
|
var i, chunkX, chunkZ, primaryBitMap, addBitMap;
|
||||||
for (i = 0; i < chunkCount; ++i) {
|
for (i = 0; i < chunkCount; ++i) {
|
||||||
chunkX = buffer.readInt32BE(buffer, cursor);
|
chunkX = buffer.readInt32BE(cursor);
|
||||||
cursor += 4;
|
cursor += 4;
|
||||||
chunkZ = buffer.readInt32BE(buffer, cursor);
|
chunkZ = buffer.readInt32BE(cursor);
|
||||||
cursor += 4;
|
cursor += 4;
|
||||||
primaryBitMap = buffer.readUInt16BE(buffer, cursor);
|
primaryBitMap = buffer.readUInt16BE(cursor);
|
||||||
cursor += 2;
|
cursor += 2;
|
||||||
addBitMap = buffer.readUInt16BE(buffer, cursor);
|
addBitMap = buffer.readUInt16BE(cursor);
|
||||||
cursor += 2;
|
cursor += 2;
|
||||||
|
|
||||||
meta.push({
|
meta.push({
|
||||||
|
12
packets.json
12
packets.json
@ -135,10 +135,20 @@
|
|||||||
],
|
],
|
||||||
"56": [
|
"56": [
|
||||||
{
|
{
|
||||||
"name": "dummy",
|
"name": "data",
|
||||||
"type": "mapChunkBulk"
|
"type": "mapChunkBulk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"70": [
|
||||||
|
{
|
||||||
|
"name": "reason",
|
||||||
|
"type": "byte"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gameMode",
|
||||||
|
"type": "byte"
|
||||||
|
}
|
||||||
|
],
|
||||||
"103": [
|
"103": [
|
||||||
{
|
{
|
||||||
"name": "windowId",
|
"name": "windowId",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user