@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
47 lines (46 loc) • 7.67 kB
JavaScript
import { Command } from "../Command.es.js";
import { PlayerArgumentCommand } from "../CommandArguments.es.js";
import { argument, greedyString, literal } from "@jsprismarine/brigadier";
//#region src/command/vanilla/BanCommand.ts
/**
* Ban a player.
* @remarks the `/ban` command.
*/
var BanCommand = class extends Command {
constructor() {
super({
id: "minecraft:ban",
description: "Ban a player.",
permission: "minecraft.command.ban"
});
}
async register(dispatcher) {
dispatcher.register(literal("ban").then(argument("player", new PlayerArgumentCommand({ name: "player" })).then(argument("reason", greedyString()).executes(async (context) => {
const source = context.getSource();
const reason = context.getArgument("reason");
const target = context.getArgument("player");
const player = source.getServer().getSessionManager().getAllPlayers().find((p) => p.getName() === target);
if (player) try {
await player.kick(`You have been banned from the server due to: \n\n${reason}!`);
} catch (error) {
source.getServer().getLogger().error(error);
}
await source.getServer().getBanManager().setBanned(target, reason);
return `Banned ${player ? player.getFormattedUsername() : target} due to: ${reason}!`;
})).executes(async (context) => {
const source = context.getSource();
const target = context.getArgument("player");
const player = source.getServer().getSessionManager().getAllPlayers().find((p) => p.getName() === target);
if (player) try {
await player.kick(`You have been banned!`);
} catch (error) {
source.getServer().getLogger().error(error);
}
await source.getServer().getBanManager().setBanned(target);
return `Banned ${player ? player.getFormattedUsername() : target}`;
})));
}
};
//#endregion
export { BanCommand as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFuQ29tbWFuZC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZC92YW5pbGxhL0JhbkNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kRGlzcGF0Y2hlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IGFyZ3VtZW50LCBncmVlZHlTdHJpbmcsIGxpdGVyYWwgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5cbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmQnO1xuaW1wb3J0IHsgUGxheWVyQXJndW1lbnRDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5cbi8qKlxuICogQmFuIGEgcGxheWVyLlxuICogQHJlbWFya3MgdGhlIGAvYmFuYCBjb21tYW5kLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYW5Db21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBpZDogJ21pbmVjcmFmdDpiYW4nLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCYW4gYSBwbGF5ZXIuJyxcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdtaW5lY3JhZnQuY29tbWFuZC5iYW4nXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCdiYW4nKS50aGVuKFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdwbGF5ZXInLCBuZXcgUGxheWVyQXJndW1lbnRDb21tYW5kKHsgbmFtZTogJ3BsYXllcicgfSkpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3JlYXNvbicsIGdyZWVkeVN0cmluZygpKS5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ3JlYXNvbicpIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwbGF5ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGF5ZXIgPSBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRTZXNzaW9uTWFuYWdlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRBbGxQbGF5ZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHApID0+IHAuZ2V0TmFtZSgpID09PSB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXllcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLmtpY2soYFlvdSBoYXZlIGJlZW4gYmFubmVkIGZyb20gdGhlIHNlcnZlciBkdWUgdG86IFxcblxcbiR7cmVhc29ufSFgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmdldFNlcnZlcigpLmdldExvZ2dlcigpLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5nZXRCYW5NYW5hZ2VyKCkuc2V0QmFubmVkKHRhcmdldCwgcmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEJhbm5lZCAke3BsYXllciA/IHBsYXllci5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpIDogdGFyZ2V0fSBkdWUgdG86ICR7cmVhc29ufSFgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGF5ZXIgPSBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U2VydmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U2Vzc2lvbk1hbmFnZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRBbGxQbGF5ZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgocCkgPT4gcC5nZXROYW1lKCkgPT09IHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIua2ljayhgWW91IGhhdmUgYmVlbiBiYW5uZWQhYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0U2VydmVyKCkuZ2V0TG9nZ2VyKCkuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLmdldFNlcnZlcigpLmdldEJhbk1hbmFnZXIoKS5zZXRCYW5uZWQodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgQmFubmVkICR7cGxheWVyID8gcGxheWVyLmdldEZvcm1hdHRlZFVzZXJuYW1lKCkgOiB0YXJnZXR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBV0EsSUFBcUIsYUFBckIsY0FBd0MsUUFBUTtDQUM1QyxjQUFxQjtFQUNqQixNQUFNO0dBQ0YsSUFBSTtHQUNKLGFBQWE7R0FDYixZQUFZO0VBQ2hCLENBQUM7Q0FDTDtDQUVBLE1BQWEsU0FBUyxZQUFvQztFQUN0RCxXQUFXLFNBQ1AsUUFBUSxLQUFLLEVBQUUsS0FDWCxTQUFTLFVBQVUsSUFBSSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQzNELEtBQ0csU0FBUyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsT0FBTyxZQUFZO0dBQzNELE1BQU0sU0FBUyxRQUFRLFVBQVU7R0FDakMsTUFBTSxTQUFTLFFBQVEsWUFBWSxRQUFRO0dBQzNDLE1BQU0sU0FBUyxRQUFRLFlBQVksUUFBUTtHQUMzQyxNQUFNLFNBQVMsT0FDVixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxNQUFNLE1BQU0sRUFBRSxRQUFRLE1BQU0sTUFBTTtHQUV2QyxJQUFJLFFBQ0EsSUFBSTtJQUNBLE1BQU0sT0FBTyxLQUFLLG9EQUFvRCxPQUFPLEVBQUU7R0FDbkYsU0FBUyxPQUFZO0lBQ2pCLE9BQU8sVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEtBQUs7R0FDOUM7R0FHSixNQUFNLE9BQU8sVUFBVSxFQUFFLGNBQWMsRUFBRSxVQUFVLFFBQVEsTUFBTTtHQUNqRSxPQUFPLFVBQVUsU0FBUyxPQUFPLHFCQUFxQixJQUFJLE9BQU8sV0FBVyxPQUFPO0VBQ3ZGLENBQUMsQ0FDTCxFQUNDLFNBQVMsT0FBTyxZQUFZO0dBQ3pCLE1BQU0sU0FBUyxRQUFRLFVBQVU7R0FDakMsTUFBTSxTQUFTLFFBQVEsWUFBWSxRQUFRO0dBQzNDLE1BQU0sU0FBUyxPQUNWLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLE1BQU0sTUFBTSxFQUFFLFFBQVEsTUFBTSxNQUFNO0dBRXZDLElBQUksUUFDQSxJQUFJO0lBQ0EsTUFBTSxPQUFPLEtBQUssdUJBQXVCO0dBQzdDLFNBQVMsT0FBWTtJQUNqQixPQUFPLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLO0dBQzlDO0dBR0osTUFBTSxPQUFPLFVBQVUsRUFBRSxjQUFjLEVBQUUsVUFBVSxNQUFNO0dBQ3pELE9BQU8sVUFBVSxTQUFTLE9BQU8scUJBQXFCLElBQUk7RUFDOUQsQ0FBQyxDQUNULENBQ0o7Q0FDSjtBQUNKIn0=