@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
36 lines (35 loc) • 4.92 kB
JavaScript
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==