UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

55 lines (54 loc) 6.69 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); require("../_virtual/_rolldown/runtime.cjs.cjs"); const require_network_packet_BatchPacket = require("./packet/BatchPacket.cjs.cjs"); let _jsprismarine_raknet = require("@jsprismarine/raknet"); //#region src/network/MinecraftSession.ts /** * Act as the first connection layer, handles everything related to batching, * queuing and encrypting of Minecraft packets in a hypotetical session. * TODO: implement ticking, batching, queues, encryption. */ var MinecraftSession = class { logger; rakSession; constructor(session, logger) { this.logger = logger; this.rakSession = session; } sendBatch(batch, direct = true) { batch.encode(); const sendPacket = new _jsprismarine_raknet.Protocol.Frame(); sendPacket.reliability = _jsprismarine_raknet.Protocol.FrameReliability.RELIABLE_ORDERED; sendPacket.orderChannel = 0; sendPacket.content = batch.getBuffer(); this.rakSession.sendFrame(sendPacket, direct ? _jsprismarine_raknet.ConnectionPriority.IMMEDIATE : _jsprismarine_raknet.ConnectionPriority.NORMAL); } async sendDataPacket(packet, comp = true, direct = false) { const batch = new require_network_packet_BatchPacket.default(); try { batch.addPacket(packet); batch.compressed = comp; batch.encode(); } catch (error) { this.logger.error(error); this.logger.warn(`Packet §b${packet.constructor.name}§r to §b${this.rakSession.getAddress().toToken()}§r failed with: ${error.message}`); return; } const sendPacket = new _jsprismarine_raknet.Protocol.Frame(); sendPacket.reliability = _jsprismarine_raknet.Protocol.FrameReliability.RELIABLE_ORDERED; sendPacket.orderChannel = 0; sendPacket.content = batch.getBuffer(); this.rakSession.sendFrame(sendPacket, direct ? _jsprismarine_raknet.ConnectionPriority.IMMEDIATE : _jsprismarine_raknet.ConnectionPriority.NORMAL); this.logger.silly(`Sent §b${packet.constructor.name}§r packet`); } forceDisconnect() { this.rakSession.disconnect(); } }; //#endregion exports.default = MinecraftSession; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluZWNyYWZ0U2Vzc2lvbi5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL01pbmVjcmFmdFNlc3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMb2dnZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7IFJha05ldFNlc3Npb24gfSBmcm9tICdAanNwcmlzbWFyaW5lL3Jha25ldCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uUHJpb3JpdHksIFByb3RvY29sIH0gZnJvbSAnQGpzcHJpc21hcmluZS9yYWtuZXQnO1xuaW1wb3J0IHR5cGUgeyBEYXRhUGFja2V0IH0gZnJvbSAnLi9QYWNrZXRzJztcbmltcG9ydCB7IEJhdGNoUGFja2V0IH0gZnJvbSAnLi9QYWNrZXRzJztcblxuLyoqXG4gKiBBY3QgYXMgdGhlIGZpcnN0IGNvbm5lY3Rpb24gbGF5ZXIsIGhhbmRsZXMgZXZlcnl0aGluZyByZWxhdGVkIHRvIGJhdGNoaW5nLFxuICogcXVldWluZyBhbmQgZW5jcnlwdGluZyBvZiBNaW5lY3JhZnQgcGFja2V0cyBpbiBhIGh5cG90ZXRpY2FsIHNlc3Npb24uXG4gKiBUT0RPOiBpbXBsZW1lbnQgdGlja2luZywgYmF0Y2hpbmcsIHF1ZXVlcywgZW5jcnlwdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWluZWNyYWZ0U2Vzc2lvbiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJha1Nlc3Npb246IFJha05ldFNlc3Npb247XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHNlc3Npb246IFJha05ldFNlc3Npb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5yYWtTZXNzaW9uID0gc2Vzc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZEJhdGNoKGJhdGNoOiBCYXRjaFBhY2tldCwgZGlyZWN0ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBiYXRjaC5lbmNvZGUoKTtcbiAgICAgICAgY29uc3Qgc2VuZFBhY2tldCA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICBzZW5kUGFja2V0LnJlbGlhYmlsaXR5ID0gUHJvdG9jb2wuRnJhbWVSZWxpYWJpbGl0eS5SRUxJQUJMRV9PUkRFUkVEO1xuICAgICAgICBzZW5kUGFja2V0Lm9yZGVyQ2hhbm5lbCA9IDA7XG4gICAgICAgIHNlbmRQYWNrZXQuY29udGVudCA9IGJhdGNoLmdldEJ1ZmZlcigpO1xuXG4gICAgICAgIHRoaXMucmFrU2Vzc2lvbi5zZW5kRnJhbWUoc2VuZFBhY2tldCwgZGlyZWN0ID8gQ29ubmVjdGlvblByaW9yaXR5LklNTUVESUFURSA6IENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kRGF0YVBhY2tldDxUIGV4dGVuZHMgRGF0YVBhY2tldD4ocGFja2V0OiBULCBjb21wID0gdHJ1ZSwgZGlyZWN0ID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSBuZXcgQmF0Y2hQYWNrZXQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJhdGNoLmFkZFBhY2tldChwYWNrZXQpO1xuICAgICAgICAgICAgYmF0Y2guY29tcHJlc3NlZCA9IGNvbXA7XG4gICAgICAgICAgICBiYXRjaC5lbmNvZGUoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgICAgICAgICAgYFBhY2tldCDCp2Ike3BhY2tldC5jb25zdHJ1Y3Rvci5uYW1lfcKnciB0byDCp2Ike3RoaXMucmFrU2Vzc2lvblxuICAgICAgICAgICAgICAgICAgICAuZ2V0QWRkcmVzcygpXG4gICAgICAgICAgICAgICAgICAgIC50b1Rva2VuKCl9wqdyIGZhaWxlZCB3aXRoOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHRoaXMgaW4gcmFrbmV0XG4gICAgICAgIGNvbnN0IHNlbmRQYWNrZXQgPSBuZXcgUHJvdG9jb2wuRnJhbWUoKTtcbiAgICAgICAgc2VuZFBhY2tldC5yZWxpYWJpbGl0eSA9IFByb3RvY29sLkZyYW1lUmVsaWFiaWxpdHkuUkVMSUFCTEVfT1JERVJFRDtcbiAgICAgICAgc2VuZFBhY2tldC5vcmRlckNoYW5uZWwgPSAwO1xuICAgICAgICBzZW5kUGFja2V0LmNvbnRlbnQgPSBiYXRjaC5nZXRCdWZmZXIoKTtcblxuICAgICAgICB0aGlzLnJha1Nlc3Npb24uc2VuZEZyYW1lKHNlbmRQYWNrZXQsIGRpcmVjdCA/IENvbm5lY3Rpb25Qcmlvcml0eS5JTU1FRElBVEUgOiBDb25uZWN0aW9uUHJpb3JpdHkuTk9STUFMKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuc2lsbHkoYFNlbnQgwqdiJHtwYWNrZXQuY29uc3RydWN0b3IubmFtZX3Cp3IgcGFja2V0YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcmNlRGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yYWtTZXNzaW9uLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBV0EsSUFBcUIsbUJBQXJCLE1BQXNDO0NBS2I7Q0FKckI7Q0FFQSxZQUNJLFNBQ0EsUUFDRjtFQURtQixLQUFBLFNBQUE7RUFFakIsS0FBSyxhQUFhO0NBQ3RCO0NBRUEsVUFBaUIsT0FBb0IsU0FBUyxNQUFZO0VBQ3RELE1BQU0sT0FBTztFQUNiLE1BQU0sYUFBYSxJQUFJLHFCQUFBLFNBQVMsTUFBTTtFQUN0QyxXQUFXLGNBQWMscUJBQUEsU0FBUyxpQkFBaUI7RUFDbkQsV0FBVyxlQUFlO0VBQzFCLFdBQVcsVUFBVSxNQUFNLFVBQVU7RUFFckMsS0FBSyxXQUFXLFVBQVUsWUFBWSxTQUFTLHFCQUFBLG1CQUFtQixZQUFZLHFCQUFBLG1CQUFtQixNQUFNO0NBQzNHO0NBRUEsTUFBYSxlQUFxQyxRQUFXLE9BQU8sTUFBTSxTQUFTLE9BQXNCO0VBQ3JHLE1BQU0sUUFBUSxJQUFJLG1DQUFBLFFBQVk7RUFDOUIsSUFBSTtHQUNBLE1BQU0sVUFBVSxNQUFNO0dBQ3RCLE1BQU0sYUFBYTtHQUNuQixNQUFNLE9BQU87RUFDakIsU0FBUyxPQUFnQjtHQUNyQixLQUFLLE9BQU8sTUFBTSxLQUFLO0dBQ3ZCLEtBQUssT0FBTyxLQUNSLFlBQVksT0FBTyxZQUFZLEtBQUssVUFBVSxLQUFLLFdBQzlDLFdBQVcsRUFDWCxRQUFRLEVBQUUsa0JBQW1CLE1BQWdCLFNBQ3REO0dBQ0E7RUFDSjtFQUdBLE1BQU0sYUFBYSxJQUFJLHFCQUFBLFNBQVMsTUFBTTtFQUN0QyxXQUFXLGNBQWMscUJBQUEsU0FBUyxpQkFBaUI7RUFDbkQsV0FBVyxlQUFlO0VBQzFCLFdBQVcsVUFBVSxNQUFNLFVBQVU7RUFFckMsS0FBSyxXQUFXLFVBQVUsWUFBWSxTQUFTLHFCQUFBLG1CQUFtQixZQUFZLHFCQUFBLG1CQUFtQixNQUFNO0VBQ3ZHLEtBQUssT0FBTyxNQUFNLFVBQVUsT0FBTyxZQUFZLEtBQUssVUFBVTtDQUNsRTtDQUVBLGtCQUErQjtFQUMzQixLQUFLLFdBQVcsV0FBVztDQUMvQjtBQUNKIn0=