@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
109 lines (104 loc) • 19.6 kB
JavaScript
;
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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