UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

104 lines (101 loc) 9.66 kB
import { Protocol, ConnectionPriority } from '@jsprismarine/raknet'; import './packet/ActorFallPacket.es.js'; import './packet/AddActorPacket.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 BatchPacket from './packet/BatchPacket.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 '@jsprismarine/jsbinaryutils'; import './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/MoveActorAbsolutePacket.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/RemoveActorPacket.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'; class MinecraftSession { constructor(session, logger) { this.logger = logger; this.rakSession = session; } rakSession; sendBatch(batch, direct = true) { batch.encode(); const sendPacket = new Protocol.Frame(); sendPacket.reliability = Protocol.FrameReliability.RELIABLE_ORDERED; sendPacket.orderChannel = 0; sendPacket.content = batch.getBuffer(); this.rakSession.sendFrame(sendPacket, direct ? ConnectionPriority.IMMEDIATE : ConnectionPriority.NORMAL); } async sendDataPacket(packet, comp = true, direct = false) { const batch = new BatchPacket(); 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 Protocol.Frame(); sendPacket.reliability = Protocol.FrameReliability.RELIABLE_ORDERED; sendPacket.orderChannel = 0; sendPacket.content = batch.getBuffer(); this.rakSession.sendFrame(sendPacket, direct ? ConnectionPriority.IMMEDIATE : ConnectionPriority.NORMAL); this.logger.silly(`Sent §b${packet.constructor.name}§r packet`); } forceDisconnect() { this.rakSession.disconnect(); } } export { MinecraftSession as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluZWNyYWZ0U2Vzc2lvbi5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25ldHdvcmsvTWluZWNyYWZ0U2Vzc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHsgUmFrTmV0U2Vzc2lvbiB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvcmFrbmV0JztcbmltcG9ydCB7IENvbm5lY3Rpb25Qcmlvcml0eSwgUHJvdG9jb2wgfSBmcm9tICdAanNwcmlzbWFyaW5lL3Jha25ldCc7XG5pbXBvcnQgdHlwZSB7IERhdGFQYWNrZXQgfSBmcm9tICcuL1BhY2tldHMnO1xuaW1wb3J0IHsgQmF0Y2hQYWNrZXQgfSBmcm9tICcuL1BhY2tldHMnO1xuXG4vKipcbiAqIEFjdCBhcyB0aGUgZmlyc3QgY29ubmVjdGlvbiBsYXllciwgaGFuZGxlcyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gYmF0Y2hpbmcsXG4gKiBxdWV1aW5nIGFuZCBlbmNyeXB0aW5nIG9mIE1pbmVjcmFmdCBwYWNrZXRzIGluIGEgaHlwb3RldGljYWwgc2Vzc2lvbi5cbiAqIFRPRE86IGltcGxlbWVudCB0aWNraW5nLCBiYXRjaGluZywgcXVldWVzLCBlbmNyeXB0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaW5lY3JhZnRTZXNzaW9uIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmFrU2Vzc2lvbjogUmFrTmV0U2Vzc2lvbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgc2Vzc2lvbjogUmFrTmV0U2Vzc2lvbixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlclxuICAgICkge1xuICAgICAgICB0aGlzLnJha1Nlc3Npb24gPSBzZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQmF0Y2goYmF0Y2g6IEJhdGNoUGFja2V0LCBkaXJlY3QgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGJhdGNoLmVuY29kZSgpO1xuICAgICAgICBjb25zdCBzZW5kUGFja2V0ID0gbmV3IFByb3RvY29sLkZyYW1lKCk7XG4gICAgICAgIHNlbmRQYWNrZXQucmVsaWFiaWxpdHkgPSBQcm90b2NvbC5GcmFtZVJlbGlhYmlsaXR5LlJFTElBQkxFX09SREVSRUQ7XG4gICAgICAgIHNlbmRQYWNrZXQub3JkZXJDaGFubmVsID0gMDtcbiAgICAgICAgc2VuZFBhY2tldC5jb250ZW50ID0gYmF0Y2guZ2V0QnVmZmVyKCk7XG5cbiAgICAgICAgdGhpcy5yYWtTZXNzaW9uLnNlbmRGcmFtZShzZW5kUGFja2V0LCBkaXJlY3QgPyBDb25uZWN0aW9uUHJpb3JpdHkuSU1NRURJQVRFIDogQ29ubmVjdGlvblByaW9yaXR5Lk5PUk1BTCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmREYXRhUGFja2V0PFQgZXh0ZW5kcyBEYXRhUGFja2V0PihwYWNrZXQ6IFQsIGNvbXAgPSB0cnVlLCBkaXJlY3QgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBiYXRjaCA9IG5ldyBCYXRjaFBhY2tldCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYmF0Y2guYWRkUGFja2V0KHBhY2tldCk7XG4gICAgICAgICAgICBiYXRjaC5jb21wcmVzc2VkID0gY29tcDtcbiAgICAgICAgICAgIGJhdGNoLmVuY29kZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgICAgICBgUGFja2V0IMKnYiR7cGFja2V0LmNvbnN0cnVjdG9yLm5hbWV9wqdyIHRvIMKnYiR7dGhpcy5yYWtTZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIC5nZXRBZGRyZXNzKClcbiAgICAgICAgICAgICAgICAgICAgLnRvVG9rZW4oKX3Cp3IgZmFpbGVkIHdpdGg6ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdGhpcyBpbiByYWtuZXRcbiAgICAgICAgY29uc3Qgc2VuZFBhY2tldCA9IG5ldyBQcm90b2NvbC5GcmFtZSgpO1xuICAgICAgICBzZW5kUGFja2V0LnJlbGlhYmlsaXR5ID0gUHJvdG9jb2wuRnJhbWVSZWxpYWJpbGl0eS5SRUxJQUJMRV9PUkRFUkVEO1xuICAgICAgICBzZW5kUGFja2V0Lm9yZGVyQ2hhbm5lbCA9IDA7XG4gICAgICAgIHNlbmRQYWNrZXQuY29udGVudCA9IGJhdGNoLmdldEJ1ZmZlcigpO1xuXG4gICAgICAgIHRoaXMucmFrU2Vzc2lvbi5zZW5kRnJhbWUoc2VuZFBhY2tldCwgZGlyZWN0ID8gQ29ubmVjdGlvblByaW9yaXR5LklNTUVESUFURSA6IENvbm5lY3Rpb25Qcmlvcml0eS5OT1JNQUwpO1xuICAgICAgICB0aGlzLmxvZ2dlci5zaWxseShgU2VudCDCp2Ike3BhY2tldC5jb25zdHJ1Y3Rvci5uYW1lfcKnciBwYWNrZXRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yY2VEaXNjb25uZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJha1Nlc3Npb24uZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLE1BQXFCLGdCQUFpQixDQUFBO0FBQUEsRUFHM0IsV0FBQSxDQUNILFNBQ2lCLE1BQ25CLEVBQUE7QUFEbUIsSUFBQSxJQUFBLENBQUEsTUFBQSxHQUFBLE1BQUE7QUFFakIsSUFBQSxJQUFBLENBQUssVUFBYSxHQUFBLE9BQUE7QUFBQTtBQUN0QixFQVBtQixVQUFBO0FBQUEsRUFTWixTQUFBLENBQVUsS0FBb0IsRUFBQSxNQUFBLEdBQVMsSUFBWSxFQUFBO0FBQ3RELElBQUEsS0FBQSxDQUFNLE1BQU8sRUFBQTtBQUNiLElBQU0sTUFBQSxVQUFBLEdBQWEsSUFBSSxRQUFBLENBQVMsS0FBTSxFQUFBO0FBQ3RDLElBQVcsVUFBQSxDQUFBLFdBQUEsR0FBYyxTQUFTLGdCQUFpQixDQUFBLGdCQUFBO0FBQ25ELElBQUEsVUFBQSxDQUFXLFlBQWUsR0FBQSxDQUFBO0FBQzFCLElBQVcsVUFBQSxDQUFBLE9BQUEsR0FBVSxNQUFNLFNBQVUsRUFBQTtBQUVyQyxJQUFBLElBQUEsQ0FBSyxXQUFXLFNBQVUsQ0FBQSxVQUFBLEVBQVksU0FBUyxrQkFBbUIsQ0FBQSxTQUFBLEdBQVksbUJBQW1CLE1BQU0sQ0FBQTtBQUFBO0FBQzNHLEVBRUEsTUFBYSxjQUFxQyxDQUFBLE1BQUEsRUFBVyxJQUFPLEdBQUEsSUFBQSxFQUFNLFNBQVMsS0FBc0IsRUFBQTtBQUNyRyxJQUFNLE1BQUEsS0FBQSxHQUFRLElBQUksV0FBWSxFQUFBO0FBQzlCLElBQUksSUFBQTtBQUNBLE1BQUEsS0FBQSxDQUFNLFVBQVUsTUFBTSxDQUFBO0FBQ3RCLE1BQUEsS0FBQSxDQUFNLFVBQWEsR0FBQSxJQUFBO0FBQ25CLE1BQUEsS0FBQSxDQUFNLE1BQU8sRUFBQTtBQUFBLGFBQ1IsS0FBZ0IsRUFBQTtBQUNyQixNQUFLLElBQUEsQ0FBQSxNQUFBLENBQU8sTUFBTSxLQUFLLENBQUE7QUFDdkIsTUFBQSxJQUFBLENBQUssTUFBTyxDQUFBLElBQUE7QUFBQSxRQUNSLENBQVksU0FBQSxFQUFBLE1BQUEsQ0FBTyxXQUFZLENBQUEsSUFBSSxDQUFXLFFBQUEsRUFBQSxJQUFBLENBQUssVUFDOUMsQ0FBQSxVQUFBLEVBQ0EsQ0FBQSxPQUFBLEVBQVMsQ0FBQSxnQkFBQSxFQUFvQixNQUFnQixPQUFPLENBQUE7QUFBQSxPQUM3RDtBQUNBLE1BQUE7QUFBQTtBQUlKLElBQU0sTUFBQSxVQUFBLEdBQWEsSUFBSSxRQUFBLENBQVMsS0FBTSxFQUFBO0FBQ3RDLElBQVcsVUFBQSxDQUFBLFdBQUEsR0FBYyxTQUFTLGdCQUFpQixDQUFBLGdCQUFBO0FBQ25ELElBQUEsVUFBQSxDQUFXLFlBQWUsR0FBQSxDQUFBO0FBQzFCLElBQVcsVUFBQSxDQUFBLE9BQUEsR0FBVSxNQUFNLFNBQVUsRUFBQTtBQUVyQyxJQUFBLElBQUEsQ0FBSyxXQUFXLFNBQVUsQ0FBQSxVQUFBLEVBQVksU0FBUyxrQkFBbUIsQ0FBQSxTQUFBLEdBQVksbUJBQW1CLE1BQU0sQ0FBQTtBQUN2RyxJQUFBLElBQUEsQ0FBSyxPQUFPLEtBQU0sQ0FBQSxDQUFBLE9BQUEsRUFBVSxNQUFPLENBQUEsV0FBQSxDQUFZLElBQUksQ0FBVyxTQUFBLENBQUEsQ0FBQTtBQUFBO0FBQ2xFLEVBRU8sZUFBd0IsR0FBQTtBQUMzQixJQUFBLElBQUEsQ0FBSyxXQUFXLFVBQVcsRUFBQTtBQUFBO0FBRW5DOzs7OyJ9