UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

46 lines (43 loc) 6.7 kB
import * as entity_Entities from '../../entity/Entities.es.js'; import { literal, argument } from '@jsprismarine/brigadier'; import { CommandArgumentMob } from '../CommandArguments.es.js'; import { Command } from '../Command.es.js'; class SummonCommand 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(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; }) // ) ) ); } } export { SummonCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VtbW9uQ29tbWFuZC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmQvdmFuaWxsYS9TdW1tb25Db21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEVudGl0aWVzIGZyb20gJy4uLy4uL2VudGl0eS9FbnRpdGllcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZERpc3BhdGNoZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5pbXBvcnQgeyBhcmd1bWVudCwgbGl0ZXJhbCB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IENvbW1hbmRBcmd1bWVudE1vYiB9IGZyb20gJy4uL0NvbW1hbmRBcmd1bWVudHMnO1xuXG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi4vLi4vUGxheWVyJztcbmltcG9ydCB0eXBlIHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW50aXR5L0VudGl0eSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1bW1vbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGlkOiAnbWluZWNyYWZ0OnN1bW1vbicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1N1bW1vbiBhbiBlbnRpdHkuJyxcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdtaW5lY3JhZnQuY29tbWFuZC5zdW1tb24nXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCdzdW1tb24nKS50aGVuKFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50KCdlbnRpdHknLCBuZXcgQ29tbWFuZEFyZ3VtZW50TW9iKCkpIC8qIC50aGVuKFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCgncG9zaXRpb24nLCBuZXcgQ29tbWFuZEFyZ3VtZW50UG9zaXRpb24oKSkgKi9cbiAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGVzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uID0gY29udGV4dC5nZXRBcmd1bWVudCgncG9zaXRpb24nKSBhcyBWZWN0b3IzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50aXR5SWQgPSAoY29udGV4dC5nZXRBcmd1bWVudCgnZW50aXR5JykgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IEVudGl0eTogYW55IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVudGl0eUlkLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRpdHkgPSBPYmplY3QuZW50cmllcyhFbnRpdGllcykuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFssIHZhbHVlXSkgPT4gdmFsdWUuTU9CX0lEID09PSBgbWluZWNyYWZ0OiR7ZW50aXR5SWR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50aXR5ID0gT2JqZWN0LmVudHJpZXMoRW50aXRpZXMpLmZpbmQoKFssIHZhbHVlXSkgPT4gdmFsdWUuTU9CX0lEID09PSBlbnRpdHlJZCk/LlsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFFbnRpdHkpIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBlbnRpdHkgXCIke2VudGl0eUlkfVwiIWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2I6IEVudGl0eSA9IG5ldyBFbnRpdHkoc291cmNlLmdldFdvcmxkKCksIHNvdXJjZS5nZXRTZXJ2ZXIoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzb3VyY2UuZ2V0V29ybGQoKS5hZGRFbnRpdHkobW9iKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW9iLnNldFBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogc291cmNlLmdldFBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBgU3VtbW9uZWQgJHtFbnRpdHkuTU9CX0lEfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzb3VyY2Uuc2VuZE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLy8gKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRpdGllcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxNQUFxQixzQkFBc0IsT0FBUSxDQUFBO0FBQUEsRUFDeEMsV0FBYyxHQUFBO0FBQ2pCLElBQU0sS0FBQSxDQUFBO0FBQUEsTUFDRixFQUFJLEVBQUEsa0JBQUE7QUFBQSxNQUNKLFdBQWEsRUFBQSxtQkFBQTtBQUFBLE1BQ2IsVUFBWSxFQUFBO0FBQUEsS0FDZixDQUFBO0FBQUE7QUFDTCxFQUVBLE1BQWEsU0FBUyxVQUFvQyxFQUFBO0FBQ3RELElBQVcsVUFBQSxDQUFBLFFBQUE7QUFBQSxNQUNQLE9BQUEsQ0FBUSxRQUFRLENBQUUsQ0FBQSxJQUFBO0FBQUEsUUFDZCxRQUFBLENBQVMsVUFBVSxJQUFJLGtCQUFBLEVBQW9CLENBRXRDLENBQUEsUUFBQSxDQUFTLE9BQU8sT0FBWSxLQUFBO0FBQ3pCLFVBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFFakMsVUFBQSxNQUFNLFFBQVksR0FBQSxPQUFBLENBQVEsV0FBWSxDQUFBLFFBQVEsRUFBYSxXQUFZLEVBQUE7QUFDdkUsVUFBSSxJQUFBLE1BQUE7QUFFSixVQUFBLElBQUksQ0FBQyxRQUFBLENBQVMsUUFBUyxDQUFBLEdBQUcsQ0FBRyxFQUFBO0FBQ3pCLFlBQVMsTUFBQSxHQUFBLE1BQUEsQ0FBTyxPQUFRLENBQUFBLGVBQVEsQ0FBRSxDQUFBLElBQUE7QUFBQSxjQUM5QixDQUFDLEdBQUcsS0FBSyxNQUFNLEtBQU0sQ0FBQSxNQUFBLEtBQVcsYUFBYSxRQUFRLENBQUE7QUFBQSxnQkFDckQsQ0FBQyxDQUFBO0FBQUEsV0FDRixNQUFBO0FBQ0gsWUFBQSxNQUFBLEdBQVMsTUFBTyxDQUFBLE9BQUEsQ0FBUUEsZUFBUSxDQUFBLENBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFNLEtBQUEsS0FBQSxDQUFNLE1BQVcsS0FBQSxRQUFRLElBQUksQ0FBQyxDQUFBO0FBQUE7QUFHeEYsVUFBQSxJQUFJLENBQUMsTUFBUSxFQUFBLE1BQU0sSUFBSSxLQUFNLENBQUEsQ0FBQSxnQkFBQSxFQUFtQixRQUFRLENBQUksRUFBQSxDQUFBLENBQUE7QUFFNUQsVUFBTSxNQUFBLEdBQUEsR0FBYyxJQUFJLE1BQU8sQ0FBQSxNQUFBLENBQU8sVUFBWSxFQUFBLE1BQUEsQ0FBTyxXQUFXLENBQUE7QUFDcEUsVUFBQSxNQUFNLE1BQU8sQ0FBQSxRQUFBLEVBQVcsQ0FBQSxTQUFBLENBQVUsR0FBRyxDQUFBO0FBRXJDLFVBQUEsTUFBTSxJQUFJLFdBQVksQ0FBQTtBQUFBLFlBQ2xCLFFBQUEsRUFBVSxPQUFPLFdBQVk7QUFBQSxXQUNoQyxDQUFBO0FBRUQsVUFBTSxNQUFBLEdBQUEsR0FBTSxDQUFZLFNBQUEsRUFBQSxNQUFBLENBQU8sTUFBTSxDQUFBLENBQUE7QUFDckMsVUFBTSxNQUFBLE1BQUEsQ0FBTyxZQUFZLEdBQUcsQ0FBQTtBQUM1QixVQUFPLE9BQUEsR0FBQTtBQUFBLFNBQ1Y7QUFBQTtBQUFBO0FBRVQsS0FDSjtBQUFBO0FBRVI7Ozs7In0=