@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
28 lines (27 loc) • 4.51 kB
JavaScript
import Identifiers from "../Identifiers.es.js";
import MovementType from "../type/MovementType.es.js";
import PlayerMoveEvent from "../../events/player/PlayerMoveEvent.es.js";
//#region src/network/handler/MovePlayerHandler.ts
var MovePlayerHandler = class {
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)));
}
};
//#endregion
export { MovePlayerHandler as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW92ZVBsYXllckhhbmRsZXIuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvaGFuZGxlci9Nb3ZlUGxheWVySGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsYXllclNlc3Npb24gfSBmcm9tICcuLi8uLi8nO1xuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uLy4uL1NlcnZlcic7XG5pbXBvcnQgUGxheWVyTW92ZUV2ZW50IGZyb20gJy4uLy4uL2V2ZW50cy9wbGF5ZXIvUGxheWVyTW92ZUV2ZW50JztcbmltcG9ydCBJZGVudGlmaWVycyBmcm9tICcuLi9JZGVudGlmaWVycyc7XG5pbXBvcnQgdHlwZSBNb3ZlUGxheWVyUGFja2V0IGZyb20gJy4uL3BhY2tldC9Nb3ZlUGxheWVyUGFja2V0JztcbmltcG9ydCBNb3ZlbWVudFR5cGUgZnJvbSAnLi4vdHlwZS9Nb3ZlbWVudFR5cGUnO1xuaW1wb3J0IHR5cGUgUGFja2V0SGFuZGxlciBmcm9tICcuL1BhY2tldEhhbmRsZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb3ZlUGxheWVySGFuZGxlciBpbXBsZW1lbnRzIFBhY2tldEhhbmRsZXI8TW92ZVBsYXllclBhY2tldD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgTmV0SUQgPSBJZGVudGlmaWVycy5Nb3ZlUGxheWVyUGFja2V0O1xuXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZShwYWNrZXQ6IE1vdmVQbGF5ZXJQYWNrZXQsIHNlcnZlcjogU2VydmVyLCBzZXNzaW9uOiBQbGF5ZXJTZXNzaW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllciA9IHNlc3Npb24uZ2V0UGxheWVyKCk7XG5cbiAgICAgICAgLy8gRW1pdCBtb3ZlIGV2ZW50LlxuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBQbGF5ZXJNb3ZlRXZlbnQocGxheWVyLCBwYWNrZXQucG9zaXRpb24sIHBhY2tldC5tb2RlKTtcbiAgICAgICAgc2VydmVyLnBvc3QoWydwbGF5ZXJNb3ZlJywgZXZlbnRdKTtcbiAgICAgICAgaWYgKGV2ZW50LmlzQ2FuY2VsbGVkKCkpIHtcbiAgICAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGNhbmNlbGxpbmcgdGhlIGV2ZW50LCB3ZSBzaG91bGQgcmVzZXQgdGhlIHBsYXllcidzIHBvc2l0aW9uLlxuICAgICAgICAgICAgYXdhaXQgc2Vzc2lvbi5icm9hZGNhc3RNb3ZlKHBsYXllciwgTW92ZW1lbnRUeXBlLlJlc2V0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSBwbGF5ZXIgcG9zaXRpb24uXG4gICAgICAgIGF3YWl0IHBsYXllci5zZXRQb3NpdGlvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcGFja2V0LnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHBpdGNoOiBwYWNrZXQucGl0Y2gsXG4gICAgICAgICAgICAgICAgeWF3OiBwYWNrZXQueWF3LFxuICAgICAgICAgICAgICAgIGhlYWRZYXc6IHBhY2tldC5oZWFkWWF3XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBZGRpdGlvbmFsIGZpZWxkcy5cbiAgICAgICAgYXdhaXQgcGxheWVyLnNldE9uR3JvdW5kKHBhY2tldC5vbkdyb3VuZCk7XG5cbiAgICAgICAgLy8gRmluYWxseSwgYnJvYWRjYXN0IHRoZSBtb3ZlIHRvIGFsbCBwbGF5ZXJzIGV4Y2VwdCB0aGUgcGxheWVyIGl0c2VsZiBpbiB0aGUgd29ybGQuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgcGxheWVyXG4gICAgICAgICAgICAgICAgLmdldFdvcmxkKClcbiAgICAgICAgICAgICAgICAuZ2V0UGxheWVycygpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodGFyZ2V0KSA9PiB0YXJnZXQuZ2V0VVVJRCgpICE9PSBwbGF5ZXIuZ2V0VVVJRCgpKVxuICAgICAgICAgICAgICAgIC5tYXAoKHRhcmdldCkgPT4gdGFyZ2V0LmdldE5ldHdvcmtTZXNzaW9uKCkuYnJvYWRjYXN0TW92ZShwbGF5ZXIsIE1vdmVtZW50VHlwZS5Ob3JtYWwpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLElBQXFCLG9CQUFyQixNQUFrRjtDQUM5RSxPQUFjLFFBQVEsWUFBWTtDQUVsQyxNQUFhLE9BQU8sUUFBMEIsUUFBZ0IsU0FBdUM7RUFDakcsTUFBTSxTQUFTLFFBQVEsVUFBVTtFQUdqQyxNQUFNLFFBQVEsSUFBSSxnQkFBZ0IsUUFBUSxPQUFPLFVBQVUsT0FBTyxJQUFJO0VBQ3RFLE9BQU8sS0FBSyxDQUFDLGNBQWMsS0FBSyxDQUFDO0VBQ2pDLElBQUksTUFBTSxZQUFZLEdBQUc7R0FFckIsTUFBTSxRQUFRLGNBQWMsUUFBUSxhQUFhLEtBQUs7R0FDdEQ7RUFDSjtFQUdBLE1BQU0sT0FBTyxZQUNUO0dBQ0ksVUFBVSxPQUFPO0dBQ2pCLE9BQU8sT0FBTztHQUNkLEtBQUssT0FBTztHQUNaLFNBQVMsT0FBTztFQUNwQixHQUNBLEtBQ0o7RUFHQSxNQUFNLE9BQU8sWUFBWSxPQUFPLFFBQVE7RUFHeEMsTUFBTSxRQUFRLElBQ1YsT0FDSyxTQUFTLEVBQ1QsV0FBVyxFQUNYLFFBQVEsV0FBVyxPQUFPLFFBQVEsTUFBTSxPQUFPLFFBQVEsQ0FBQyxFQUN4RCxLQUFLLFdBQVcsT0FBTyxrQkFBa0IsRUFBRSxjQUFjLFFBQVEsYUFBYSxNQUFNLENBQUMsQ0FDOUY7Q0FDSjtBQUNKIn0=