UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

42 lines (39 loc) 5.55 kB
import { literal, argument } from '@jsprismarine/brigadier'; import { PlayerNotFoundError } from '@jsprismarine/errors'; import { Chat } from '../../chat/Chat.es.js'; import ChatEvent from '../../events/chat/ChatEvent.es.js'; import { Command } from '../Command.es.js'; import { PlayerArgumentCommand } from '../CommandArguments.es.js'; class OpCommand 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`; }) ) ); } } export { OpCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BDb21tYW5kLmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZC92YW5pbGxhL09wQ29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1hbmREaXNwYXRjaGVyIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuaW1wb3J0IHsgYXJndW1lbnQsIGxpdGVyYWwgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5cbmltcG9ydCB7IFBsYXllck5vdEZvdW5kRXJyb3IgfSBmcm9tICdAanNwcmlzbWFyaW5lL2Vycm9ycyc7XG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi4vLi4vUGxheWVyJztcbmltcG9ydCB7IENoYXQgfSBmcm9tICcuLi8uLi9jaGF0L0NoYXQnO1xuaW1wb3J0IENoYXRFdmVudCBmcm9tICcuLi8uLi9ldmVudHMvY2hhdC9DaGF0RXZlbnQnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmQnO1xuaW1wb3J0IHsgUGxheWVyQXJndW1lbnRDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6b3AnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdHcmFudCBwbGF5ZXIgb3Agc3RhdHVzLicsXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAnbWluZWNyYWZ0LmNvbW1hbmQub3AnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCdvcCcpLnRoZW4oXG4gICAgICAgICAgICAgICAgYXJndW1lbnQoJ3BsYXllcicsIG5ldyBQbGF5ZXJBcmd1bWVudENvbW1hbmQoeyBuYW1lOiAncGxheWVyJyB9KSkuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJuYW1lID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc291cmNlLmdldFNlcnZlcigpLmdldFNlc3Npb25NYW5hZ2VyKCkuZ2V0UGxheWVyQnlFeGFjdE5hbWUodXNlcm5hbWUpOyAvLyBUT0RPOiBieSBuYW1lIG5vdCBleGFjdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkgdGhyb3cgbmV3IFBsYXllck5vdEZvdW5kRXJyb3IodXNlcm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5nZXRQZXJtaXNzaW9uTWFuYWdlcigpLnNldE9wKHVzZXJuYW1lLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDaGF0RXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ2hhdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGVyOiBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ8KnZVlvdSBhcmUgbm93IG9wIScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogYCoucGxheWVyLiR7dGFyZ2V0LmdldE5hbWUoKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0YXJnZXQuZ2V0U2VydmVyKCkuZW1pdCgnY2hhdCcsIGV2ZW50KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE1hZGUgJHt1c2VybmFtZX0gYSBzZXJ2ZXIgb3BlcmF0b3JgO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQSxNQUFxQixrQkFBa0IsT0FBUSxDQUFBO0FBQUEsRUFDcEMsV0FBYyxHQUFBO0FBQ2pCLElBQU0sS0FBQSxDQUFBO0FBQUEsTUFDRixFQUFJLEVBQUEsY0FBQTtBQUFBLE1BQ0osV0FBYSxFQUFBLHlCQUFBO0FBQUEsTUFDYixVQUFZLEVBQUE7QUFBQSxLQUNmLENBQUE7QUFBQTtBQUNMLEVBRUEsTUFBYSxTQUFTLFVBQW9DLEVBQUE7QUFDdEQsSUFBVyxVQUFBLENBQUEsUUFBQTtBQUFBLE1BQ1AsT0FBQSxDQUFRLElBQUksQ0FBRSxDQUFBLElBQUE7QUFBQSxRQUNWLFFBQVMsQ0FBQSxRQUFBLEVBQVUsSUFBSSxxQkFBQSxDQUFzQixFQUFFLElBQUEsRUFBTSxRQUFTLEVBQUMsQ0FBQyxDQUFBLENBQUUsUUFBUyxDQUFBLE9BQU8sT0FBWSxLQUFBO0FBQzFGLFVBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsVUFBTSxNQUFBLFFBQUEsR0FBVyxPQUFRLENBQUEsV0FBQSxDQUFZLFFBQVEsQ0FBQTtBQUU3QyxVQUFBLE1BQU0sU0FBUyxNQUFPLENBQUEsU0FBQSxHQUFZLGlCQUFrQixFQUFBLENBQUUscUJBQXFCLFFBQVEsQ0FBQTtBQUNuRixVQUFBLElBQUksQ0FBQyxNQUFBLEVBQWMsTUFBQSxJQUFJLG9CQUFvQixRQUFRLENBQUE7QUFFbkQsVUFBQSxNQUFNLE9BQU8sU0FBVSxFQUFBLENBQUUsc0JBQXVCLENBQUEsS0FBQSxDQUFNLFVBQVUsSUFBSSxDQUFBO0FBRXBFLFVBQUEsTUFBTSxRQUFRLElBQUksU0FBQTtBQUFBLFlBQ2QsSUFBSSxJQUFLLENBQUE7QUFBQSxjQUNMLE1BQVEsRUFBQSxNQUFBO0FBQUEsY0FDUixPQUFTLEVBQUEsbUJBQUE7QUFBQSxjQUNULE9BQVMsRUFBQSxDQUFBLFNBQUEsRUFBWSxNQUFPLENBQUEsT0FBQSxFQUFTLENBQUE7QUFBQSxhQUN4QztBQUFBLFdBQ0w7QUFDQSxVQUFBLE1BQU0sTUFBTyxDQUFBLFNBQUEsRUFBWSxDQUFBLElBQUEsQ0FBSyxRQUFRLEtBQUssQ0FBQTtBQUUzQyxVQUFBLE9BQU8sUUFBUSxRQUFRLENBQUEsa0JBQUEsQ0FBQTtBQUFBLFNBQzFCO0FBQUE7QUFDTCxLQUNKO0FBQUE7QUFFUjs7OzsifQ==