UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

33 lines (30 loc) 5.01 kB
import PlayerMoveEvent from '../../events/player/PlayerMoveEvent.es.js'; import Identifiers from '../Identifiers.es.js'; import MovementType from '../type/MovementType.es.js'; class MovePlayerHandler { static NetID = Identifiers.MovePlayerPacket; async handle(packet, server, session) { const player = session.getPlayer(); const event = new PlayerMoveEvent(player, packet.position, packet.mode); server.post(["playerMove", event]); if (event.isCancelled()) { await session.broadcastMove(player, MovementType.Reset); return; } await player.setPosition( { position: packet.position, pitch: packet.pitch, yaw: packet.yaw, headYaw: packet.headYaw }, false ); await player.setOnGround(packet.onGround); await Promise.all( player.getWorld().getPlayers().filter((target) => target.getUUID() !== player.getUUID()).map((target) => target.getNetworkSession().broadcastMove(player, MovementType.Normal)) ); } } export { MovePlayerHandler as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW92ZVBsYXllckhhbmRsZXIuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXR3b3JrL2hhbmRsZXIvTW92ZVBsYXllckhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQbGF5ZXJTZXNzaW9uIH0gZnJvbSAnLi4vLi4vJztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi8uLi9TZXJ2ZXInO1xuaW1wb3J0IFBsYXllck1vdmVFdmVudCBmcm9tICcuLi8uLi9ldmVudHMvcGxheWVyL1BsYXllck1vdmVFdmVudCc7XG5pbXBvcnQgSWRlbnRpZmllcnMgZnJvbSAnLi4vSWRlbnRpZmllcnMnO1xuaW1wb3J0IHR5cGUgTW92ZVBsYXllclBhY2tldCBmcm9tICcuLi9wYWNrZXQvTW92ZVBsYXllclBhY2tldCc7XG5pbXBvcnQgTW92ZW1lbnRUeXBlIGZyb20gJy4uL3R5cGUvTW92ZW1lbnRUeXBlJztcbmltcG9ydCB0eXBlIFBhY2tldEhhbmRsZXIgZnJvbSAnLi9QYWNrZXRIYW5kbGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW92ZVBsYXllckhhbmRsZXIgaW1wbGVtZW50cyBQYWNrZXRIYW5kbGVyPE1vdmVQbGF5ZXJQYWNrZXQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuTW92ZVBsYXllclBhY2tldDtcblxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGUocGFja2V0OiBNb3ZlUGxheWVyUGFja2V0LCBzZXJ2ZXI6IFNlcnZlciwgc2Vzc2lvbjogUGxheWVyU2Vzc2lvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwbGF5ZXIgPSBzZXNzaW9uLmdldFBsYXllcigpO1xuXG4gICAgICAgIC8vIEVtaXQgbW92ZSBldmVudC5cbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgUGxheWVyTW92ZUV2ZW50KHBsYXllciwgcGFja2V0LnBvc2l0aW9uLCBwYWNrZXQubW9kZSk7XG4gICAgICAgIHNlcnZlci5wb3N0KFsncGxheWVyTW92ZScsIGV2ZW50XSk7XG4gICAgICAgIGlmIChldmVudC5pc0NhbmNlbGxlZCgpKSB7XG4gICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBjYW5jZWxsaW5nIHRoZSBldmVudCwgd2Ugc2hvdWxkIHJlc2V0IHRoZSBwbGF5ZXIncyBwb3NpdGlvbi5cbiAgICAgICAgICAgIGF3YWl0IHNlc3Npb24uYnJvYWRjYXN0TW92ZShwbGF5ZXIsIE1vdmVtZW50VHlwZS5SZXNldCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgcGxheWVyIHBvc2l0aW9uLlxuICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0UG9zaXRpb24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHBhY2tldC5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICBwaXRjaDogcGFja2V0LnBpdGNoLFxuICAgICAgICAgICAgICAgIHlhdzogcGFja2V0LnlhdyxcbiAgICAgICAgICAgICAgICBoZWFkWWF3OiBwYWNrZXQuaGVhZFlhd1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkaXRpb25hbCBmaWVsZHMuXG4gICAgICAgIGF3YWl0IHBsYXllci5zZXRPbkdyb3VuZChwYWNrZXQub25Hcm91bmQpO1xuXG4gICAgICAgIC8vIEZpbmFsbHksIGJyb2FkY2FzdCB0aGUgbW92ZSB0byBhbGwgcGxheWVycyBleGNlcHQgdGhlIHBsYXllciBpdHNlbGYgaW4gdGhlIHdvcmxkLlxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHBsYXllclxuICAgICAgICAgICAgICAgIC5nZXRXb3JsZCgpXG4gICAgICAgICAgICAgICAgLmdldFBsYXllcnMoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHRhcmdldCkgPT4gdGFyZ2V0LmdldFVVSUQoKSAhPT0gcGxheWVyLmdldFVVSUQoKSlcbiAgICAgICAgICAgICAgICAubWFwKCh0YXJnZXQpID0+IHRhcmdldC5nZXROZXR3b3JrU2Vzc2lvbigpLmJyb2FkY2FzdE1vdmUocGxheWVyLCBNb3ZlbWVudFR5cGUuTm9ybWFsKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLE1BQXFCLGlCQUE2RCxDQUFBO0FBQUEsRUFDOUUsT0FBYyxRQUFRLFdBQVksQ0FBQSxnQkFBQTtBQUFBLEVBRWxDLE1BQWEsTUFBQSxDQUFPLE1BQTBCLEVBQUEsTUFBQSxFQUFnQixPQUF1QyxFQUFBO0FBQ2pHLElBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFHakMsSUFBQSxNQUFNLFFBQVEsSUFBSSxlQUFBLENBQWdCLFFBQVEsTUFBTyxDQUFBLFFBQUEsRUFBVSxPQUFPLElBQUksQ0FBQTtBQUN0RSxJQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsQ0FBQyxZQUFjLEVBQUEsS0FBSyxDQUFDLENBQUE7QUFDakMsSUFBSSxJQUFBLEtBQUEsQ0FBTSxhQUFlLEVBQUE7QUFFckIsTUFBQSxNQUFNLE9BQVEsQ0FBQSxhQUFBLENBQWMsTUFBUSxFQUFBLFlBQUEsQ0FBYSxLQUFLLENBQUE7QUFDdEQsTUFBQTtBQUFBO0FBSUosSUFBQSxNQUFNLE1BQU8sQ0FBQSxXQUFBO0FBQUEsTUFDVDtBQUFBLFFBQ0ksVUFBVSxNQUFPLENBQUEsUUFBQTtBQUFBLFFBQ2pCLE9BQU8sTUFBTyxDQUFBLEtBQUE7QUFBQSxRQUNkLEtBQUssTUFBTyxDQUFBLEdBQUE7QUFBQSxRQUNaLFNBQVMsTUFBTyxDQUFBO0FBQUEsT0FDcEI7QUFBQSxNQUNBO0FBQUEsS0FDSjtBQUdBLElBQU0sTUFBQSxNQUFBLENBQU8sV0FBWSxDQUFBLE1BQUEsQ0FBTyxRQUFRLENBQUE7QUFHeEMsSUFBQSxNQUFNLE9BQVEsQ0FBQSxHQUFBO0FBQUEsTUFDVixNQUFBLENBQ0ssUUFBUyxFQUFBLENBQ1QsVUFBVyxFQUFBLENBQ1gsT0FBTyxDQUFDLE1BQUEsS0FBVyxNQUFPLENBQUEsT0FBQSxFQUFjLEtBQUEsTUFBQSxDQUFPLFNBQVMsQ0FBQSxDQUN4RCxHQUFJLENBQUEsQ0FBQyxNQUFXLEtBQUEsTUFBQSxDQUFPLGlCQUFrQixFQUFBLENBQUUsYUFBYyxDQUFBLE1BQUEsRUFBUSxZQUFhLENBQUEsTUFBTSxDQUFDO0FBQUEsS0FDOUY7QUFBQTtBQUVSOzs7OyJ9