UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

83 lines (82 loc) 6.61 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require_runtime = require("../../_virtual/_rolldown/runtime.cjs.cjs"); let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils"); _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1); //#region src/network/packet/DataPacket.ts var PID_MASK = 1023; var SENDER_SHIFT = 10; var RECEIVER_SHIFT = 12; var SUBCLIENT_MASK = 3; /** * The base class for all packets. * @class * @public */ var DataPacket = class extends _jsprismarine_jsbinaryutils.default { /** * The packet's network ID. */ static NetID; encoded = false; senderSubId = 0; receiverSubId = 0; constructor(buffer) { super(buffer, 0); } getBuffer() { return super.getBuffer(); } getId() { return this.constructor.NetID; } getEncoded() { return this.encoded; } /** * Get the DataPacket's name. * * @returns The packet's name */ getName() { return this.constructor.name; } decode() { this.decodeHeader(); this.decodePayload(); this.encoded = true; } decodeHeader() { const header = this.readUnsignedVarInt(); const pid = header & PID_MASK; if (pid !== this.getId()) throw new Error(`Packet ID must be ${this.getId()}, got ${pid}`); this.senderSubId = header >> SENDER_SHIFT & SUBCLIENT_MASK; this.receiverSubId = header >> RECEIVER_SHIFT & SUBCLIENT_MASK; } /** * Decode the packet from a network serialized buffer. */ decodePayload() {} encode() { this.clear(); this.encodeHeader(); this.encodePayload(); this.encoded = true; } encodeHeader() { this.writeUnsignedVarInt(this.getId() | this.senderSubId << SENDER_SHIFT | this.receiverSubId << RECEIVER_SHIFT); } /** * Encode the packet to a network serialized buffer. */ encodePayload() {} getAllowBatching() { return this.allowBatching; } }; //#endregion exports.default = DataPacket; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVBhY2tldC5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXR3b3JrL3BhY2tldC9EYXRhUGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcblxuY29uc3QgUElEX01BU0sgPSAweDNmZjtcbmNvbnN0IFNFTkRFUl9TSElGVCA9IDEwO1xuY29uc3QgUkVDRUlWRVJfU0hJRlQgPSAxMjtcbmNvbnN0IFNVQkNMSUVOVF9NQVNLID0gMHgwMztcblxuLyoqXG4gKiBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIHBhY2tldHMuXG4gKiBAY2xhc3NcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YVBhY2tldCBleHRlbmRzIEJpbmFyeVN0cmVhbSB7XG4gICAgLyoqXG4gICAgICogVGhlIHBhY2tldCdzIG5ldHdvcmsgSUQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBOZXRJRDogbnVtYmVyO1xuXG4gICAgcHJpdmF0ZSBlbmNvZGVkID0gZmFsc2U7XG5cbiAgICAvLyBTcGxpdCBzY3JlZW5cbiAgICBwcml2YXRlIHNlbmRlclN1YklkID0gMDtcbiAgICBwcml2YXRlIHJlY2VpdmVyU3ViSWQgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoYnVmZmVyPzogQnVmZmVyKSB7XG4gICAgICAgIHN1cGVyKGJ1ZmZlciwgMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ1ZmZlcigpOiBCdWZmZXIge1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QnVmZmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLk5ldElEO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbmNvZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmNvZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgRGF0YVBhY2tldCdzIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgcGFja2V0J3MgbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWNvZGVIZWFkZXIoKTtcbiAgICAgICAgdGhpcy5kZWNvZGVQYXlsb2FkKCk7XG5cbiAgICAgICAgLy8gTWFyayBhbGwgdGhlIHBhY2tldHMgc2VudCBieSB0aGUgY2xpZW50XG4gICAgICAgIC8vIGFzIGVuY29kZWQsIGJlY2F1c2UgdGhleSBoYXZlIGFsbCB0aGUgcHJvcGVydGllc1xuICAgICAgICAvLyBhbmQgYSBidWZmZXIgKGxpa2UgYSBtYW51YWxseSBlbmNvZGVkIHBhY2tldCkuXG4gICAgICAgIHRoaXMuZW5jb2RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZUhlYWRlcigpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5yZWFkVW5zaWduZWRWYXJJbnQoKTtcblxuICAgICAgICBjb25zdCBwaWQgPSBoZWFkZXIgJiBQSURfTUFTSztcbiAgICAgICAgaWYgKHBpZCAhPT0gdGhpcy5nZXRJZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhY2tldCBJRCBtdXN0IGJlICR7dGhpcy5nZXRJZCgpfSwgZ290ICR7cGlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZW5kZXJTdWJJZCA9IChoZWFkZXIgPj4gU0VOREVSX1NISUZUKSAmIFNVQkNMSUVOVF9NQVNLO1xuICAgICAgICB0aGlzLnJlY2VpdmVyU3ViSWQgPSAoaGVhZGVyID4+IFJFQ0VJVkVSX1NISUZUKSAmIFNVQkNMSUVOVF9NQVNLO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY29kZSB0aGUgcGFja2V0IGZyb20gYSBuZXR3b3JrIHNlcmlhbGl6ZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNvZGVQYXlsb2FkKCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBlbmNvZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTsgLy8gV2UgbWlnaHQgbm90IHdhbnQgdG8gYWN0dWFsbHkgY2xlYXIgdGhlIGJ1ZmZlciBoZXJlLlxuICAgICAgICB0aGlzLmVuY29kZUhlYWRlcigpO1xuICAgICAgICB0aGlzLmVuY29kZVBheWxvYWQoKTtcbiAgICAgICAgdGhpcy5lbmNvZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5jb2RlSGVhZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoXG4gICAgICAgICAgICB0aGlzLmdldElkKCkgfCAodGhpcy5zZW5kZXJTdWJJZCA8PCBTRU5ERVJfU0hJRlQpIHwgKHRoaXMucmVjZWl2ZXJTdWJJZCA8PCBSRUNFSVZFUl9TSElGVClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmNvZGUgdGhlIHBhY2tldCB0byBhIG5ldHdvcmsgc2VyaWFsaXplZCBidWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIGVuY29kZVBheWxvYWQoKTogdm9pZCB7fVxuXG4gICAgcHVibGljIGdldEFsbG93QmF0Y2hpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLmFsbG93QmF0Y2hpbmc7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxJQUFNLFdBQVc7QUFDakIsSUFBTSxlQUFlO0FBQ3JCLElBQU0saUJBQWlCO0FBQ3ZCLElBQU0saUJBQWlCOzs7Ozs7QUFPdkIsSUFBcUIsYUFBckIsY0FBd0MsNEJBQUEsUUFBYTs7OztDQUlqRCxPQUFjO0NBRWQsVUFBa0I7Q0FHbEIsY0FBc0I7Q0FDdEIsZ0JBQXdCO0NBRXhCLFlBQVksUUFBaUI7RUFDekIsTUFBTSxRQUFRLENBQUM7Q0FDbkI7Q0FFQSxZQUEyQjtFQUN2QixPQUFPLE1BQU0sVUFBVTtDQUMzQjtDQUVBLFFBQXVCO0VBQ25CLE9BQVEsS0FBSyxZQUFvQjtDQUNyQztDQUVBLGFBQTZCO0VBQ3pCLE9BQU8sS0FBSztDQUNoQjs7Ozs7O0NBT0EsVUFBeUI7RUFDckIsT0FBTyxLQUFLLFlBQVk7Q0FDNUI7Q0FFQSxTQUFzQjtFQUNsQixLQUFLLGFBQWE7RUFDbEIsS0FBSyxjQUFjO0VBS25CLEtBQUssVUFBVTtDQUNuQjtDQUVBLGVBQXNCO0VBQ2xCLE1BQU0sU0FBUyxLQUFLLG1CQUFtQjtFQUV2QyxNQUFNLE1BQU0sU0FBUztFQUNyQixJQUFJLFFBQVEsS0FBSyxNQUFNLEdBQ25CLE1BQU0sSUFBSSxNQUFNLHFCQUFxQixLQUFLLE1BQU0sRUFBRSxRQUFRLEtBQUs7RUFHbkUsS0FBSyxjQUFlLFVBQVUsZUFBZ0I7RUFDOUMsS0FBSyxnQkFBaUIsVUFBVSxpQkFBa0I7Q0FDdEQ7Ozs7Q0FLQSxnQkFBNkIsQ0FBQztDQUU5QixTQUFzQjtFQUNsQixLQUFLLE1BQU07RUFDWCxLQUFLLGFBQWE7RUFDbEIsS0FBSyxjQUFjO0VBQ25CLEtBQUssVUFBVTtDQUNuQjtDQUVBLGVBQTRCO0VBQ3hCLEtBQUssb0JBQ0QsS0FBSyxNQUFNLElBQUssS0FBSyxlQUFlLGVBQWlCLEtBQUssaUJBQWlCLGNBQy9FO0NBQ0o7Ozs7Q0FLQSxnQkFBNkIsQ0FBQztDQUU5QixtQkFBbUM7RUFDL0IsT0FBUSxLQUFhO0NBQ3pCO0FBQ0oifQ==