UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

147 lines (144 loc) • 10.2 kB
import 'node:fs'; import 'confbox'; import '@jsprismarine/errors'; import '@jsprismarine/jsbinaryutils'; import 'node:assert'; import 'node:path'; import 'node:process'; import '../block/BlockToolType.es.js'; import '@jsprismarine/bedrock-data'; import '@jsprismarine/nbt'; import 'zlib'; import '@jsprismarine/math'; import '@jsprismarine/minecraft'; import './packet/AddActorPacket.es.js'; import './packet/MoveActorAbsolutePacket.es.js'; import './packet/RemoveActorPacket.es.js'; import 'node:crypto'; import './packet/ActorFallPacket.es.js'; import './packet/AddItemActorPacket.es.js'; import './packet/AddPlayerPacket.es.js'; import './packet/AnimatePacket.es.js'; import './packet/AvailableActorIdentifiersPacket.es.js'; import './packet/AvailableCommandsPacket.es.js'; import './CompressionProvider.es.js'; import './packet/NetworkSettingsPacket.es.js'; import './packet/BiomeDefinitionListPacket.es.js'; import './packet/ChangeDimensionPacket.es.js'; import './packet/ChunkRadiusUpdatedPacket.es.js'; import './packet/CommandRequestPacket.es.js'; import './packet/ContainerClosePacket.es.js'; import './packet/ContainerOpenPacket.es.js'; import './packet/CreativeContentPacket.es.js'; import DisconnectPacket from './packet/DisconnectPacket.es.js'; import './packet/EmoteListPacket.es.js'; import './packet/InteractPacket.es.js'; import './packet/InventoryContentPacket.es.js'; import './packet/InventoryTransactionPacket.es.js'; import './packet/ItemComponentPacket.es.js'; import './packet/ItemStackRequestPacket.es.js'; import './packet/ItemStackResponsePacket.es.js'; import './packet/LevelChunkPacket.es.js'; import './packet/LevelSoundEventPacket.es.js'; import './packet/LoginPacket.es.js'; import './packet/MobEquipmentPacket.es.js'; import './packet/MovePlayerPacket.es.js'; import './packet/NetworkChunkPublisherUpdatePacket.es.js'; import './packet/OnScreenTextureAnimationPacket.es.js'; import './packet/PacketViolationWarningPacket.es.js'; import './packet/PlaySoundPacket.es.js'; import './packet/PlayStatusPacket.es.js'; import './packet/PlayerActionPacket.es.js'; import './packet/PlayerListPacket.es.js'; import './packet/PlayerSkinPacket.es.js'; import './packet/RequestChunkRadiusPacket.es.js'; import './packet/RequestNetworkSettingsPacket.es.js'; import './packet/ResourcePackResponsePacket.es.js'; import './packet/ResourcePackStackPacket.es.js'; import './packet/ResourcePacksInfoPacket.es.js'; import './packet/ServerSettingsRequestPacket.es.js'; import './packet/SetActorDataPacket.es.js'; import './packet/SetDefaultGametypePacket.es.js'; import './packet/SetHealthPacket.es.js'; import './packet/SetLocalPlayerAsInitializedPacket.es.js'; import './packet/SetPlayerGametypePacket.es.js'; import './packet/SetTimePacket.es.js'; import './packet/ShowProfilePacket.es.js'; import './packet/StartGamePacket.es.js'; import './packet/TextPacket.es.js'; import './packet/TickSyncPacket.es.js'; import './packet/TransferPacket.es.js'; import './packet/UpdateAdventureSettingsPacket.es.js'; import './packet/UpdateAttributesPacket.es.js'; import './packet/UpdateBlockPacket.es.js'; import './packet/WorldEventPacket.es.js'; import '@jsprismarine/brigadier'; import '../config/Config.es.js'; import './handler/AnimateHandler.es.js'; import './handler/CommandRequestHandler.es.js'; import './handler/ContainerCloseHandler.es.js'; import './handler/EmoteListHandler.es.js'; import './handler/InteractHandler.es.js'; import './handler/InventoryTransactionHandler.es.js'; import './handler/LevelSoundEventHandler.es.js'; import './handler/LoginHandler.es.js'; import './handler/MobEquipmentHandler.es.js'; import './handler/MovePlayerHandler.es.js'; import './handler/PacketViolationWarningHandler.es.js'; import './handler/PlayerActionHandler.es.js'; import './handler/RequestChunkRadiusHandler.es.js'; import './handler/RequestNetworkSettingsHandler.es.js'; import './handler/ResourcePackResponseHandler.es.js'; import './handler/ServerSettingsRequestHandler.es.js'; import './handler/SetDefaultGametypeHandler.es.js'; import './handler/SetLocalPlayerAsInitializedHandler.es.js'; import './handler/SetPlayerGametypeHandler.es.js'; import './handler/TextHandler.es.js'; import './handler/TickSyncHandler.es.js'; import 'node:readline'; import PlayerSession from './PlayerSession.es.js'; import '@jsprismarine/raknet'; import 'evt'; import assert from 'assert'; import MinecraftSession from './MinecraftSession.es.js'; class ClientConnection extends MinecraftSession { 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) { assert(this.playerSession === null, "Player session was already created"); this.playerSession = new PlayerSession(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 DisconnectPacket(); packet.skipMessage = hideReason; packet.message = reason; void this.sendDataPacket(packet); this.closePlayerSession(); this.forceDisconnect(); } getPlayerSession() { return this.playerSession; } getRakNetSession() { return this.rakSession; } } export { ClientConnection as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50Q29ubmVjdGlvbi5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25ldHdvcmsvQ2xpZW50Q29ubmVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsYXllciwgU2VydmVyIH0gZnJvbSAnLi4vJztcbmltcG9ydCB7IFBsYXllclNlc3Npb24gfSBmcm9tICcuLi8nO1xuXG5pbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHsgUmFrTmV0U2Vzc2lvbiB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvcmFrbmV0JztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBNaW5lY3JhZnRTZXNzaW9uIGZyb20gJy4vTWluZWNyYWZ0U2Vzc2lvbic7XG5pbXBvcnQgeyBEaXNjb25uZWN0UGFja2V0IH0gZnJvbSAnLi9QYWNrZXRzJztcblxuLyoqXG4gKiBIYW5kbGVzIHRoZSBjb25uZWN0aW9uIGJlZm9yZSB0aGUgcGxheWVyIGNyZWF0aW9uIGl0c2VsZiwgdmVyeSBoZWxwZnVsIGFzXG4gKiBpdCBoZWxwcyB0byBub3Qgd2FzdGUgcmVzb3VyY2VzIGluIGNhc2UgdGhlIGNsaWVudCB0cnlpbmcgdG8gY29ubmVjdCBpcyBzaW1wbHlcbiAqIG91dGRhdGVkIG9yIHNlbmRzIGludmFsaWQgZGF0YSBkdXJpbmcgdGhlIGxvZ2luIGhhbmRzaGFrZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpZW50Q29ubmVjdGlvbiBleHRlbmRzIE1pbmVjcmFmdFNlc3Npb24ge1xuICAgIHByaXZhdGUgcGxheWVyU2Vzc2lvbjogUGxheWVyU2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBoYXNDb21wcmVzc2lvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlc3Npb246IFJha05ldFNlc3Npb24sIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgICAgIHN1cGVyKHNlc3Npb24sIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VydmVyIC0gdGhlIHNlcnZlciBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSBwbGF5ZXIgLSB0aGUgcGxheWVyIGluc3RhbmNlXG4gICAgICogQHJldHVybnMgdGhlIG5ldyBwbGF5ZXIgc2Vzc2lvblxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0UGxheWVyQ29ubmVjdGlvbihzZXJ2ZXI6IFNlcnZlciwgcGxheWVyOiBQbGF5ZXIpOiBQbGF5ZXJTZXNzaW9uIHtcbiAgICAgICAgYXNzZXJ0KHRoaXMucGxheWVyU2Vzc2lvbiA9PT0gbnVsbCwgJ1BsYXllciBzZXNzaW9uIHdhcyBhbHJlYWR5IGNyZWF0ZWQnKTtcblxuICAgICAgICB0aGlzLnBsYXllclNlc3Npb24gPSBuZXcgUGxheWVyU2Vzc2lvbihzZXJ2ZXIsIHRoaXMsIHBsYXllcik7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXllclNlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlUGxheWVyU2Vzc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucGxheWVyU2Vzc2lvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbGF5ZXJTZXNzaW9uLmdldFBsYXllcigpLmRpc2FibGUoKTtcbiAgICAgICAgICAgIHRoaXMucGxheWVyU2Vzc2lvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzY29ubmVjdChyZWFzb24gPSAnZGlzY29ubmVjdC5kaXNjb25uZWN0ZWQnLCBoaWRlUmVhc29uID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgRGlzY29ubmVjdFBhY2tldCgpO1xuICAgICAgICBwYWNrZXQuc2tpcE1lc3NhZ2UgPSBoaWRlUmVhc29uO1xuICAgICAgICBwYWNrZXQubWVzc2FnZSA9IHJlYXNvbjtcbiAgICAgICAgdm9pZCB0aGlzLnNlbmREYXRhUGFja2V0KHBhY2tldCk7XG5cbiAgICAgICAgdGhpcy5jbG9zZVBsYXllclNlc3Npb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBSYWtOZXQgdG8gcmVtb3ZlIHRoZSBzZXNzaW9uXG4gICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoZSBkZWFkIHNlc3Npb25cbiAgICAgICAgdGhpcy5mb3JjZURpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGxheWVyU2Vzc2lvbigpOiBQbGF5ZXJTZXNzaW9uIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXllclNlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJha05ldFNlc3Npb24oKTogUmFrTmV0U2Vzc2lvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJha1Nlc3Npb247XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsTUFBcUIseUJBQXlCLGdCQUFpQixDQUFBO0FBQUEsRUFDbkQsYUFBc0MsR0FBQSxJQUFBO0FBQUEsRUFDdkMsY0FBaUIsR0FBQSxLQUFBO0FBQUEsRUFFakIsV0FBQSxDQUFZLFNBQXdCLE1BQWdCLEVBQUE7QUFDdkQsSUFBQSxLQUFBLENBQU0sU0FBUyxNQUFNLENBQUE7QUFBQTtBQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sb0JBQUEsQ0FBcUIsUUFBZ0IsTUFBK0IsRUFBQTtBQUN2RSxJQUFPLE1BQUEsQ0FBQSxJQUFBLENBQUssYUFBa0IsS0FBQSxJQUFBLEVBQU0sb0NBQW9DLENBQUE7QUFFeEUsSUFBQSxJQUFBLENBQUssYUFBZ0IsR0FBQSxJQUFJLGFBQWMsQ0FBQSxNQUFBLEVBQVEsTUFBTSxNQUFNLENBQUE7QUFDM0QsSUFBQSxPQUFPLElBQUssQ0FBQSxhQUFBO0FBQUE7QUFDaEIsRUFFQSxNQUFhLGtCQUFvQyxHQUFBO0FBQzdDLElBQUksSUFBQSxJQUFBLENBQUssa0JBQWtCLElBQU0sRUFBQTtBQUM3QixNQUFBLE1BQU0sSUFBSyxDQUFBLGFBQUEsQ0FBYyxTQUFVLEVBQUEsQ0FBRSxPQUFRLEVBQUE7QUFDN0MsTUFBQSxJQUFBLENBQUssYUFBZ0IsR0FBQSxJQUFBO0FBQUE7QUFDekI7QUFDSixFQUVPLFVBQVcsQ0FBQSxNQUFBLEdBQVMseUJBQTJCLEVBQUEsVUFBQSxHQUFhLElBQVksRUFBQTtBQUMzRSxJQUFNLE1BQUEsTUFBQSxHQUFTLElBQUksZ0JBQWlCLEVBQUE7QUFDcEMsSUFBQSxNQUFBLENBQU8sV0FBYyxHQUFBLFVBQUE7QUFDckIsSUFBQSxNQUFBLENBQU8sT0FBVSxHQUFBLE1BQUE7QUFDakIsSUFBSyxLQUFBLElBQUEsQ0FBSyxlQUFlLE1BQU0sQ0FBQTtBQUUvQixJQUFBLElBQUEsQ0FBSyxrQkFBbUIsRUFBQTtBQUl4QixJQUFBLElBQUEsQ0FBSyxlQUFnQixFQUFBO0FBQUE7QUFDekIsRUFFTyxnQkFBeUMsR0FBQTtBQUM1QyxJQUFBLE9BQU8sSUFBSyxDQUFBLGFBQUE7QUFBQTtBQUNoQixFQUVPLGdCQUFrQyxHQUFBO0FBQ3JDLElBQUEsT0FBTyxJQUFLLENBQUEsVUFBQTtBQUFBO0FBRXBCOzs7OyJ9