@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
80 lines (79 loc) • 8.75 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
require("../_virtual/_rolldown/runtime.cjs.cjs");
const require_world_BlockPosition = require("../world/BlockPosition.cjs.cjs");
let _jsprismarine_math = require("@jsprismarine/math");
//#region src/network/NetworkUtil.ts
var NetworkUtil = class NetworkUtil {
static readString(stream) {
const length = stream.readUnsignedVarInt();
return stream.read(length).toString("utf-8");
}
static writeString(stream, str) {
const buffer = Buffer.from(str, "utf-8");
stream.writeUnsignedVarInt(buffer.byteLength);
stream.write(buffer);
}
static readLELengthASCIIString(stream) {
const strLen = stream.readUnsignedIntLE();
return stream.read(strLen).toString("ascii");
}
static writeLELengthASCIIString(stream, str) {
const buf = Buffer.from(str, "ascii");
stream.writeUnsignedIntLE(buf.byteLength);
stream.write(buf);
}
/**
* Serialize a `Vector3` instance into a `BinaryStream`.
* @param {BinaryStream} stream - The network stream.
* @param {Vector3} vec - The vector to serialize.
*/
static writeVector3(stream, vec) {
if (!vec) {
NetworkUtil.writeVector3(stream, _jsprismarine_math.Vector3.ZERO);
return;
}
stream.writeFloatLE(vec.getX());
stream.writeFloatLE(vec.getY());
stream.writeFloatLE(vec.getZ());
}
/**
* Deserialize a `Vector3` from a `BinaryStream`.
* @param {BinaryStream} stream - The network stream.
* @returns {Vector3} The deserialized `Vector3`.
*/
static readVector3(stream) {
return new _jsprismarine_math.Vector3(stream.readFloatLE(), stream.readFloatLE(), stream.readFloatLE());
}
/**
* Serialize a `BlockPosition` instance into a `BinaryStream`.
* @param {BinaryStream} stream - The network stream.
* @param {BlockPosition} pos - The block position to serialize.
*/
static writeBlockPosition(stream, pos) {
stream.writeVarInt(pos.getX());
stream.writeVarInt(pos.getY());
stream.writeVarInt(pos.getZ());
}
/**
* Serialize a `BlockPosition` instance into a `BinaryStream`.
* @param {BinaryStream} stream - The network stream.
* @param {BlockPosition} pos - The block position to serialize.
*/
static writeUnsignedBlockPosition(stream, pos) {
stream.writeVarInt(pos.getX());
stream.writeUnsignedVarInt(pos.getY());
stream.writeVarInt(pos.getZ());
}
/**
* Deserialize a `BlockPosition` from a `BinaryStream`.
* @param {BinaryStream} stream - The network stream.
* @returns {BlockPosition} The deserialized `BlockPosition`.
*/
static readBlockPosition(stream) {
return new require_world_BlockPosition.default(stream.readVarInt(), stream.readUnsignedVarInt(), stream.readVarInt());
}
};
//#endregion
exports.NetworkUtil = NetworkUtil;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1V0aWwuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9OZXR3b3JrVXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICdAanNwcmlzbWFyaW5lL21hdGgnO1xuaW1wb3J0IEJsb2NrUG9zaXRpb24gZnJvbSAnLi4vd29ybGQvQmxvY2tQb3NpdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrVXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkU3RyaW5nKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpO1xuICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQobGVuZ3RoKS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyB3cml0ZVN0cmluZyhzdHJlYW06IEJpbmFyeVN0cmVhbSwgc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc3RyLCAndXRmLTgnKTtcbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICBzdHJlYW0ud3JpdGUoYnVmZmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRMRUxlbmd0aEFTQ0lJU3RyaW5nKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc3RyTGVuID0gc3RyZWFtLnJlYWRVbnNpZ25lZEludExFKCk7XG4gICAgICAgIGNvbnN0IHN0ciA9IHN0cmVhbS5yZWFkKHN0ckxlbikudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgd3JpdGVMRUxlbmd0aEFTQ0lJU3RyaW5nKHN0cmVhbTogQmluYXJ5U3RyZWFtLCBzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShzdHIsICdhc2NpaScpO1xuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZEludExFKGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgc3RyZWFtLndyaXRlKGJ1Zik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplIGEgYFZlY3RvcjNgIGluc3RhbmNlIGludG8gYSBgQmluYXJ5U3RyZWFtYC5cbiAgICAgKiBAcGFyYW0ge0JpbmFyeVN0cmVhbX0gc3RyZWFtIC0gVGhlIG5ldHdvcmsgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7VmVjdG9yM30gdmVjIC0gVGhlIHZlY3RvciB0byBzZXJpYWxpemUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB3cml0ZVZlY3RvcjMoc3RyZWFtOiBCaW5hcnlTdHJlYW0sIHZlYzogVmVjdG9yMyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2ZWMpIHtcbiAgICAgICAgICAgIE5ldHdvcmtVdGlsLndyaXRlVmVjdG9yMyhzdHJlYW0sIFZlY3RvcjMuWkVSTyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHZlYy5nZXRYKCkpO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHZlYy5nZXRZKCkpO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHZlYy5nZXRaKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6ZSBhIGBWZWN0b3IzYCBmcm9tIGEgYEJpbmFyeVN0cmVhbWAuXG4gICAgICogQHBhcmFtIHtCaW5hcnlTdHJlYW19IHN0cmVhbSAtIFRoZSBuZXR3b3JrIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJucyB7VmVjdG9yM30gVGhlIGRlc2VyaWFsaXplZCBgVmVjdG9yM2AuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkVmVjdG9yMyhzdHJlYW06IEJpbmFyeVN0cmVhbSk6IFZlY3RvcjMge1xuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcjMoc3RyZWFtLnJlYWRGbG9hdExFKCksIHN0cmVhbS5yZWFkRmxvYXRMRSgpLCBzdHJlYW0ucmVhZEZsb2F0TEUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplIGEgYEJsb2NrUG9zaXRpb25gIGluc3RhbmNlIGludG8gYSBgQmluYXJ5U3RyZWFtYC5cbiAgICAgKiBAcGFyYW0ge0JpbmFyeVN0cmVhbX0gc3RyZWFtIC0gVGhlIG5ldHdvcmsgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7QmxvY2tQb3NpdGlvbn0gcG9zIC0gVGhlIGJsb2NrIHBvc2l0aW9uIHRvIHNlcmlhbGl6ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHdyaXRlQmxvY2tQb3NpdGlvbihzdHJlYW06IEJpbmFyeVN0cmVhbSwgcG9zOiBCbG9ja1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHN0cmVhbS53cml0ZVZhckludChwb3MuZ2V0WCgpKTtcbiAgICAgICAgc3RyZWFtLndyaXRlVmFySW50KHBvcy5nZXRZKCkpO1xuICAgICAgICBzdHJlYW0ud3JpdGVWYXJJbnQocG9zLmdldFooKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZSBhIGBCbG9ja1Bvc2l0aW9uYCBpbnN0YW5jZSBpbnRvIGEgYEJpbmFyeVN0cmVhbWAuXG4gICAgICogQHBhcmFtIHtCaW5hcnlTdHJlYW19IHN0cmVhbSAtIFRoZSBuZXR3b3JrIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge0Jsb2NrUG9zaXRpb259IHBvcyAtIFRoZSBibG9jayBwb3NpdGlvbiB0byBzZXJpYWxpemUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB3cml0ZVVuc2lnbmVkQmxvY2tQb3NpdGlvbihzdHJlYW06IEJpbmFyeVN0cmVhbSwgcG9zOiBCbG9ja1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHN0cmVhbS53cml0ZVZhckludChwb3MuZ2V0WCgpKTtcbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQocG9zLmdldFkoKSk7XG4gICAgICAgIHN0cmVhbS53cml0ZVZhckludChwb3MuZ2V0WigpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVzZXJpYWxpemUgYSBgQmxvY2tQb3NpdGlvbmAgZnJvbSBhIGBCaW5hcnlTdHJlYW1gLlxuICAgICAqIEBwYXJhbSB7QmluYXJ5U3RyZWFtfSBzdHJlYW0gLSBUaGUgbmV0d29yayBzdHJlYW0uXG4gICAgICogQHJldHVybnMge0Jsb2NrUG9zaXRpb259IFRoZSBkZXNlcmlhbGl6ZWQgYEJsb2NrUG9zaXRpb25gLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZEJsb2NrUG9zaXRpb24oc3RyZWFtOiBCaW5hcnlTdHJlYW0pOiBWZWN0b3IzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1Bvc2l0aW9uKHN0cmVhbS5yZWFkVmFySW50KCksIHN0cmVhbS5yZWFkVW5zaWduZWRWYXJJbnQoKSwgc3RyZWFtLnJlYWRWYXJJbnQoKSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxJQUFhLGNBQWIsTUFBYSxZQUFZO0NBQ3JCLE9BQWMsV0FBVyxRQUE4QjtFQUNuRCxNQUFNLFNBQVMsT0FBTyxtQkFBbUI7RUFDekMsT0FBTyxPQUFPLEtBQUssTUFBTSxFQUFFLFNBQVMsT0FBTztDQUMvQztDQUNBLE9BQWMsWUFBWSxRQUFzQixLQUFtQjtFQUMvRCxNQUFNLFNBQVMsT0FBTyxLQUFLLEtBQUssT0FBTztFQUN2QyxPQUFPLG9CQUFvQixPQUFPLFVBQVU7RUFDNUMsT0FBTyxNQUFNLE1BQU07Q0FDdkI7Q0FFQSxPQUFjLHdCQUF3QixRQUE4QjtFQUNoRSxNQUFNLFNBQVMsT0FBTyxrQkFBa0I7RUFFeEMsT0FEWSxPQUFPLEtBQUssTUFBTSxFQUFFLFNBQVMsT0FDbEM7Q0FDWDtDQUNBLE9BQWMseUJBQXlCLFFBQXNCLEtBQW1CO0VBQzVFLE1BQU0sTUFBTSxPQUFPLEtBQUssS0FBSyxPQUFPO0VBQ3BDLE9BQU8sbUJBQW1CLElBQUksVUFBVTtFQUN4QyxPQUFPLE1BQU0sR0FBRztDQUNwQjs7Ozs7O0NBT0EsT0FBYyxhQUFhLFFBQXNCLEtBQTJCO0VBQ3hFLElBQUksQ0FBQyxLQUFLO0dBQ04sWUFBWSxhQUFhLFFBQVEsbUJBQUEsUUFBUSxJQUFJO0dBQzdDO0VBQ0o7RUFFQSxPQUFPLGFBQWEsSUFBSSxLQUFLLENBQUM7RUFDOUIsT0FBTyxhQUFhLElBQUksS0FBSyxDQUFDO0VBQzlCLE9BQU8sYUFBYSxJQUFJLEtBQUssQ0FBQztDQUNsQzs7Ozs7O0NBTUEsT0FBYyxZQUFZLFFBQStCO0VBQ3JELE9BQU8sSUFBSSxtQkFBQSxRQUFRLE9BQU8sWUFBWSxHQUFHLE9BQU8sWUFBWSxHQUFHLE9BQU8sWUFBWSxDQUFDO0NBQ3ZGOzs7Ozs7Q0FPQSxPQUFjLG1CQUFtQixRQUFzQixLQUEwQjtFQUM3RSxPQUFPLFlBQVksSUFBSSxLQUFLLENBQUM7RUFDN0IsT0FBTyxZQUFZLElBQUksS0FBSyxDQUFDO0VBQzdCLE9BQU8sWUFBWSxJQUFJLEtBQUssQ0FBQztDQUNqQzs7Ozs7O0NBTUEsT0FBYywyQkFBMkIsUUFBc0IsS0FBMEI7RUFDckYsT0FBTyxZQUFZLElBQUksS0FBSyxDQUFDO0VBQzdCLE9BQU8sb0JBQW9CLElBQUksS0FBSyxDQUFDO0VBQ3JDLE9BQU8sWUFBWSxJQUFJLEtBQUssQ0FBQztDQUNqQzs7Ozs7O0NBTUEsT0FBYyxrQkFBa0IsUUFBK0I7RUFDM0QsT0FBTyxJQUFJLDRCQUFBLFFBQWMsT0FBTyxXQUFXLEdBQUcsT0FBTyxtQkFBbUIsR0FBRyxPQUFPLFdBQVcsQ0FBQztDQUNsRztBQUNKIn0=