@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
72 lines (67 loc) • 9.95 kB
JavaScript
;
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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