bedrock-development
Version:
APIs for creating and editing files related to Minecraft Bedrock development.
58 lines (57 loc) • 3.08 kB
JavaScript
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);
});
});
}