UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

62 lines (61 loc) 8.21 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require_runtime = require("../../_virtual/_rolldown/runtime.cjs.cjs"); const require_network_packet_DataPacket = require("./DataPacket.cjs.cjs"); const require_network_packet_NetworkSettingsPacket = require("./NetworkSettingsPacket.cjs.cjs"); const require_network_CompressionProvider = require("../CompressionProvider.cjs.cjs"); let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils"); _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1); let zlib = require("zlib"); zlib = require_runtime.__toESM(zlib, 1); //#region src/network/packet/BatchPacket.ts /** * @internal */ var BatchPacket = class extends require_network_packet_DataPacket.default { static NetID = 254; compressed = true; payload = new _jsprismarine_jsbinaryutils.default(); decodeHeader() { const pid = this.readByte(); if (pid !== this.getId()) throw new Error(`Batch ID mismatch: is ${this.getId()}, got ${pid}`); } decodePayload() { this.payload.write(this.compressed ? require_network_CompressionProvider.CompressionProvider.fromAlgorithmSync(this.readByte())(this.readRemaining()) : this.readRemaining()); } async asyncDecode() { this.decodeHeader(); try { this.payload.write(this.compressed ? await require_network_CompressionProvider.CompressionProvider.fromAlgorithm(this.readByte())(this.readRemaining()) : this.readRemaining()); } catch (error) { throw new Error(`Failed to inflate batched content`, { cause: error }); } return this.getPackets(); } encodeHeader() { this.writeByte(this.getId()); } encodePayload() { if (this.compressed) this.writeByte(require_network_packet_NetworkSettingsPacket.PacketCompressionAlgorithm.ZLIB); this.write(this.compressed ? zlib.default.deflateRawSync(this.payload.getBuffer(), { level: 7 }) : this.payload.getBuffer()); } addPacket(packet) { if (!packet.getEncoded()) packet.encode(); this.payload.writeUnsignedVarInt(packet.getBuffer().byteLength); this.payload.write(packet.getBuffer()); } getPackets() { const stream = new _jsprismarine_jsbinaryutils.default(this.payload.getBuffer()); const packets = []; do packets.push(stream.read(stream.readUnsignedVarInt())); while (!stream.feof()); return packets; } }; //#endregion exports.default = BatchPacket; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0Y2hQYWNrZXQuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9wYWNrZXQvQmF0Y2hQYWNrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IFpsaWIgZnJvbSAnemxpYic7XG5pbXBvcnQgeyBDb21wcmVzc2lvblByb3ZpZGVyIH0gZnJvbSAnLi4vQ29tcHJlc3Npb25Qcm92aWRlci5qcyc7XG5pbXBvcnQgRGF0YVBhY2tldCBmcm9tICcuL0RhdGFQYWNrZXQnO1xuaW1wb3J0IHsgUGFja2V0Q29tcHJlc3Npb25BbGdvcml0aG0gfSBmcm9tICcuL05ldHdvcmtTZXR0aW5nc1BhY2tldC5qcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhdGNoUGFja2V0IGV4dGVuZHMgRGF0YVBhY2tldCB7XG4gICAgcHVibGljIHN0YXRpYyBOZXRJRCA9IDB4ZmU7XG5cbiAgICBwdWJsaWMgY29tcHJlc3NlZCA9IHRydWU7IC8vICBUT0RPOiBiZXR0ZXIgc29sdXRpb25cbiAgICBwcml2YXRlIHBheWxvYWQgPSBuZXcgQmluYXJ5U3RyZWFtKCk7XG4gICAgLy8gQmlnZ2VyIGNvbXByZXNzaW9uIGxldmVsIGxlYWRzIHRvIG1vcmUgQ1BVIHVzYWdlIGFuZCBsZXNzIG5ldHdvcmssIGFuZCB2aWNlIHZlcnNhXG4gICAgLy8gVE9ETzogYmF0Y2guc2V0Q29tcHJlc3Npb25MZXZlbCgpLCBpdCBzaG91bGQgYmUgZGVwZW5kZW50IGZyb20gU2VydmVyIGluc3RhbmNlXG4gICAgLy8gcHJpdmF0ZSByZWFkb25seSBjb21wcmVzc2lvbkxldmVsOiBudW1iZXIgPSBTZXJ2ZXI/Lmluc3RhbmNlPy5nZXRDb25maWcoKS5nZXRQYWNrZXRDb21wcmVzc2lvbkxldmVsKCkgPz8gNztcblxuICAgIHB1YmxpYyBkZWNvZGVIZWFkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBpZCA9IHRoaXMucmVhZEJ5dGUoKTtcbiAgICAgICAgaWYgKHBpZCAhPT0gdGhpcy5nZXRJZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhdGNoIElEIG1pc21hdGNoOiBpcyAke3RoaXMuZ2V0SWQoKX0sIGdvdCAke3BpZH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZWNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBheWxvYWQud3JpdGUoXG4gICAgICAgICAgICB0aGlzLmNvbXByZXNzZWRcbiAgICAgICAgICAgICAgICA/IENvbXByZXNzaW9uUHJvdmlkZXIuZnJvbUFsZ29yaXRobVN5bmModGhpcy5yZWFkQnl0ZSgpKSh0aGlzLnJlYWRSZW1haW5pbmcoKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMucmVhZFJlbWFpbmluZygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFzeW5jRGVjb2RlKCk6IFByb21pc2U8QnVmZmVyW10+IHtcbiAgICAgICAgdGhpcy5kZWNvZGVIZWFkZXIoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wYXlsb2FkLndyaXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHJlc3NlZFxuICAgICAgICAgICAgICAgICAgICA/IGF3YWl0IENvbXByZXNzaW9uUHJvdmlkZXIuZnJvbUFsZ29yaXRobSh0aGlzLnJlYWRCeXRlKCkpKHRoaXMucmVhZFJlbWFpbmluZygpKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucmVhZFJlbWFpbmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5mbGF0ZSBiYXRjaGVkIGNvbnRlbnRgLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFBhY2tldHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5jb2RlSGVhZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlQnl0ZSh0aGlzLmdldElkKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICAvLyB0aGlzLmFwcGVuZChCdWZmZXIuZnJvbShGZmxhdGUuZGVmbGF0ZVN5bmModGhpcy5wYXlsb2FkLCB7IGxldmVsOiA3IH0pKSk7XG4gICAgICAgIC8vIFNlZW1zIGxpa2UgWmxpYiBydW5zIGEgbGl0dGxlIGJpdCBiZXR0ZXIgZm9yIGRlZmxhdGluZywgd2lsbCBzZWUgaW4gZnV0dXJlIHdpdGggYXN5bmMuLi5cbiAgICAgICAgLy8gdGhpcy53cml0ZShabGliLmRlZmxhdGVSYXdTeW5jKHRoaXMucGF5bG9hZC5nZXRCdWZmZXIoKSwgeyBsZXZlbDogNyB9KSk7XG4gICAgICAgIGlmICh0aGlzLmNvbXByZXNzZWQpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVCeXRlKFBhY2tldENvbXByZXNzaW9uQWxnb3JpdGhtLlpMSUIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud3JpdGUoXG4gICAgICAgICAgICB0aGlzLmNvbXByZXNzZWQgPyBabGliLmRlZmxhdGVSYXdTeW5jKHRoaXMucGF5bG9hZC5nZXRCdWZmZXIoKSwgeyBsZXZlbDogNyB9KSA6IHRoaXMucGF5bG9hZC5nZXRCdWZmZXIoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRQYWNrZXQocGFja2V0OiBEYXRhUGFja2V0KTogdm9pZCB7XG4gICAgICAgIGlmICghcGFja2V0LmdldEVuY29kZWQoKSkge1xuICAgICAgICAgICAgcGFja2V0LmVuY29kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYXlsb2FkLndyaXRlVW5zaWduZWRWYXJJbnQocGFja2V0LmdldEJ1ZmZlcigpLmJ5dGVMZW5ndGgpO1xuICAgICAgICB0aGlzLnBheWxvYWQud3JpdGUocGFja2V0LmdldEJ1ZmZlcigpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFja2V0cygpOiBCdWZmZXJbXSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBCaW5hcnlTdHJlYW0odGhpcy5wYXlsb2FkLmdldEJ1ZmZlcigpKTtcbiAgICAgICAgY29uc3QgcGFja2V0czogQnVmZmVyW10gPSBbXTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgLy8gVmFyVWludDogcGFja2V0IGxlbmd0aFxuICAgICAgICAgICAgcGFja2V0cy5wdXNoKHN0cmVhbS5yZWFkKHN0cmVhbS5yZWFkVW5zaWduZWRWYXJJbnQoKSkpO1xuICAgICAgICB9IHdoaWxlICghc3RyZWFtLmZlb2YoKSk7XG4gICAgICAgIHJldHVybiBwYWNrZXRzO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxJQUFxQixjQUFyQixjQUF5QyxrQ0FBQSxRQUFXO0NBQ2hELE9BQWMsUUFBUTtDQUV0QixhQUFvQjtDQUNwQixVQUFrQixJQUFJLDRCQUFBLFFBQWE7Q0FLbkMsZUFBNEI7RUFDeEIsTUFBTSxNQUFNLEtBQUssU0FBUztFQUMxQixJQUFJLFFBQVEsS0FBSyxNQUFNLEdBQ25CLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixLQUFLLE1BQU0sRUFBRSxRQUFRLEtBQUs7Q0FFM0U7Q0FFQSxnQkFBNkI7RUFDekIsS0FBSyxRQUFRLE1BQ1QsS0FBSyxhQUNDLG9DQUFBLG9CQUFvQixrQkFBa0IsS0FBSyxTQUFTLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxJQUMzRSxLQUFLLGNBQWMsQ0FDN0I7Q0FDSjtDQUVBLE1BQWEsY0FBaUM7RUFDMUMsS0FBSyxhQUFhO0VBRWxCLElBQUk7R0FDQSxLQUFLLFFBQVEsTUFDVCxLQUFLLGFBQ0MsTUFBTSxvQ0FBQSxvQkFBb0IsY0FBYyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssY0FBYyxDQUFDLElBQzdFLEtBQUssY0FBYyxDQUM3QjtFQUNKLFNBQVMsT0FBZ0I7R0FDckIsTUFBTSxJQUFJLE1BQU0scUNBQXFDLEVBQUUsT0FBTyxNQUFNLENBQUM7RUFDekU7RUFFQSxPQUFPLEtBQUssV0FBVztDQUMzQjtDQUVBLGVBQTRCO0VBQ3hCLEtBQUssVUFBVSxLQUFLLE1BQU0sQ0FBQztDQUMvQjtDQUVBLGdCQUE2QjtFQUl6QixJQUFJLEtBQUssWUFDTCxLQUFLLFVBQVUsNkNBQUEsMkJBQTJCLElBQUk7RUFFbEQsS0FBSyxNQUNELEtBQUssYUFBYSxLQUFBLFFBQUssZUFBZSxLQUFLLFFBQVEsVUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsVUFBVSxDQUMzRztDQUNKO0NBRUEsVUFBaUIsUUFBMEI7RUFDdkMsSUFBSSxDQUFDLE9BQU8sV0FBVyxHQUNuQixPQUFPLE9BQU87RUFHbEIsS0FBSyxRQUFRLG9CQUFvQixPQUFPLFVBQVUsRUFBRSxVQUFVO0VBQzlELEtBQUssUUFBUSxNQUFNLE9BQU8sVUFBVSxDQUFDO0NBQ3pDO0NBRUEsYUFBOEI7RUFDMUIsTUFBTSxTQUFTLElBQUksNEJBQUEsUUFBYSxLQUFLLFFBQVEsVUFBVSxDQUFDO0VBQ3hELE1BQU0sVUFBb0IsQ0FBQztFQUMzQjtHQUVJLFFBQVEsS0FBSyxPQUFPLEtBQUssT0FBTyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2hELENBQUMsT0FBTyxLQUFLO0VBQ3RCLE9BQU87Q0FDWDtBQUNKIn0=