@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
147 lines (144 loc) • 10.2 kB
JavaScript
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