UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

60 lines (57 loc) 10.5 kB
import { CommandArgumentEntity, CommandArgumentCommand } from '../CommandArguments.es.js'; import { literal, argument, greedyString } from '@jsprismarine/brigadier'; import { Command } from '../Command.es.js'; class ExecuteCommand extends Command { constructor() { super({ id: "minecraft:execute", description: "Executes a command on a player target.", permission: "minecraft.command.execute" }); } async register(dispatcher) { dispatcher.register( literal("execute").then( argument("player", new CommandArgumentEntity()).then( argument("command", new CommandArgumentCommand()).executes(async (context) => { const source = context.getSource(); const targets = context.getArgument("player"); const command = context.getArgument("command"); await Promise.all( targets.map( async (target) => source.getServer().getCommandManager().dispatchCommand(source, target, command) ) ); }).then( argument("arguments", greedyString()).executes(async (context) => { const source = context.getSource(); const targets = context.getArgument("player"); const command = context.getArgument("command"); const args = context.getArgument("arguments"); await Promise.all( targets.map( async (target) => source.getServer().getCommandManager().dispatchCommand(source, target, `${command} ${args}`) ) ); }) ) ) ).then( argument("command", new CommandArgumentCommand()).executes(async (context) => { const source = context.getSource(); const command = context.getArgument("command"); await source.getServer().getCommandManager().dispatchCommand(source, source, command); }).then( argument("arguments", greedyString()).executes(async (context) => { const source = context.getSource(); const command = context.getArgument("command"); const args = context.getArgument("arguments"); await source.getServer().getCommandManager().dispatchCommand(source, source, `${command} ${args}`); }) ) ) ); } } export { ExecuteCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0ZUNvbW1hbmQuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kL3ZhbmlsbGEvRXhlY3V0ZUNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZEFyZ3VtZW50Q29tbWFuZCwgQ29tbWFuZEFyZ3VtZW50RW50aXR5IH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmREaXNwYXRjaGVyIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuaW1wb3J0IHsgYXJndW1lbnQsIGdyZWVkeVN0cmluZywgbGl0ZXJhbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmQnO1xuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4uLy4uL1BsYXllcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4ZWN1dGVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBpZDogJ21pbmVjcmFmdDpleGVjdXRlJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRXhlY3V0ZXMgYSBjb21tYW5kIG9uIGEgcGxheWVyIHRhcmdldC4nLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogJ21pbmVjcmFmdC5jb21tYW5kLmV4ZWN1dGUnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCdleGVjdXRlJylcbiAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3BsYXllcicsIG5ldyBDb21tYW5kQXJndW1lbnRFbnRpdHkoKSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdjb21tYW5kJywgbmV3IENvbW1hbmRBcmd1bWVudENvbW1hbmQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldHMgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwbGF5ZXInKSBhcyBQbGF5ZXJbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ2NvbW1hbmQnKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy5tYXAoYXN5bmMgKHRhcmdldCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0U2VydmVyKCkuZ2V0Q29tbWFuZE1hbmFnZXIoKS5kaXNwYXRjaENvbW1hbmQoc291cmNlLCB0YXJnZXQsIGNvbW1hbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ2FyZ3VtZW50cycsIGdyZWVkeVN0cmluZygpKS5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRzID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJykgYXMgUGxheWVyW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kID0gY29udGV4dC5nZXRBcmd1bWVudCgnY29tbWFuZCcpIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdhcmd1bWVudHMnKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMubWFwKGFzeW5jICh0YXJnZXQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0Q29tbWFuZE1hbmFnZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpc3BhdGNoQ29tbWFuZChzb3VyY2UsIHRhcmdldCwgYCR7Y29tbWFuZH0gJHthcmdzfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdjb21tYW5kJywgbmV3IENvbW1hbmRBcmd1bWVudENvbW1hbmQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdjb21tYW5kJykgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRTZXJ2ZXIoKS5nZXRDb21tYW5kTWFuYWdlcigpLmRpc3BhdGNoQ29tbWFuZChzb3VyY2UsIHNvdXJjZSwgY29tbWFuZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ2FyZ3VtZW50cycsIGdyZWVkeVN0cmluZygpKS5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ2NvbW1hbmQnKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdhcmd1bWVudHMnKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0Q29tbWFuZE1hbmFnZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpc3BhdGNoQ29tbWFuZChzb3VyY2UsIHNvdXJjZSwgYCR7Y29tbWFuZH0gJHthcmdzfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBT0EsTUFBcUIsdUJBQXVCLE9BQVEsQ0FBQTtBQUFBLEVBQ3pDLFdBQWMsR0FBQTtBQUNqQixJQUFNLEtBQUEsQ0FBQTtBQUFBLE1BQ0YsRUFBSSxFQUFBLG1CQUFBO0FBQUEsTUFDSixXQUFhLEVBQUEsd0NBQUE7QUFBQSxNQUNiLFVBQVksRUFBQTtBQUFBLEtBQ2YsQ0FBQTtBQUFBO0FBQ0wsRUFFQSxNQUFhLFNBQVMsVUFBb0MsRUFBQTtBQUN0RCxJQUFXLFVBQUEsQ0FBQSxRQUFBO0FBQUEsTUFDUCxPQUFBLENBQVEsU0FBUyxDQUNaLENBQUEsSUFBQTtBQUFBLFFBQ0csUUFBUyxDQUFBLFFBQUEsRUFBVSxJQUFJLHFCQUFBLEVBQXVCLENBQUUsQ0FBQSxJQUFBO0FBQUEsVUFDNUMsUUFBQSxDQUFTLFdBQVcsSUFBSSxzQkFBQSxFQUF3QixDQUMzQyxDQUFBLFFBQUEsQ0FBUyxPQUFPLE9BQVksS0FBQTtBQUN6QixZQUFNLE1BQUEsTUFBQSxHQUFTLFFBQVEsU0FBVSxFQUFBO0FBQ2pDLFlBQU0sTUFBQSxPQUFBLEdBQVUsT0FBUSxDQUFBLFdBQUEsQ0FBWSxRQUFRLENBQUE7QUFDNUMsWUFBTSxNQUFBLE9BQUEsR0FBVSxPQUFRLENBQUEsV0FBQSxDQUFZLFNBQVMsQ0FBQTtBQUM3QyxZQUFBLE1BQU0sT0FBUSxDQUFBLEdBQUE7QUFBQSxjQUNWLE9BQVEsQ0FBQSxHQUFBO0FBQUEsZ0JBQUksT0FBTyxNQUNmLEtBQUEsTUFBQSxDQUFPLFNBQVUsRUFBQSxDQUFFLG1CQUFvQixDQUFBLGVBQUEsQ0FBZ0IsTUFBUSxFQUFBLE1BQUEsRUFBUSxPQUFPO0FBQUE7QUFDbEYsYUFDSjtBQUFBLFdBQ0gsQ0FDQSxDQUFBLElBQUE7QUFBQSxZQUNHLFNBQVMsV0FBYSxFQUFBLFlBQUEsRUFBYyxDQUFFLENBQUEsUUFBQSxDQUFTLE9BQU8sT0FBWSxLQUFBO0FBQzlELGNBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsY0FBTSxNQUFBLE9BQUEsR0FBVSxPQUFRLENBQUEsV0FBQSxDQUFZLFFBQVEsQ0FBQTtBQUM1QyxjQUFNLE1BQUEsT0FBQSxHQUFVLE9BQVEsQ0FBQSxXQUFBLENBQVksU0FBUyxDQUFBO0FBQzdDLGNBQU0sTUFBQSxJQUFBLEdBQU8sT0FBUSxDQUFBLFdBQUEsQ0FBWSxXQUFXLENBQUE7QUFFNUMsY0FBQSxNQUFNLE9BQVEsQ0FBQSxHQUFBO0FBQUEsZ0JBQ1YsT0FBUSxDQUFBLEdBQUE7QUFBQSxrQkFBSSxPQUFPLE1BQUEsS0FDZixNQUNLLENBQUEsU0FBQSxHQUNBLGlCQUFrQixFQUFBLENBQ2xCLGVBQWdCLENBQUEsTUFBQSxFQUFRLE1BQVEsRUFBQSxDQUFBLEVBQUcsT0FBTyxDQUFBLENBQUEsRUFBSSxJQUFJLENBQUUsQ0FBQTtBQUFBO0FBQzdELGVBQ0o7QUFBQSxhQUNIO0FBQUE7QUFDTDtBQUNSLE9BRUgsQ0FBQSxJQUFBO0FBQUEsUUFDRyxRQUFBLENBQVMsV0FBVyxJQUFJLHNCQUFBLEVBQXdCLENBQzNDLENBQUEsUUFBQSxDQUFTLE9BQU8sT0FBWSxLQUFBO0FBQ3pCLFVBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsVUFBTSxNQUFBLE9BQUEsR0FBVSxPQUFRLENBQUEsV0FBQSxDQUFZLFNBQVMsQ0FBQTtBQUM3QyxVQUFNLE1BQUEsTUFBQSxDQUFPLFdBQVksQ0FBQSxpQkFBQSxHQUFvQixlQUFnQixDQUFBLE1BQUEsRUFBUSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFNBQ3ZGLENBQ0EsQ0FBQSxJQUFBO0FBQUEsVUFDRyxTQUFTLFdBQWEsRUFBQSxZQUFBLEVBQWMsQ0FBRSxDQUFBLFFBQUEsQ0FBUyxPQUFPLE9BQVksS0FBQTtBQUM5RCxZQUFNLE1BQUEsTUFBQSxHQUFTLFFBQVEsU0FBVSxFQUFBO0FBQ2pDLFlBQU0sTUFBQSxPQUFBLEdBQVUsT0FBUSxDQUFBLFdBQUEsQ0FBWSxTQUFTLENBQUE7QUFDN0MsWUFBTSxNQUFBLElBQUEsR0FBTyxPQUFRLENBQUEsV0FBQSxDQUFZLFdBQVcsQ0FBQTtBQUM1QyxZQUFBLE1BQU0sTUFDRCxDQUFBLFNBQUEsRUFDQSxDQUFBLGlCQUFBLEVBQ0EsQ0FBQSxlQUFBLENBQWdCLE1BQVEsRUFBQSxNQUFBLEVBQVEsQ0FBRyxFQUFBLE9BQU8sQ0FBSSxDQUFBLEVBQUEsSUFBSSxDQUFFLENBQUEsQ0FBQTtBQUFBLFdBQzVEO0FBQUE7QUFDTDtBQUNSLEtBQ1I7QUFBQTtBQUVSOzs7OyJ9