UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

67 lines (66 loc) 8.94 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); require("../../_virtual/_rolldown/runtime.cjs.cjs"); const require_events_chat_ChatEvent = require("../../events/chat/ChatEvent.cjs.cjs"); const require_command_Command = require("../Command.cjs.cjs"); const require_command_CommandArguments = require("../CommandArguments.cjs.cjs"); const require_chat_Chat = require("../../chat/Chat.cjs.cjs"); let _jsprismarine_minecraft = require("@jsprismarine/minecraft"); let _jsprismarine_brigadier = require("@jsprismarine/brigadier"); //#region src/command/vanilla/GamemodeCommand.ts /** * Manage a player's {@link Gametype} (gamemode). * @remarks the `/gamemode` command. */ var GamemodeCommand = class extends require_command_Command.Command { constructor() { super({ id: "minecraft:gamemode", description: "Changes gamemode for a player.", permission: "minecraft.command.gamemode" }); } async setGamemode(source, target, gamemode) { if (!target) { const event = new require_events_chat_ChatEvent.default(new require_chat_Chat.Chat({ sender: source, message: `Player is not online!`, channel: `*.player.${source.getName()}` })); await source.getServer().emit("chat", event); return; } if (!target.isPlayer()) { const event = new require_events_chat_ChatEvent.default(new require_chat_Chat.Chat({ sender: source, message: `Can't set ${source.getFormattedUsername()} to ${gamemode}`, channel: `*.player.${source.getName()}` })); await source.getServer().emit("chat", event); return; } await target.setGamemode((0, _jsprismarine_minecraft.getGametypeId)(gamemode)); } async register(dispatcher) { dispatcher.register((0, _jsprismarine_brigadier.literal)("gamemode").then((0, _jsprismarine_brigadier.argument)("gamemode", new require_command_CommandArguments.CommandArgumentGamemode()).then((0, _jsprismarine_brigadier.argument)("player", new require_command_CommandArguments.CommandArgumentEntity({ name: "player", optional: true })).executes(async (context) => { const source = context.getSource(); const targets = context.getArgument("player"); const gamemode = context.getArgument("gamemode"); if (!targets.length) throw new Error(`Cannot find player`); await Promise.all(targets.map(async (target) => await this.setGamemode(source, target, gamemode))); })).executes(async (context) => { const source = context.getSource(); const gamemode = context.getArgument("gamemode"); await this.setGamemode(source, source, gamemode); }))); } }; //#endregion exports.default = GamemodeCommand; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZW1vZGVDb21tYW5kLmNqcy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmQvdmFuaWxsYS9HYW1lbW9kZUNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kRGlzcGF0Y2hlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IGFyZ3VtZW50LCBsaXRlcmFsIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVudXNlZC1pbXBvcnRzL25vLXVudXNlZC1pbXBvcnRzXG5pbXBvcnQgdHlwZSB7IEdhbWV0eXBlIH0gZnJvbSAnQGpzcHJpc21hcmluZS9taW5lY3JhZnQnO1xuaW1wb3J0IHsgZ2V0R2FtZXR5cGVJZCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbWluZWNyYWZ0JztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHsgQ2hhdCB9IGZyb20gJy4uLy4uL2NoYXQvQ2hhdCc7XG5pbXBvcnQgQ2hhdEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50cy9jaGF0L0NoYXRFdmVudCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZCc7XG5pbXBvcnQgeyBDb21tYW5kQXJndW1lbnRFbnRpdHksIENvbW1hbmRBcmd1bWVudEdhbWVtb2RlIH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5cbi8qKlxuICogTWFuYWdlIGEgcGxheWVyJ3Mge0BsaW5rIEdhbWV0eXBlfSAoZ2FtZW1vZGUpLlxuICogQHJlbWFya3MgdGhlIGAvZ2FtZW1vZGVgIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVtb2RlQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6Z2FtZW1vZGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdDaGFuZ2VzIGdhbWVtb2RlIGZvciBhIHBsYXllci4nLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogJ21pbmVjcmFmdC5jb21tYW5kLmdhbWVtb2RlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldEdhbWVtb2RlKHNvdXJjZTogUGxheWVyLCB0YXJnZXQ6IFBsYXllciwgZ2FtZW1vZGU6IHN0cmluZykge1xuICAgICAgICBpZiAoISh0YXJnZXQgYXMgYW55KSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgQ2hhdEV2ZW50KFxuICAgICAgICAgICAgICAgIG5ldyBDaGF0KHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZGVyOiBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBQbGF5ZXIgaXMgbm90IG9ubGluZSFgLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBgKi5wbGF5ZXIuJHtzb3VyY2UuZ2V0TmFtZSgpfWBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5lbWl0KCdjaGF0JywgZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXQuaXNQbGF5ZXIoKSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgQ2hhdEV2ZW50KFxuICAgICAgICAgICAgICAgIG5ldyBDaGF0KHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZGVyOiBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBDYW4ndCBzZXQgJHtzb3VyY2UuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKX0gdG8gJHtnYW1lbW9kZX1gLFxuXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IGAqLnBsYXllci4ke3NvdXJjZS5nZXROYW1lKCl9YFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgc291cmNlLmdldFNlcnZlcigpLmVtaXQoJ2NoYXQnLCBldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0YXJnZXQuc2V0R2FtZW1vZGUoZ2V0R2FtZXR5cGVJZChnYW1lbW9kZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCdnYW1lbW9kZScpLnRoZW4oXG4gICAgICAgICAgICAgICAgYXJndW1lbnQoJ2dhbWVtb2RlJywgbmV3IENvbW1hbmRBcmd1bWVudEdhbWVtb2RlKCkpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3BsYXllcicsIG5ldyBDb21tYW5kQXJndW1lbnRFbnRpdHkoeyBuYW1lOiAncGxheWVyJywgb3B0aW9uYWw6IHRydWUgfSkpLmV4ZWN1dGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRzID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJykgYXMgUGxheWVyW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2FtZW1vZGUgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdnYW1lbW9kZScpIGFzIHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldHMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHBsYXllcmApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5tYXAoYXN5bmMgKHRhcmdldCkgPT4gYXdhaXQgdGhpcy5zZXRHYW1lbW9kZShzb3VyY2UsIHRhcmdldCwgZ2FtZW1vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2FtZW1vZGUgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdnYW1lbW9kZScpIGFzIHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRHYW1lbW9kZShzb3VyY2UsIHNvdXJjZSwgZ2FtZW1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFxQixrQkFBckIsY0FBNkMsd0JBQUEsUUFBUTtDQUNqRCxjQUFxQjtFQUNqQixNQUFNO0dBQ0YsSUFBSTtHQUNKLGFBQWE7R0FDYixZQUFZO0VBQ2hCLENBQUM7Q0FDTDtDQUVBLE1BQWMsWUFBWSxRQUFnQixRQUFnQixVQUFrQjtFQUN4RSxJQUFJLENBQUUsUUFBZ0I7R0FDbEIsTUFBTSxRQUFRLElBQUksOEJBQUEsUUFDZCxJQUFJLGtCQUFBLEtBQUs7SUFDTCxRQUFRO0lBQ1IsU0FBUztJQUNULFNBQVMsWUFBWSxPQUFPLFFBQVE7R0FDeEMsQ0FBQyxDQUNMO0dBQ0EsTUFBTSxPQUFPLFVBQVUsRUFBRSxLQUFLLFFBQVEsS0FBSztHQUMzQztFQUNKO0VBRUEsSUFBSSxDQUFDLE9BQU8sU0FBUyxHQUFHO0dBQ3BCLE1BQU0sUUFBUSxJQUFJLDhCQUFBLFFBQ2QsSUFBSSxrQkFBQSxLQUFLO0lBQ0wsUUFBUTtJQUNSLFNBQVMsYUFBYSxPQUFPLHFCQUFxQixFQUFFLE1BQU07SUFFMUQsU0FBUyxZQUFZLE9BQU8sUUFBUTtHQUN4QyxDQUFDLENBQ0w7R0FDQSxNQUFNLE9BQU8sVUFBVSxFQUFFLEtBQUssUUFBUSxLQUFLO0dBQzNDO0VBQ0o7RUFFQSxNQUFNLE9BQU8sYUFBQSxHQUFBLHdCQUFBLGVBQTBCLFFBQVEsQ0FBQztDQUNwRDtDQUVBLE1BQWEsU0FBUyxZQUFvQztFQUN0RCxXQUFXLFVBQUEsR0FBQSx3QkFBQSxTQUNDLFVBQVUsRUFBRSxNQUFBLEdBQUEsd0JBQUEsVUFDUCxZQUFZLElBQUksaUNBQUEsd0JBQXdCLENBQUMsRUFDN0MsTUFBQSxHQUFBLHdCQUFBLFVBQ1ksVUFBVSxJQUFJLGlDQUFBLHNCQUFzQjtHQUFFLE1BQU07R0FBVSxVQUFVO0VBQUssQ0FBQyxDQUFDLEVBQUUsU0FDOUUsT0FBTyxZQUFZO0dBQ2YsTUFBTSxTQUFTLFFBQVEsVUFBVTtHQUNqQyxNQUFNLFVBQVUsUUFBUSxZQUFZLFFBQVE7R0FFNUMsTUFBTSxXQUFXLFFBQVEsWUFBWSxVQUFVO0dBRS9DLElBQUksQ0FBQyxRQUFRLFFBQVEsTUFBTSxJQUFJLE1BQU0sb0JBQW9CO0dBRXpELE1BQU0sUUFBUSxJQUNWLFFBQVEsSUFBSSxPQUFPLFdBQVcsTUFBTSxLQUFLLFlBQVksUUFBUSxRQUFRLFFBQVEsQ0FBQyxDQUNsRjtFQUNKLENBQ0osQ0FDSixFQUNDLFNBQVMsT0FBTyxZQUFZO0dBQ3pCLE1BQU0sU0FBUyxRQUFRLFVBQVU7R0FDakMsTUFBTSxXQUFXLFFBQVEsWUFBWSxVQUFVO0dBRS9DLE1BQU0sS0FBSyxZQUFZLFFBQVEsUUFBUSxRQUFRO0VBQ25ELENBQUMsQ0FDVCxDQUNKO0NBQ0o7QUFDSiJ9