@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
83 lines (82 loc) • 6.61 kB
JavaScript
;
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==