UNPKG

bedrock-development

Version:

APIs for creating and editing files related to Minecraft Bedrock development.

58 lines (57 loc) 3.08 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var _a; import { Option } from "commander"; import { setFiles } from "../../file_manager.js"; import { NameData, implementConfig } from "../../utils.js"; import { ServerAnimationController } from "../../types/index.js"; import { CommandMap } from "../command_map.js"; CommandMap.addCommand("root.new.ctrl", { parent: (_a = CommandMap.getCommandEntry("root.new")) === null || _a === void 0 ? void 0 : _a.command, commandOptions(command) { command .name("ctrl") .description('creates new bedrock behavior animation controllers') .argument('<names...>', 'controller names as "entity.anim"') .addOption(new Option('-e, --entry [on entry commands...]', 'the commands to play on entry').default(['/say anim_name'])) .addOption(new Option('-x, --exit [on exit commands...]', 'the commands to play on exit').preset(['/say anim_name'])) .option('-a, --anim <animations...>', 'the animations to play') .option('-q, --query [query]', 'the query to transition from default', 'true') .addOption(new Option('-t, --transition [transition]', 'the query to transition back to default').preset('true')); }, commandAction: triggerCreateNewController, }); function triggerCreateNewController(names, options) { return __awaiter(this, void 0, void 0, function* () { implementConfig(); names.forEach((name) => { const nameData = new NameData(name); const files = []; const controller = ServerAnimationController.createFromTemplate(nameData); controller.addState(`controller.animation.${nameData.namespace}.${nameData.shortname}`, "default", { transitions: [ { [nameData.shortname]: options.query } ] }); controller.addState(`controller.animation.${nameData.namespace}.${nameData.shortname}`, nameData.shortname, { on_entry: options.entry, animations: options.anim, transitions: options.transition ? [ { "default": options.transition } ] : undefined, on_exit: options.exit, }); const file = controller.toFile(); file.handleExisting = 'overwrite'; files.push(file); setFiles(files); }); }); }