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