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