@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
62 lines (61 loc) • 8.21 kB
JavaScript
"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=