UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

60 lines (59 loc) 5.92 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_DisconnectPacket = require("./packet/DisconnectPacket.cjs.cjs"); const require_network_PlayerSession = require("./PlayerSession.cjs.cjs"); const require_network_MinecraftSession = require("./MinecraftSession.cjs.cjs"); let assert = require("assert"); assert = require_runtime.__toESM(assert, 1); //#region src/network/ClientConnection.ts /** * Handles the connection before the player creation itself, very helpful as * it helps to not waste resources in case the client trying to connect is simply * outdated or sends invalid data during the login handshake. */ var ClientConnection = class extends require_network_MinecraftSession.default { playerSession = null; hasCompression = false; constructor(session, logger) { super(session, logger); } /** * @internal * * @param server - the server instance * @param player - the player instance * @returns the new player session */ initPlayerConnection(server, player) { (0, assert.default)(this.playerSession === null, "Player session was already created"); this.playerSession = new require_network_PlayerSession.default(server, this, player); return this.playerSession; } async closePlayerSession() { if (this.playerSession !== null) { await this.playerSession.getPlayer().disable(); this.playerSession = null; } } disconnect(reason = "disconnect.disconnected", hideReason = true) { const packet = new require_network_packet_DisconnectPacket.default(); packet.skipMessage = hideReason; packet.message = reason; this.sendDataPacket(packet); this.closePlayerSession(); this.forceDisconnect(); } getPlayerSession() { return this.playerSession; } getRakNetSession() { return this.rakSession; } }; //#endregion exports.default = ClientConnection; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50Q29ubmVjdGlvbi5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL0NsaWVudENvbm5lY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQbGF5ZXIsIFNlcnZlciB9IGZyb20gJy4uLyc7XG5pbXBvcnQgeyBQbGF5ZXJTZXNzaW9uIH0gZnJvbSAnLi4vJztcblxuaW1wb3J0IHR5cGUgeyBMb2dnZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7IFJha05ldFNlc3Npb24gfSBmcm9tICdAanNwcmlzbWFyaW5lL3Jha25ldCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgTWluZWNyYWZ0U2Vzc2lvbiBmcm9tICcuL01pbmVjcmFmdFNlc3Npb24nO1xuaW1wb3J0IHsgRGlzY29ubmVjdFBhY2tldCB9IGZyb20gJy4vUGFja2V0cyc7XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgY29ubmVjdGlvbiBiZWZvcmUgdGhlIHBsYXllciBjcmVhdGlvbiBpdHNlbGYsIHZlcnkgaGVscGZ1bCBhc1xuICogaXQgaGVscHMgdG8gbm90IHdhc3RlIHJlc291cmNlcyBpbiBjYXNlIHRoZSBjbGllbnQgdHJ5aW5nIHRvIGNvbm5lY3QgaXMgc2ltcGx5XG4gKiBvdXRkYXRlZCBvciBzZW5kcyBpbnZhbGlkIGRhdGEgZHVyaW5nIHRoZSBsb2dpbiBoYW5kc2hha2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaWVudENvbm5lY3Rpb24gZXh0ZW5kcyBNaW5lY3JhZnRTZXNzaW9uIHtcbiAgICBwcml2YXRlIHBsYXllclNlc3Npb246IFBsYXllclNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgaGFzQ29tcHJlc3Npb24gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzZXNzaW9uOiBSYWtOZXRTZXNzaW9uLCBsb2dnZXI6IExvZ2dlcikge1xuICAgICAgICBzdXBlcihzZXNzaW9uLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqXG4gICAgICogQHBhcmFtIHNlcnZlciAtIHRoZSBzZXJ2ZXIgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gcGxheWVyIC0gdGhlIHBsYXllciBpbnN0YW5jZVxuICAgICAqIEByZXR1cm5zIHRoZSBuZXcgcGxheWVyIHNlc3Npb25cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdFBsYXllckNvbm5lY3Rpb24oc2VydmVyOiBTZXJ2ZXIsIHBsYXllcjogUGxheWVyKTogUGxheWVyU2Vzc2lvbiB7XG4gICAgICAgIGFzc2VydCh0aGlzLnBsYXllclNlc3Npb24gPT09IG51bGwsICdQbGF5ZXIgc2Vzc2lvbiB3YXMgYWxyZWFkeSBjcmVhdGVkJyk7XG5cbiAgICAgICAgdGhpcy5wbGF5ZXJTZXNzaW9uID0gbmV3IFBsYXllclNlc3Npb24oc2VydmVyLCB0aGlzLCBwbGF5ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5ZXJTZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZVBsYXllclNlc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnBsYXllclNlc3Npb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGxheWVyU2Vzc2lvbi5nZXRQbGF5ZXIoKS5kaXNhYmxlKCk7XG4gICAgICAgICAgICB0aGlzLnBsYXllclNlc3Npb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2Nvbm5lY3QocmVhc29uID0gJ2Rpc2Nvbm5lY3QuZGlzY29ubmVjdGVkJywgaGlkZVJlYXNvbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IERpc2Nvbm5lY3RQYWNrZXQoKTtcbiAgICAgICAgcGFja2V0LnNraXBNZXNzYWdlID0gaGlkZVJlYXNvbjtcbiAgICAgICAgcGFja2V0Lm1lc3NhZ2UgPSByZWFzb247XG4gICAgICAgIHZvaWQgdGhpcy5zZW5kRGF0YVBhY2tldChwYWNrZXQpO1xuXG4gICAgICAgIHRoaXMuY2xvc2VQbGF5ZXJTZXNzaW9uKCk7XG5cbiAgICAgICAgLy8gRm9yY2UgUmFrTmV0IHRvIHJlbW92ZSB0aGUgc2Vzc2lvblxuICAgICAgICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGUgZGVhZCBzZXNzaW9uXG4gICAgICAgIHRoaXMuZm9yY2VEaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBsYXllclNlc3Npb24oKTogUGxheWVyU2Vzc2lvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5ZXJTZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSYWtOZXRTZXNzaW9uKCk6IFJha05ldFNlc3Npb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5yYWtTZXNzaW9uO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxJQUFxQixtQkFBckIsY0FBOEMsaUNBQUEsUUFBaUI7Q0FDM0QsZ0JBQThDO0NBQzlDLGlCQUF3QjtDQUV4QixZQUFtQixTQUF3QixRQUFnQjtFQUN2RCxNQUFNLFNBQVMsTUFBTTtDQUN6Qjs7Ozs7Ozs7Q0FTQSxxQkFBNEIsUUFBZ0IsUUFBK0I7RUFDdkUsQ0FBQSxHQUFBLE9BQUEsU0FBTyxLQUFLLGtCQUFrQixNQUFNLG9DQUFvQztFQUV4RSxLQUFLLGdCQUFnQixJQUFJLDhCQUFBLFFBQWMsUUFBUSxNQUFNLE1BQU07RUFDM0QsT0FBTyxLQUFLO0NBQ2hCO0NBRUEsTUFBYSxxQkFBb0M7RUFDN0MsSUFBSSxLQUFLLGtCQUFrQixNQUFNO0dBQzdCLE1BQU0sS0FBSyxjQUFjLFVBQVUsRUFBRSxRQUFRO0dBQzdDLEtBQUssZ0JBQWdCO0VBQ3pCO0NBQ0o7Q0FFQSxXQUFrQixTQUFTLDJCQUEyQixhQUFhLE1BQVk7RUFDM0UsTUFBTSxTQUFTLElBQUksd0NBQUEsUUFBaUI7RUFDcEMsT0FBTyxjQUFjO0VBQ3JCLE9BQU8sVUFBVTtFQUNqQixLQUFVLGVBQWUsTUFBTTtFQUUvQixLQUFLLG1CQUFtQjtFQUl4QixLQUFLLGdCQUFnQjtDQUN6QjtDQUVBLG1CQUFnRDtFQUM1QyxPQUFPLEtBQUs7Q0FDaEI7Q0FFQSxtQkFBeUM7RUFDckMsT0FBTyxLQUFLO0NBQ2hCO0FBQ0oifQ==