UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

109 lines (104 loc) • 19.6 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const brigadier = require('@jsprismarine/brigadier'); const command_CommandArguments = require('../CommandArguments.cjs.cjs'); const math = require('@jsprismarine/math'); const network_type_MovementType = require('../../network/type/MovementType.cjs.cjs'); const command_Command = require('../Command.cjs.cjs'); class TpCommand extends command_Command.Command { constructor() { super({ id: "minecraft:tp", description: "Teleports a player to a specified location or another entity.", aliases: ["teleport"], permission: "minecraft.command.teleport" }); } async register(dispatcher) { dispatcher.register( brigadier.literal("tp").then( brigadier.argument("position", new command_CommandArguments.CommandArgumentPosition({ name: "destination" })).executes( async (context) => { const source = context.getSource(); if (!source.isPlayer()) throw new Error(`This command can't be run from the console`); const position = context.getArgument("position"); if (Number.isInteger(position.getX())) { if (position.getX() > 0) { position.setX(position.getX() - 0.5); } else position.setX(position.getX() + 0.5); } if (Number.isInteger(position.getZ())) { if (position.getZ() > 0) { position.setZ(position.getZ() - 0.5); } else position.setZ(position.getZ() + 0.5); } await source.setPosition({ position, type: network_type_MovementType.default.Teleport }); return `Teleported ${source.getFormattedUsername()} to ${position.getX()} ${position.getY()} ${position.getZ()}`; } ) ).then( brigadier.argument("player", new command_CommandArguments.CommandArgumentEntity({ name: "victim" })).then( brigadier.argument("position", new command_CommandArguments.CommandArgumentPosition({ name: "destination" })).executes( async (context) => { const targets = context.getArgument("player"); const position = context.getArgument("position"); if (Number.isInteger(position.getX())) { if (position.getX() > 0) { position.setX(position.getX() - 0.5); } else position.setX(position.getX() + 0.5); } if (Number.isInteger(position.getZ())) { if (position.getZ() > 0) { position.setZ(position.getZ() - 0.5); } else position.setZ(position.getZ() + 0.5); } if (!targets.length) throw new Error(`Cannot find specified player(s) & entit(y/ies)`); await Promise.all( targets.map( async (entity) => await entity.setPosition({ position, type: network_type_MovementType.default.Teleport }) ) ); return `Teleported ${targets.map((entity) => entity.getFormattedUsername()).join(", ")} to ${position.getX()} ${position.getY()} ${position.getZ()}`; } ) ).then( brigadier.argument("target", new command_CommandArguments.CommandArgumentEntity({ name: "destination" })).executes( async (context) => { const sources = context.getArgument("player"); const target = context.getArgument("target")?.[0]; if (!sources.length) throw new Error(`Cannot find specified player(s) & entit(y/ies)`); await Promise.all( sources.map( async (entity) => entity.setPosition({ position: target.getPosition(), type: network_type_MovementType.default.Teleport }) ) ); return `Teleported ${sources.map((entity) => entity.getFormattedUsername()).join(", ")} to ${target.getFormattedUsername()}`; } ) ).executes(async (context) => { const source = context.getSource(); const target = context.getArgument("player")?.[0]; if (!source.isPlayer()) throw new Error(`This command can't be run from the console`); await source.setPosition({ position: new math.Vector3(target.getX(), target.getY(), target.getZ()), type: network_type_MovementType.default.Teleport }); return `Teleported ${source.getFormattedUsername()} to ${target.getFormattedUsername()}`; }) ) ); } } exports.default = TpCommand; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHBDb21tYW5kLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kL3ZhbmlsbGEvVHBDb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZERpc3BhdGNoZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5pbXBvcnQgeyBhcmd1bWVudCwgbGl0ZXJhbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IENvbW1hbmRBcmd1bWVudEVudGl0eSwgQ29tbWFuZEFyZ3VtZW50UG9zaXRpb24gfSBmcm9tICcuLi9Db21tYW5kQXJndW1lbnRzJztcblxuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbWF0aCc7XG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi4vLi4vUGxheWVyJztcbmltcG9ydCBNb3ZlbWVudFR5cGUgZnJvbSAnLi4vLi4vbmV0d29yay90eXBlL01vdmVtZW50VHlwZSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRwQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6dHAnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUZWxlcG9ydHMgYSBwbGF5ZXIgdG8gYSBzcGVjaWZpZWQgbG9jYXRpb24gb3IgYW5vdGhlciBlbnRpdHkuJyxcbiAgICAgICAgICAgIGFsaWFzZXM6IFsndGVsZXBvcnQnXSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdtaW5lY3JhZnQuY29tbWFuZC50ZWxlcG9ydCdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKGRpc3BhdGNoZXI6IENvbW1hbmREaXNwYXRjaGVyPGFueT4pIHtcbiAgICAgICAgZGlzcGF0Y2hlci5yZWdpc3RlcihcbiAgICAgICAgICAgIGxpdGVyYWwoJ3RwJylcbiAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3Bvc2l0aW9uJywgbmV3IENvbW1hbmRBcmd1bWVudFBvc2l0aW9uKHsgbmFtZTogJ2Rlc3RpbmF0aW9uJyB9KSkuZXhlY3V0ZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UuaXNQbGF5ZXIoKSkgdGhyb3cgbmV3IEVycm9yKGBUaGlzIGNvbW1hbmQgY2FuJ3QgYmUgcnVuIGZyb20gdGhlIGNvbnNvbGVgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gY29udGV4dC5nZXRBcmd1bWVudCgncG9zaXRpb24nKSBhcyBWZWN0b3IzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIocG9zaXRpb24uZ2V0WCgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb24uZ2V0WCgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uc2V0WChwb3NpdGlvbi5nZXRYKCkgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgcG9zaXRpb24uc2V0WChwb3NpdGlvbi5nZXRYKCkgKyAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwb3NpdGlvbi5nZXRaKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbi5nZXRaKCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5zZXRaKHBvc2l0aW9uLmdldFooKSAtIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwb3NpdGlvbi5zZXRaKHBvc2l0aW9uLmdldFooKSArIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLnNldFBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1vdmVtZW50VHlwZS5UZWxlcG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGVsZXBvcnRlZCAke3NvdXJjZS5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpfSB0byAke3Bvc2l0aW9uLmdldFgoKX0gJHtwb3NpdGlvbi5nZXRZKCl9ICR7cG9zaXRpb24uZ2V0WigpfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdwbGF5ZXInLCBuZXcgQ29tbWFuZEFyZ3VtZW50RW50aXR5KHsgbmFtZTogJ3ZpY3RpbScgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCgncG9zaXRpb24nLCBuZXcgQ29tbWFuZEFyZ3VtZW50UG9zaXRpb24oeyBuYW1lOiAnZGVzdGluYXRpb24nIH0pKS5leGVjdXRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldHMgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwbGF5ZXInKSBhcyBQbGF5ZXJbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gY29udGV4dC5nZXRBcmd1bWVudCgncG9zaXRpb24nKSBhcyBWZWN0b3IzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwb3NpdGlvbi5nZXRYKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uLmdldFgoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uc2V0WChwb3NpdGlvbi5nZXRYKCkgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwb3NpdGlvbi5zZXRYKHBvc2l0aW9uLmdldFgoKSArIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwb3NpdGlvbi5nZXRaKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uLmdldFooKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uc2V0Wihwb3NpdGlvbi5nZXRaKCkgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwb3NpdGlvbi5zZXRaKHBvc2l0aW9uLmdldFooKSArIDAuNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0cy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBzcGVjaWZpZWQgcGxheWVyKHMpICYgZW50aXQoeS9pZXMpYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyAoZW50aXR5OiBQbGF5ZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBlbnRpdHkuc2V0UG9zaXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1vdmVtZW50VHlwZS5UZWxlcG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRlbGVwb3J0ZWQgJHt0YXJnZXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZW50aXR5KSA9PiBlbnRpdHkuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKX0gdG8gJHtwb3NpdGlvbi5nZXRYKCl9ICR7cG9zaXRpb24uZ2V0WSgpfSAke3Bvc2l0aW9uLmdldFooKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3RhcmdldCcsIG5ldyBDb21tYW5kQXJndW1lbnRFbnRpdHkoeyBuYW1lOiAnZGVzdGluYXRpb24nIH0pKS5leGVjdXRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwbGF5ZXInKSBhcyBQbGF5ZXJbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ3RhcmdldCcpPy5bMF0gYXMgUGxheWVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZXMubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgc3BlY2lmaWVkIHBsYXllcihzKSAmIGVudGl0KHkvaWVzKWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLm1hcChhc3luYyAoZW50aXR5OiBQbGF5ZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS5zZXRQb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogdGFyZ2V0LmdldFBvc2l0aW9uKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNb3ZlbWVudFR5cGUuVGVsZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRlbGVwb3J0ZWQgJHtzb3VyY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZW50aXR5KSA9PiBlbnRpdHkuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKX0gdG8gJHt0YXJnZXQuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGVzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gY29udGV4dC5nZXRBcmd1bWVudCgncGxheWVyJyk/LlswXSBhcyBQbGF5ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5pc1BsYXllcigpKSB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgY29tbWFuZCBjYW4ndCBiZSBydW4gZnJvbSB0aGUgY29uc29sZWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLnNldFBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKHRhcmdldC5nZXRYKCksIHRhcmdldC5nZXRZKCksIHRhcmdldC5nZXRaKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNb3ZlbWVudFR5cGUuVGVsZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRlbGVwb3J0ZWQgJHtzb3VyY2UuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKX0gdG8gJHt0YXJnZXQuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbW1hbmQiLCJsaXRlcmFsIiwiYXJndW1lbnQiLCJDb21tYW5kQXJndW1lbnRQb3NpdGlvbiIsIk1vdmVtZW50VHlwZSIsIkNvbW1hbmRBcmd1bWVudEVudGl0eSIsIlZlY3RvcjMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQSxNQUFxQixrQkFBa0JBLHVCQUFRLENBQUE7QUFBQSxFQUNwQyxXQUFjLEdBQUE7QUFDakIsSUFBTSxLQUFBLENBQUE7QUFBQSxNQUNGLEVBQUksRUFBQSxjQUFBO0FBQUEsTUFDSixXQUFhLEVBQUEsK0RBQUE7QUFB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