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