diff --git a/src/protocol.js b/src/protocol.js index 48c2c0c..5d14349 100644 --- a/src/protocol.js +++ b/src/protocol.js @@ -1095,14 +1095,17 @@ function readBool(buffer, offset) { } function readPosition(buffer, offset) { - var longVal = readLong(buffer, offset).value; // I wish I could do destructuring... - var x = longVal[0] >> 6; - var y = ((longVal[0] & 0x3F) << 6) | ((longVal[1] >> 26) & 0x3f); - var z = longVal[1] & 0x3FFFFFF; - return { - value: { x: x, y: y, z: z }, - size: 8 - }; + var longVal = readLong(buffer, offset).value; // I wish I could do destructuring... + var x = longVal[0] >> 6; + if(x>33554432) x-=67108864; + var y = ((longVal[0] & 0x3F) << 6) | ((longVal[1] >> 26) & 0x3f); + if(y>2048) y-=4096; + var z = longVal[1] & 0x3FFFFFF; + if(z>33554432) z-=67108864; + return { + value: { x: x, y: y, z: z }, + size: 8 + }; } function readSlot(buffer, offset) {