@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
50 lines (45 loc) • 6.98 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const entity_Entities = require('../../entity/Entities.cjs.cjs');
const brigadier = require('@jsprismarine/brigadier');
const command_CommandArguments = require('../CommandArguments.cjs.cjs');
const command_Command = require('../Command.cjs.cjs');
class SummonCommand extends command_Command.Command {
constructor() {
super({
id: "minecraft:summon",
description: "Summon an entity.",
permission: "minecraft.command.summon"
});
}
async register(dispatcher) {
dispatcher.register(
brigadier.literal("summon").then(
brigadier.argument("entity", new command_CommandArguments.CommandArgumentMob()).executes(async (context) => {
const source = context.getSource();
const entityId = context.getArgument("entity").toLowerCase();
let Entity;
if (!entityId.includes(":")) {
Entity = Object.entries(entity_Entities).find(
([, value]) => value.MOB_ID === `minecraft:${entityId}`
)?.[1];
} else {
Entity = Object.entries(entity_Entities).find(([, value]) => value.MOB_ID === entityId)?.[1];
}
if (!Entity) throw new Error(`No such entity "${entityId}"!`);
const mob = new Entity(source.getWorld(), source.getServer());
await source.getWorld().addEntity(mob);
await mob.setPosition({
position: source.getPosition()
});
const res = `Summoned ${Entity.MOB_ID}`;
await source.sendMessage(res);
return res;
})
// )
)
);
}
}
exports.default = SummonCommand;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VtbW9uQ29tbWFuZC5janMuY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZC92YW5pbGxhL1N1bW1vbkNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRW50aXRpZXMgZnJvbSAnLi4vLi4vZW50aXR5L0VudGl0aWVzJztcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kRGlzcGF0Y2hlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IGFyZ3VtZW50LCBsaXRlcmFsIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuaW1wb3J0IHsgQ29tbWFuZEFyZ3VtZW50TW9iIH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5cbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9lbnRpdHkvRW50aXR5JztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuLi9Db21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3VtbW9uQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6c3VtbW9uJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU3VtbW9uIGFuIGVudGl0eS4nLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogJ21pbmVjcmFmdC5jb21tYW5kLnN1bW1vbidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKGRpc3BhdGNoZXI6IENvbW1hbmREaXNwYXRjaGVyPGFueT4pIHtcbiAgICAgICAgZGlzcGF0Y2hlci5yZWdpc3RlcihcbiAgICAgICAgICAgIGxpdGVyYWwoJ3N1bW1vbicpLnRoZW4oXG4gICAgICAgICAgICAgICAgYXJndW1lbnQoJ2VudGl0eScsIG5ldyBDb21tYW5kQXJndW1lbnRNb2IoKSkgLyogLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdwb3NpdGlvbicsIG5ldyBDb21tYW5kQXJndW1lbnRQb3NpdGlvbigpKSAqL1xuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgcG9zaXRpb24gPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwb3NpdGlvbicpIGFzIFZlY3RvcjM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRpdHlJZCA9IChjb250ZXh0LmdldEFyZ3VtZW50KCdlbnRpdHknKSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgRW50aXR5OiBhbnkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW50aXR5SWQuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGl0eSA9IE9iamVjdC5lbnRyaWVzKEVudGl0aWVzKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWywgdmFsdWVdKSA9PiB2YWx1ZS5NT0JfSUQgPT09IGBtaW5lY3JhZnQ6JHtlbnRpdHlJZH1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRpdHkgPSBPYmplY3QuZW50cmllcyhFbnRpdGllcykuZmluZCgoWywgdmFsdWVdKSA9PiB2YWx1ZS5NT0JfSUQgPT09IGVudGl0eUlkKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVudGl0eSkgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIGVudGl0eSBcIiR7ZW50aXR5SWR9XCIhYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vYjogRW50aXR5ID0gbmV3IEVudGl0eShzb3VyY2UuZ2V0V29ybGQoKSwgc291cmNlLmdldFNlcnZlcigpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRXb3JsZCgpLmFkZEVudGl0eShtb2IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb2Iuc2V0UG9zaXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzb3VyY2UuZ2V0UG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGBTdW1tb25lZCAke0VudGl0eS5NT0JfSUR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5zZW5kTWVzc2FnZShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbW1hbmQiLCJsaXRlcmFsIiwiYXJndW1lbnQiLCJDb21tYW5kQXJndW1lbnRNb2IiLCJFbnRpdGllcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBVUEsTUFBcUIsc0JBQXNCQSx1QkFBUSxDQUFBO0FBQUEsRUFDeEMsV0FBYyxHQUFBO0FBQ2pCLElBQU0sS0FBQSxDQUFBO0FBQUEsTUFDRixFQUFJLEVBQUEsa0JBQUE7QUFBQSxNQUNKLFdBQWEsRUFBQSxtQkFBQTtBQUFBLE1BQ2IsVUFBWSxFQUFBO0FBQUEsS0FDZixDQUFBO0FBQUE7QUFDTCxFQUVBLE1BQWEsU0FBUyxVQUFvQyxFQUFBO0FBQ3RELElBQVcsVUFBQSxDQUFBLFFBQUE7QUFBQSxNQUNQQyxpQkFBQSxDQUFRLFFBQVEsQ0FBRSxDQUFBLElBQUE7QUFBQSxRQUNkQyxrQkFBQSxDQUFTLFVBQVUsSUFBSUMsMkNBQUEsRUFBb0IsQ0FFdEMsQ0FBQSxRQUFBLENBQVMsT0FBTyxPQUFZLEtBQUE7QUFDekIsVUFBTSxNQUFBLE1BQUEsR0FBUyxRQUFRLFNBQVUsRUFBQTtBQUVqQyxVQUFBLE1BQU0sUUFBWSxHQUFBLE9BQUEsQ0FBUSxXQUFZLENBQUEsUUFBUSxFQUFhLFdBQVksRUFBQTtBQUN2RSxVQUFJLElBQUEsTUFBQTtBQUVKLFVBQUEsSUFBSSxDQUFDLFFBQUEsQ0FBUyxRQUFTLENBQUEsR0FBRyxDQUFHLEVBQUE7QUFDekIsWUFBUyxNQUFBLEdBQUEsTUFBQSxDQUFPLE9BQVEsQ0FBQUMsZUFBUSxDQUFFLENBQUEsSUFBQTtBQUFBLGNBQzlCLENBQUMsR0FBRyxLQUFLLE1BQU0sS0FBTSxDQUFBLE1BQUEsS0FBVyxhQUFhLFFBQVEsQ0FBQTtBQUFBLGdCQUNyRCxDQUFDLENBQUE7QUFBQSxXQUNGLE1BQUE7QUFDSCxZQUFBLE1BQUEsR0FBUyxNQUFPLENBQUEsT0FBQSxDQUFRQSxlQUFRLENBQUEsQ0FBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQU0sS0FBQSxLQUFBLENBQU0sTUFBVyxLQUFBLFFBQVEsSUFBSSxDQUFDLENBQUE7QUFBQTtBQUd4RixVQUFBLElBQUksQ0FBQyxNQUFRLEVBQUEsTUFBTSxJQUFJLEtBQU0sQ0FBQSxDQUFBLGdCQUFBLEVBQW1CLFFBQVEsQ0FBSSxFQUFBLENBQUEsQ0FBQTtBQUU1RCxVQUFNLE1BQUEsR0FBQSxHQUFjLElBQUksTUFBTyxDQUFBLE1BQUEsQ0FBTyxVQUFZLEVBQUEsTUFBQSxDQUFPLFdBQVcsQ0FBQTtBQUNwRSxVQUFBLE1BQU0sTUFBTyxDQUFBLFFBQUEsRUFBVyxDQUFBLFNBQUEsQ0FBVSxHQUFHLENBQUE7QUFFckMsVUFBQSxNQUFNLElBQUksV0FBWSxDQUFBO0FBQUEsWUFDbEIsUUFBQSxFQUFVLE9BQU8sV0FBWTtBQUFBLFdBQ2hDLENBQUE7QUFFRCxVQUFNLE1BQUEsR0FBQSxHQUFNLENBQVksU0FBQSxFQUFBLE1BQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQTtBQUNyQyxVQUFNLE1BQUEsTUFBQSxDQUFPLFlBQVksR0FBRyxDQUFBO0FBQzVCLFVBQU8sT0FBQSxHQUFBO0FBQUEsU0FDVjtBQUFBO0FBQUE7QUFFVCxLQUNKO0FBQUE7QUFFUjs7OzsifQ==