UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

34 lines (33 loc) 5.76 kB
import { Entities_exports } from "../../entity/Entities.es.js"; import { Command } from "../Command.es.js"; import { CommandArgumentMob } from "../CommandArguments.es.js"; import { argument, literal } from "@jsprismarine/brigadier"; //#region src/command/vanilla/SummonCommand.ts var SummonCommand = class extends Command { constructor() { super({ id: "minecraft:summon", description: "Summon an entity.", permission: "minecraft.command.summon" }); } async register(dispatcher) { dispatcher.register(literal("summon").then(argument("entity", new CommandArgumentMob()).executes(async (context) => { const source = context.getSource(); const entityId = context.getArgument("entity").toLowerCase(); let Entity; if (!entityId.includes(":")) Entity = Object.entries(Entities_exports).find(([, value]) => value.MOB_ID === `minecraft:${entityId}`)?.[1]; else Entity = Object.entries(Entities_exports).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; }))); } }; //#endregion export { SummonCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VtbW9uQ29tbWFuZC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZC92YW5pbGxhL1N1bW1vbkNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRW50aXRpZXMgZnJvbSAnLi4vLi4vZW50aXR5L0VudGl0aWVzJztcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kRGlzcGF0Y2hlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IGFyZ3VtZW50LCBsaXRlcmFsIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuaW1wb3J0IHsgQ29tbWFuZEFyZ3VtZW50TW9iIH0gZnJvbSAnLi4vQ29tbWFuZEFyZ3VtZW50cyc7XG5cbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9lbnRpdHkvRW50aXR5JztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuLi9Db21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3VtbW9uQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6c3VtbW9uJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU3VtbW9uIGFuIGVudGl0eS4nLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogJ21pbmVjcmFmdC5jb21tYW5kLnN1bW1vbidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKGRpc3BhdGNoZXI6IENvbW1hbmREaXNwYXRjaGVyPGFueT4pIHtcbiAgICAgICAgZGlzcGF0Y2hlci5yZWdpc3RlcihcbiAgICAgICAgICAgIGxpdGVyYWwoJ3N1bW1vbicpLnRoZW4oXG4gICAgICAgICAgICAgICAgYXJndW1lbnQoJ2VudGl0eScsIG5ldyBDb21tYW5kQXJndW1lbnRNb2IoKSkgLyogLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdwb3NpdGlvbicsIG5ldyBDb21tYW5kQXJndW1lbnRQb3NpdGlvbigpKSAqL1xuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgcG9zaXRpb24gPSBjb250ZXh0LmdldEFyZ3VtZW50KCdwb3NpdGlvbicpIGFzIFZlY3RvcjM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRpdHlJZCA9IChjb250ZXh0LmdldEFyZ3VtZW50KCdlbnRpdHknKSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgRW50aXR5OiBhbnkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW50aXR5SWQuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGl0eSA9IE9iamVjdC5lbnRyaWVzKEVudGl0aWVzKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWywgdmFsdWVdKSA9PiB2YWx1ZS5NT0JfSUQgPT09IGBtaW5lY3JhZnQ6JHtlbnRpdHlJZH1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRpdHkgPSBPYmplY3QuZW50cmllcyhFbnRpdGllcykuZmluZCgoWywgdmFsdWVdKSA9PiB2YWx1ZS5NT0JfSUQgPT09IGVudGl0eUlkKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVudGl0eSkgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIGVudGl0eSBcIiR7ZW50aXR5SWR9XCIhYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vYjogRW50aXR5ID0gbmV3IEVudGl0eShzb3VyY2UuZ2V0V29ybGQoKSwgc291cmNlLmdldFNlcnZlcigpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5nZXRXb3JsZCgpLmFkZEVudGl0eShtb2IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb2Iuc2V0UG9zaXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzb3VyY2UuZ2V0UG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGBTdW1tb25lZCAke0VudGl0eS5NT0JfSUR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNvdXJjZS5zZW5kTWVzc2FnZShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVVBLElBQXFCLGdCQUFyQixjQUEyQyxRQUFRO0NBQy9DLGNBQXFCO0VBQ2pCLE1BQU07R0FDRixJQUFJO0dBQ0osYUFBYTtHQUNiLFlBQVk7RUFDaEIsQ0FBQztDQUNMO0NBRUEsTUFBYSxTQUFTLFlBQW9DO0VBQ3RELFdBQVcsU0FDUCxRQUFRLFFBQVEsRUFBRSxLQUNkLFNBQVMsVUFBVSxJQUFJLG1CQUFtQixDQUFDLEVBRXRDLFNBQVMsT0FBTyxZQUFZO0dBQ3pCLE1BQU0sU0FBUyxRQUFRLFVBQVU7R0FFakMsTUFBTSxXQUFZLFFBQVEsWUFBWSxRQUFRLEVBQWEsWUFBWTtHQUN2RSxJQUFJO0dBRUosSUFBSSxDQUFDLFNBQVMsU0FBUyxHQUFHLEdBQ3RCLFNBQVMsT0FBTyxRQUFRLGdCQUFRLEVBQUUsTUFDN0IsR0FBRyxXQUFXLE1BQU0sV0FBVyxhQUFhLFVBQ2pELElBQUk7UUFFSixTQUFTLE9BQU8sUUFBUSxnQkFBUSxFQUFFLE1BQU0sR0FBRyxXQUFXLE1BQU0sV0FBVyxRQUFRLElBQUk7R0FHdkYsSUFBSSxDQUFDLFFBQVEsTUFBTSxJQUFJLE1BQU0sbUJBQW1CLFNBQVMsR0FBRztHQUU1RCxNQUFNLE1BQWMsSUFBSSxPQUFPLE9BQU8sU0FBUyxHQUFHLE9BQU8sVUFBVSxDQUFDO0dBQ3BFLE1BQU0sT0FBTyxTQUFTLEVBQUUsVUFBVSxHQUFHO0dBRXJDLE1BQU0sSUFBSSxZQUFZLEVBQ2xCLFVBQVUsT0FBTyxZQUFZLEVBQ2pDLENBQUM7R0FFRCxNQUFNLE1BQU0sWUFBWSxPQUFPO0dBQy9CLE1BQU0sT0FBTyxZQUFZLEdBQUc7R0FDNUIsT0FBTztFQUNYLENBQUMsQ0FFVCxDQUNKO0NBQ0o7QUFDSiJ9