UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

55 lines (51 loc) 8.77 kB
import { literal, argument, greedyString } from '@jsprismarine/brigadier'; import { Command } from '../Command.es.js'; import { PlayerArgumentCommand } from '../CommandArguments.es.js'; class BanCommand 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: ${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}`; }) ) ); } } export { BanCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFuQ29tbWFuZC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmQvdmFuaWxsYS9CYW5Db21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZERpc3BhdGNoZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5pbXBvcnQgeyBhcmd1bWVudCwgZ3JlZWR5U3RyaW5nLCBsaXRlcmFsIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuXG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi4vLi4vUGxheWVyJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuLi9Db21tYW5kJztcbmltcG9ydCB7IFBsYXllckFyZ3VtZW50Q29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmRBcmd1bWVudHMnO1xuXG4vKipcbiAqIEJhbiBhIHBsYXllci5cbiAqIEByZW1hcmtzIHRoZSBgL2JhbmAgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFuQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6YmFuJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQmFuIGEgcGxheWVyLicsXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAnbWluZWNyYWZ0LmNvbW1hbmQuYmFuJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXIoZGlzcGF0Y2hlcjogQ29tbWFuZERpc3BhdGNoZXI8YW55Pikge1xuICAgICAgICBkaXNwYXRjaGVyLnJlZ2lzdGVyKFxuICAgICAgICAgICAgbGl0ZXJhbCgnYmFuJykudGhlbihcbiAgICAgICAgICAgICAgICBhcmd1bWVudCgncGxheWVyJywgbmV3IFBsYXllckFyZ3VtZW50Q29tbWFuZCh7IG5hbWU6ICdwbGF5ZXInIH0pKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdyZWFzb24nLCBncmVlZHlTdHJpbmcoKSkuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFzb24gPSBjb250ZXh0LmdldEFyZ3VtZW50KCdyZWFzb24nKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxheWVyID0gc291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRTZXJ2ZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U2Vzc2lvbk1hbmFnZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0QWxsUGxheWVycygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChwKSA9PiBwLmdldE5hbWUoKSA9PT0gdGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5raWNrKGBZb3UgaGF2ZSBiZWVuIGJhbm5lZCBmcm9tIHRoZSBzZXJ2ZXIgZHVlIHRvOiBcXG5cXG4ke3JlYXNvbn0hYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5nZXRTZXJ2ZXIoKS5nZXRMb2dnZXIoKS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzb3VyY2UuZ2V0U2VydmVyKCkuZ2V0QmFuTWFuYWdlcigpLnNldEJhbm5lZCh0YXJnZXQsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBCYW5uZWQgJHtwbGF5ZXIgPyBwbGF5ZXIuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKSA6IHRhcmdldH0gZHVlIHRvOiAke3JlYXNvbn0hYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGVzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ3BsYXllcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxheWVyID0gc291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlc3Npb25NYW5hZ2VyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0QWxsUGxheWVycygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHApID0+IHAuZ2V0TmFtZSgpID09PSB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGxheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLmtpY2soYFlvdSBoYXZlIGJlZW4gYmFubmVkIWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmdldFNlcnZlcigpLmdldExvZ2dlcigpLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5nZXRCYW5NYW5hZ2VyKCkuc2V0QmFubmVkKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEJhbm5lZCAke3BsYXllciA/IHBsYXllci5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpIDogdGFyZ2V0fWA7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFXQSxNQUFxQixtQkFBbUIsT0FBUSxDQUFBO0FBQUEsRUFDckMsV0FBYyxHQUFBO0FBQ2pCLElBQU0sS0FBQSxDQUFBO0FBQUEsTUFDRixFQUFJLEVBQUEsZUFBQTtBQUFBLE1BQ0osV0FBYSxFQUFBLGVBQUE7QUFBQSxNQUNiLFVBQVksRUFBQTtBQUFBLEtBQ2YsQ0FBQTtBQUFBO0FBQ0wsRUFFQSxNQUFhLFNBQVMsVUFBb0MsRUFBQTtBQUN0RCxJQUFXLFVBQUEsQ0FBQSxRQUFBO0FBQUEsTUFDUCxPQUFBLENBQVEsS0FBSyxDQUFFLENBQUEsSUFBQTtBQUFBLFFBQ1gsUUFBQSxDQUFTLFVBQVUsSUFBSSxxQkFBQSxDQUFzQixFQUFFLElBQU0sRUFBQSxRQUFBLEVBQVUsQ0FBQyxDQUMzRCxDQUFBLElBQUE7QUFBQSxVQUNHLFNBQVMsUUFBVSxFQUFBLFlBQUEsRUFBYyxDQUFFLENBQUEsUUFBQSxDQUFTLE9BQU8sT0FBWSxLQUFBO0FBQzNELFlBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsWUFBTSxNQUFBLE1BQUEsR0FBUyxPQUFRLENBQUEsV0FBQSxDQUFZLFFBQVEsQ0FBQTtBQUMzQyxZQUFNLE1BQUEsTUFBQSxHQUFTLE9BQVEsQ0FBQSxXQUFBLENBQVksUUFBUSxDQUFBO0FBQzNDLFlBQUEsTUFBTSxNQUFTLEdBQUEsTUFBQSxDQUNWLFNBQVUsRUFBQSxDQUNWLG1CQUNBLENBQUEsYUFBQSxFQUNBLENBQUEsSUFBQSxDQUFLLENBQUMsQ0FBQSxLQUFNLENBQUUsQ0FBQSxPQUFBLE9BQWMsTUFBTSxDQUFBO0FBRXZDLFlBQUEsSUFBSSxNQUFRLEVBQUE7QUFDUixjQUFJLElBQUE7QUFDQSxnQkFBQSxNQUFNLE9BQU8sSUFBSyxDQUFBLENBQUE7O0FBQUEsRUFBb0QsTUFBTSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQUEsdUJBQzFFLEtBQVksRUFBQTtBQUNqQixnQkFBQSxNQUFBLENBQU8sU0FBVSxFQUFBLENBQUUsU0FBVSxFQUFBLENBQUUsTUFBTSxLQUFLLENBQUE7QUFBQTtBQUM5QztBQUdKLFlBQUEsTUFBTSxPQUFPLFNBQVUsRUFBQSxDQUFFLGVBQWdCLENBQUEsU0FBQSxDQUFVLFFBQVEsTUFBTSxDQUFBO0FBQ2pFLFlBQUEsT0FBTyxVQUFVLE1BQVMsR0FBQSxNQUFBLENBQU8sc0JBQXlCLEdBQUEsTUFBTSxZQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUE7QUFBQSxXQUNyRjtBQUFBLFNBQ0wsQ0FDQyxRQUFTLENBQUEsT0FBTyxPQUFZLEtBQUE7QUFDekIsVUFBTSxNQUFBLE1BQUEsR0FBUyxRQUFRLFNBQVUsRUFBQTtBQUNqQyxVQUFNLE1BQUEsTUFBQSxHQUFTLE9BQVEsQ0FBQSxXQUFBLENBQVksUUFBUSxDQUFBO0FBQzNDLFVBQUEsTUFBTSxNQUFTLEdBQUEsTUFBQSxDQUNWLFNBQVUsRUFBQSxDQUNWLG1CQUNBLENBQUEsYUFBQSxFQUNBLENBQUEsSUFBQSxDQUFLLENBQUMsQ0FBQSxLQUFNLENBQUUsQ0FBQSxPQUFBLE9BQWMsTUFBTSxDQUFBO0FBRXZDLFVBQUEsSUFBSSxNQUFRLEVBQUE7QUFDUixZQUFJLElBQUE7QUFDQSxjQUFNLE1BQUEsTUFBQSxDQUFPLEtBQUssQ0FBdUIscUJBQUEsQ0FBQSxDQUFBO0FBQUEscUJBQ3BDLEtBQVksRUFBQTtBQUNqQixjQUFBLE1BQUEsQ0FBTyxTQUFVLEVBQUEsQ0FBRSxTQUFVLEVBQUEsQ0FBRSxNQUFNLEtBQUssQ0FBQTtBQUFBO0FBQzlDO0FBR0osVUFBQSxNQUFNLE9BQU8sU0FBVSxFQUFBLENBQUUsYUFBYyxFQUFBLENBQUUsVUFBVSxNQUFNLENBQUE7QUFDekQsVUFBQSxPQUFPLENBQVUsT0FBQSxFQUFBLE1BQUEsR0FBUyxNQUFPLENBQUEsb0JBQUEsS0FBeUIsTUFBTSxDQUFBLENBQUE7QUFBQSxTQUNuRTtBQUFBO0FBQ1QsS0FDSjtBQUFBO0FBRVI7Ozs7In0=