UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

36 lines (35 loc) 4.92 kB
import ChatEvent from "../../events/chat/ChatEvent.es.js"; import { Command } from "../Command.es.js"; import { PlayerArgumentCommand } from "../CommandArguments.es.js"; import { Chat } from "../../chat/Chat.es.js"; import { PlayerNotFoundError } from "@jsprismarine/errors"; import { argument, literal } from "@jsprismarine/brigadier"; //#region src/command/vanilla/OpCommand.ts var OpCommand = class extends Command { constructor() { super({ id: "minecraft:op", description: "Grant player op status.", permission: "minecraft.command.op" }); } async register(dispatcher) { dispatcher.register(literal("op").then(argument("player", new PlayerArgumentCommand({ name: "player" })).executes(async (context) => { const source = context.getSource(); const username = context.getArgument("player"); const target = source.getServer().getSessionManager().getPlayerByExactName(username); if (!target) throw new PlayerNotFoundError(username); await source.getServer().getPermissionManager().setOp(username, true); const event = new ChatEvent(new Chat({ sender: source, message: "§eYou are now op!", channel: `*.player.${target.getName()}` })); await target.getServer().emit("chat", event); return `Made ${username} a server operator`; }))); } }; //#endregion export { OpCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BDb21tYW5kLmVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kL3ZhbmlsbGEvT3BDb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZERpc3BhdGNoZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5pbXBvcnQgeyBhcmd1bWVudCwgbGl0ZXJhbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcblxuaW1wb3J0IHsgUGxheWVyTm90Rm91bmRFcnJvciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvZXJyb3JzJztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHsgQ2hhdCB9IGZyb20gJy4uLy4uL2NoYXQvQ2hhdCc7XG5pbXBvcnQgQ2hhdEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50cy9jaGF0L0NoYXRFdmVudCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZCc7XG5pbXBvcnQgeyBQbGF5ZXJBcmd1bWVudENvbW1hbmQgfSBmcm9tICcuLi9Db21tYW5kQXJndW1lbnRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBpZDogJ21pbmVjcmFmdDpvcCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0dyYW50IHBsYXllciBvcCBzdGF0dXMuJyxcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdtaW5lY3JhZnQuY29tbWFuZC5vcCdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKGRpc3BhdGNoZXI6IENvbW1hbmREaXNwYXRjaGVyPGFueT4pIHtcbiAgICAgICAgZGlzcGF0Y2hlci5yZWdpc3RlcihcbiAgICAgICAgICAgIGxpdGVyYWwoJ29wJykudGhlbihcbiAgICAgICAgICAgICAgICBhcmd1bWVudCgncGxheWVyJywgbmV3IFBsYXllckFyZ3VtZW50Q29tbWFuZCh7IG5hbWU6ICdwbGF5ZXInIH0pKS5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlcm5hbWUgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwbGF5ZXInKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzb3VyY2UuZ2V0U2VydmVyKCkuZ2V0U2Vzc2lvbk1hbmFnZXIoKS5nZXRQbGF5ZXJCeUV4YWN0TmFtZSh1c2VybmFtZSk7IC8vIFRPRE86IGJ5IG5hbWUgbm90IGV4YWN0XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB0aHJvdyBuZXcgUGxheWVyTm90Rm91bmRFcnJvcih1c2VybmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLmdldFNlcnZlcigpLmdldFBlcm1pc3Npb25NYW5hZ2VyKCkuc2V0T3AodXNlcm5hbWUsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IENoYXRFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDaGF0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXI6IHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnwqdlWW91IGFyZSBub3cgb3AhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBgKi5wbGF5ZXIuJHt0YXJnZXQuZ2V0TmFtZSgpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5nZXRTZXJ2ZXIoKS5lbWl0KCdjaGF0JywgZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTWFkZSAke3VzZXJuYW1lfSBhIHNlcnZlciBvcGVyYXRvcmA7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQSxJQUFxQixZQUFyQixjQUF1QyxRQUFRO0NBQzNDLGNBQXFCO0VBQ2pCLE1BQU07R0FDRixJQUFJO0dBQ0osYUFBYTtHQUNiLFlBQVk7RUFDaEIsQ0FBQztDQUNMO0NBRUEsTUFBYSxTQUFTLFlBQW9DO0VBQ3RELFdBQVcsU0FDUCxRQUFRLElBQUksRUFBRSxLQUNWLFNBQVMsVUFBVSxJQUFJLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLE9BQU8sWUFBWTtHQUMxRixNQUFNLFNBQVMsUUFBUSxVQUFVO0dBQ2pDLE1BQU0sV0FBVyxRQUFRLFlBQVksUUFBUTtHQUU3QyxNQUFNLFNBQVMsT0FBTyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLFFBQVE7R0FDbkYsSUFBSSxDQUFDLFFBQVEsTUFBTSxJQUFJLG9CQUFvQixRQUFRO0dBRW5ELE1BQU0sT0FBTyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLElBQUk7R0FFcEUsTUFBTSxRQUFRLElBQUksVUFDZCxJQUFJLEtBQUs7SUFDTCxRQUFRO0lBQ1IsU0FBUztJQUNULFNBQVMsWUFBWSxPQUFPLFFBQVE7R0FDeEMsQ0FBQyxDQUNMO0dBQ0EsTUFBTSxPQUFPLFVBQVUsRUFBRSxLQUFLLFFBQVEsS0FBSztHQUUzQyxPQUFPLFFBQVEsU0FBUztFQUM1QixDQUFDLENBQ0wsQ0FDSjtDQUNKO0FBQ0oifQ==