UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

72 lines (67 loc) 9.95 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const brigadier = require('@jsprismarine/brigadier'); const minecraft = require('@jsprismarine/minecraft'); const chat_Chat = require('../../chat/Chat.cjs.cjs'); const events_chat_ChatEvent = require('../../events/chat/ChatEvent.cjs.cjs'); const command_Command = require('../Command.cjs.cjs'); const command_CommandArguments = require('../CommandArguments.cjs.cjs'); class GamemodeCommand extends 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 events_chat_ChatEvent.default( new 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 events_chat_ChatEvent.default( new 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(minecraft.getGametypeId(gamemode)); } async register(dispatcher) { dispatcher.register( brigadier.literal("gamemode").then( brigadier.argument("gamemode", new command_CommandArguments.CommandArgumentGamemode()).then( brigadier.argument("player", new 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); }) ) ); } } exports.default = GamemodeCommand; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZW1vZGVDb21tYW5kLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kL3ZhbmlsbGEvR2FtZW1vZGVDb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZERpc3BhdGNoZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5pbXBvcnQgeyBhcmd1bWVudCwgbGl0ZXJhbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bnVzZWQtaW1wb3J0cy9uby11bnVzZWQtaW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBHYW1ldHlwZSB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbWluZWNyYWZ0JztcbmltcG9ydCB7IGdldEdhbWV0eXBlSWQgfSBmcm9tICdAanNwcmlzbWFyaW5lL21pbmVjcmFmdCc7XG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi4vLi4vUGxheWVyJztcbmltcG9ydCB7IENoYXQgfSBmcm9tICcuLi8uLi9jaGF0L0NoYXQnO1xuaW1wb3J0IENoYXRFdmVudCBmcm9tICcuLi8uLi9ldmVudHMvY2hhdC9DaGF0RXZlbnQnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmQnO1xuaW1wb3J0IHsgQ29tbWFuZEFyZ3VtZW50RW50aXR5LCBDb21tYW5kQXJndW1lbnRHYW1lbW9kZSB9IGZyb20gJy4uL0NvbW1hbmRBcmd1bWVudHMnO1xuXG4vKipcbiAqIE1hbmFnZSBhIHBsYXllcidzIHtAbGluayBHYW1ldHlwZX0gKGdhbWVtb2RlKS5cbiAqIEByZW1hcmtzIHRoZSBgL2dhbWVtb2RlYCBjb21tYW5kLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYW1lbW9kZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGlkOiAnbWluZWNyYWZ0OmdhbWVtb2RlJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQ2hhbmdlcyBnYW1lbW9kZSBmb3IgYSBwbGF5ZXIuJyxcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdtaW5lY3JhZnQuY29tbWFuZC5nYW1lbW9kZSdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRHYW1lbW9kZShzb3VyY2U6IFBsYXllciwgdGFyZ2V0OiBQbGF5ZXIsIGdhbWVtb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0IGFzIGFueSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IENoYXRFdmVudChcbiAgICAgICAgICAgICAgICBuZXcgQ2hhdCh7XG4gICAgICAgICAgICAgICAgICAgIHNlbmRlcjogc291cmNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgUGxheWVyIGlzIG5vdCBvbmxpbmUhYCxcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogYCoucGxheWVyLiR7c291cmNlLmdldE5hbWUoKX1gXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhd2FpdCBzb3VyY2UuZ2V0U2VydmVyKCkuZW1pdCgnY2hhdCcsIGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGFyZ2V0LmlzUGxheWVyKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IENoYXRFdmVudChcbiAgICAgICAgICAgICAgICBuZXcgQ2hhdCh7XG4gICAgICAgICAgICAgICAgICAgIHNlbmRlcjogc291cmNlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgQ2FuJ3Qgc2V0ICR7c291cmNlLmdldEZvcm1hdHRlZFVzZXJuYW1lKCl9IHRvICR7Z2FtZW1vZGV9YCxcblxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBgKi5wbGF5ZXIuJHtzb3VyY2UuZ2V0TmFtZSgpfWBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5lbWl0KCdjaGF0JywgZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGFyZ2V0LnNldEdhbWVtb2RlKGdldEdhbWV0eXBlSWQoZ2FtZW1vZGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXIoZGlzcGF0Y2hlcjogQ29tbWFuZERpc3BhdGNoZXI8YW55Pikge1xuICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyKFxuICAgICAgICAgICAgbGl0ZXJhbCgnZ2FtZW1vZGUnKS50aGVuKFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdnYW1lbW9kZScsIG5ldyBDb21tYW5kQXJndW1lbnRHYW1lbW9kZSgpKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdwbGF5ZXInLCBuZXcgQ29tbWFuZEFyZ3VtZW50RW50aXR5KHsgbmFtZTogJ3BsYXllcicsIG9wdGlvbmFsOiB0cnVlIH0pKS5leGVjdXRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ3BsYXllcicpIGFzIFBsYXllcltdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdhbWVtb2RlID0gY29udGV4dC5nZXRBcmd1bWVudCgnZ2FtZW1vZGUnKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBwbGF5ZXJgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMubWFwKGFzeW5jICh0YXJnZXQpID0+IGF3YWl0IHRoaXMuc2V0R2FtZW1vZGUoc291cmNlLCB0YXJnZXQsIGdhbWVtb2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGVzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdhbWVtb2RlID0gY29udGV4dC5nZXRBcmd1bWVudCgnZ2FtZW1vZGUnKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0R2FtZW1vZGUoc291cmNlLCBzb3VyY2UsIGdhbWVtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiQ29tbWFuZCIsIkNoYXRFdmVudCIsIkNoYXQiLCJnZXRHYW1ldHlwZUlkIiwibGl0ZXJhbCIsImFyZ3VtZW50IiwiQ29tbWFuZEFyZ3VtZW50R2FtZW1vZGUiLCJDb21tYW5kQXJndW1lbnRFbnRpdHkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBZUEsTUFBcUIsd0JBQXdCQSx1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