mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-30 22:51:23 -04:00
more numeric types move
This commit is contained in:
parent
6660a3aa39
commit
355a3cb1cd
@ -1,4 +1,13 @@
|
|||||||
module.exports={'byte': [readByte, writeByte, 1]};
|
module.exports={
|
||||||
|
'byte': [readByte, writeByte, 1],
|
||||||
|
'ubyte': [readUByte, writeUByte, 1],
|
||||||
|
'short': [readShort, writeShort, 2],
|
||||||
|
'ushort': [readUShort, writeUShort, 2],
|
||||||
|
'int': [readInt, writeInt, 4],
|
||||||
|
'long': [readLong, writeLong, 8],
|
||||||
|
'float': [readFloat, writeFloat, 4],
|
||||||
|
'double': [readDouble, writeDouble, 8]
|
||||||
|
};
|
||||||
|
|
||||||
function readByte(buffer, offset) {
|
function readByte(buffer, offset) {
|
||||||
if (offset + 1 > buffer.length) return null;
|
if (offset + 1 > buffer.length) return null;
|
||||||
@ -9,8 +18,110 @@ function readByte(buffer, offset) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function writeByte(value, buffer, offset) {
|
function writeByte(value, buffer, offset) {
|
||||||
buffer.writeInt8(value, offset);
|
buffer.writeInt8(value, offset);
|
||||||
return offset + 1;
|
return offset + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readUByte(buffer, offset) {
|
||||||
|
if (offset + 1 > buffer.length) return null;
|
||||||
|
var value = buffer.readUInt8(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 1,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeUByte(value, buffer, offset) {
|
||||||
|
buffer.writeUInt8(value, offset);
|
||||||
|
return offset + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function readFloat(buffer, offset) {
|
||||||
|
if (offset + 4 > buffer.length) return null;
|
||||||
|
var value = buffer.readFloatBE(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 4,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeFloat(value, buffer, offset) {
|
||||||
|
buffer.writeFloatBE(value, offset);
|
||||||
|
return offset + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
function readDouble(buffer, offset) {
|
||||||
|
if (offset + 8 > buffer.length) return null;
|
||||||
|
var value = buffer.readDoubleBE(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 8,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeDouble(value, buffer, offset) {
|
||||||
|
buffer.writeDoubleBE(value, offset);
|
||||||
|
return offset + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function readShort(buffer, offset) {
|
||||||
|
if (offset + 2 > buffer.length) return null;
|
||||||
|
var value = buffer.readInt16BE(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 2,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function writeShort(value, buffer, offset) {
|
||||||
|
buffer.writeInt16BE(value, offset);
|
||||||
|
return offset + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
function readUShort(buffer, offset) {
|
||||||
|
if (offset + 2 > buffer.length) return null;
|
||||||
|
var value = buffer.readUInt16BE(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 2,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeUShort(value, buffer, offset) {
|
||||||
|
buffer.writeUInt16BE(value, offset);
|
||||||
|
return offset + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
function readInt(buffer, offset) {
|
||||||
|
if (offset + 4 > buffer.length) return null;
|
||||||
|
var value = buffer.readInt32BE(offset);
|
||||||
|
return {
|
||||||
|
value: value,
|
||||||
|
size: 4,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeInt(value, buffer, offset) {
|
||||||
|
buffer.writeInt32BE(value, offset);
|
||||||
|
return offset + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function readLong(buffer, offset) {
|
||||||
|
if (offset + 8 > buffer.length) return null;
|
||||||
|
return {
|
||||||
|
value: [buffer.readInt32BE(offset), buffer.readInt32BE(offset + 4)],
|
||||||
|
size: 8,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeLong(value, buffer, offset) {
|
||||||
|
buffer.writeInt32BE(value[0], offset);
|
||||||
|
buffer.writeInt32BE(value[1], offset + 4);
|
||||||
|
return offset + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
120
src/protocol.js
120
src/protocol.js
@ -56,14 +56,14 @@ var numeric=require("./datatypes/numeric");
|
|||||||
|
|
||||||
var types = {
|
var types = {
|
||||||
'byte': numeric.byte,
|
'byte': numeric.byte,
|
||||||
'ubyte': [readUByte, writeUByte, 1],
|
'ubyte':numeric.ubyte,
|
||||||
'short': [readShort, writeShort, 2],
|
'short': numeric.short,
|
||||||
'ushort': [readUShort, writeUShort, 2],
|
'ushort': numeric.ushort,
|
||||||
'int': [readInt, writeInt, 4],
|
'int': numeric.int,
|
||||||
'long': [readLong, writeLong, 8],
|
'long': numeric.long,
|
||||||
'varint': [readVarInt, writeVarInt, sizeOfVarInt],
|
'varint': [readVarInt, writeVarInt, sizeOfVarInt],
|
||||||
'float': [readFloat, writeFloat, 4],
|
'float': numeric.float,
|
||||||
'double': [readDouble, writeDouble, 8],
|
'double': numeric.double,
|
||||||
'bool': [readBool, writeBool, 1],
|
'bool': [readBool, writeBool, 1],
|
||||||
'string': [readString, writeString, sizeOfString],
|
'string': [readString, writeString, sizeOfString],
|
||||||
'ustring': [readString, writeString, sizeOfUString], // TODO : remove ustring
|
'ustring': [readString, writeString, sizeOfUString], // TODO : remove ustring
|
||||||
@ -263,70 +263,6 @@ function readUUID(buffer, offset) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function readShort(buffer, offset) {
|
|
||||||
if (offset + 2 > buffer.length) return null;
|
|
||||||
var value = buffer.readInt16BE(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 2,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readUShort(buffer, offset) {
|
|
||||||
if (offset + 2 > buffer.length) return null;
|
|
||||||
var value = buffer.readUInt16BE(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 2,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readInt(buffer, offset) {
|
|
||||||
if (offset + 4 > buffer.length) return null;
|
|
||||||
var value = buffer.readInt32BE(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 4,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readFloat(buffer, offset) {
|
|
||||||
if (offset + 4 > buffer.length) return null;
|
|
||||||
var value = buffer.readFloatBE(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 4,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readDouble(buffer, offset) {
|
|
||||||
if (offset + 8 > buffer.length) return null;
|
|
||||||
var value = buffer.readDoubleBE(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 8,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readLong(buffer, offset) {
|
|
||||||
if (offset + 8 > buffer.length) return null;
|
|
||||||
return {
|
|
||||||
value: [buffer.readInt32BE(offset), buffer.readInt32BE(offset + 4)],
|
|
||||||
size: 8,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function readUByte(buffer, offset) {
|
|
||||||
if (offset + 1 > buffer.length) return null;
|
|
||||||
var value = buffer.readUInt8(offset);
|
|
||||||
return {
|
|
||||||
value: value,
|
|
||||||
size: 1,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function readBool(buffer, offset) {
|
function readBool(buffer, offset) {
|
||||||
if (offset + 1 > buffer.length) return null;
|
if (offset + 1 > buffer.length) return null;
|
||||||
var value = buffer.readInt8(offset);
|
var value = buffer.readInt8(offset);
|
||||||
@ -337,7 +273,7 @@ function readBool(buffer, offset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function readPosition(buffer, offset) {
|
function readPosition(buffer, offset) {
|
||||||
var longVal = readLong(buffer, offset).value;
|
var longVal = numeric.long[0](buffer, offset).value;
|
||||||
var x = signExtend26(longVal[0] >> 6);
|
var x = signExtend26(longVal[0] >> 6);
|
||||||
var y = signExtend12(((longVal[0] & 0x3f) << 6) | ((longVal[1] >> 26) & 0x3f));
|
var y = signExtend12(((longVal[0] & 0x3f) << 6) | ((longVal[1] >> 26) & 0x3f));
|
||||||
var z = signExtend26(longVal[1] & 0x3FFFFFF);
|
var z = signExtend26(longVal[1] & 0x3FFFFFF);
|
||||||
@ -357,7 +293,7 @@ function signExtend12(value) {
|
|||||||
|
|
||||||
function readSlot(buffer, offset) {
|
function readSlot(buffer, offset) {
|
||||||
var value = {};
|
var value = {};
|
||||||
var results = readShort(buffer, offset);
|
var results = numeric.short[0](buffer, offset);
|
||||||
if (! results) return null;
|
if (! results) return null;
|
||||||
value.blockId = results.value;
|
value.blockId = results.value;
|
||||||
|
|
||||||
@ -401,7 +337,7 @@ function writePosition(value, buffer, offset) {
|
|||||||
var longVal = [];
|
var longVal = [];
|
||||||
longVal[0] = ((value.x & 0x3FFFFFF) << 6) | ((value.y & 0xFFF) >> 6);
|
longVal[0] = ((value.x & 0x3FFFFFF) << 6) | ((value.y & 0xFFF) >> 6);
|
||||||
longVal[1] = ((value.y & 0x3F) << 26) | (value.z & 0x3FFFFFF);
|
longVal[1] = ((value.y & 0x3F) << 26) | (value.z & 0x3FFFFFF);
|
||||||
return writeLong(longVal, buffer, offset);
|
return numeric.long[1](longVal, buffer, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeSlot(value, buffer, offset) {
|
function writeSlot(value, buffer, offset) {
|
||||||
@ -448,42 +384,6 @@ function writeBool(value, buffer, offset) {
|
|||||||
return offset + 1;
|
return offset + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeUByte(value, buffer, offset) {
|
|
||||||
buffer.writeUInt8(value, offset);
|
|
||||||
return offset + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeFloat(value, buffer, offset) {
|
|
||||||
buffer.writeFloatBE(value, offset);
|
|
||||||
return offset + 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeDouble(value, buffer, offset) {
|
|
||||||
buffer.writeDoubleBE(value, offset);
|
|
||||||
return offset + 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeShort(value, buffer, offset) {
|
|
||||||
buffer.writeInt16BE(value, offset);
|
|
||||||
return offset + 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeUShort(value, buffer, offset) {
|
|
||||||
buffer.writeUInt16BE(value, offset);
|
|
||||||
return offset + 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeInt(value, buffer, offset) {
|
|
||||||
buffer.writeInt32BE(value, offset);
|
|
||||||
return offset + 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeLong(value, buffer, offset) {
|
|
||||||
buffer.writeInt32BE(value[0], offset);
|
|
||||||
buffer.writeInt32BE(value[1], offset + 4);
|
|
||||||
return offset + 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
function readVarInt(buffer, offset) {
|
function readVarInt(buffer, offset) {
|
||||||
var result = 0;
|
var result = 0;
|
||||||
var shift = 0;
|
var shift = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user