UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

80 lines (79 loc) 8.75 kB
"use strict"; 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=