UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

199 lines (198 loc) 9.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActionSetCatalog = exports.GroupActions = void 0; const Utilities_1 = __importDefault(require("../core/Utilities")); const DataFormFile_1 = __importDefault(require("../dataform/DataFormFile")); const Database_1 = __importDefault(require("../minecraft/Database")); const StorageUtilities_1 = __importDefault(require("../storage/StorageUtilities")); const ActionGroup_1 = __importDefault(require("./ActionGroup")); const BlockBreakAction_1 = __importDefault(require("./BlockBreakAction")); const BlockExplodeAction_1 = __importDefault(require("./BlockExplodeAction")); const BlockSetAction_1 = __importDefault(require("./BlockSetAction")); const EntityDieAction_1 = __importDefault(require("./EntityDieAction")); const EntitySpawnAction_1 = __importDefault(require("./EntitySpawnAction")); const GeneralAction_1 = __importDefault(require("./GeneralAction")); const IAction_1 = require("./IAction"); const IActionSetData_1 = require("./IActionSetData"); const ItemSpawnAction_1 = __importDefault(require("./ItemSpawnAction")); const ParticleSpawnAction_1 = __importDefault(require("./ParticleSpawnAction")); const PlayerJoinAction_1 = __importDefault(require("./PlayerJoinAction")); const RandomizeGroupAction_1 = __importDefault(require("./RandomizeGroupAction")); const SequenceGroupAction_1 = __importDefault(require("./SequenceGroupAction")); const SoundPlayAction_1 = __importDefault(require("./SoundPlayAction")); const TestIdleAction_1 = __importDefault(require("./TestIdleAction")); const TestSimulatedPlayerMoveAction_1 = __importDefault(require("./TestSimulatedPlayerMoveAction")); const TestSimulatedPlayerSpawnAction_1 = __importDefault(require("./TestSimulatedPlayerSpawnAction")); const TickGroupAction_1 = __importDefault(require("./TickGroupAction")); const WorldSendMessageAction_1 = __importDefault(require("./WorldSendMessageAction")); const EntitySpawnActionType = { id: "entity_spawn", title: "Entity Spawn", requiredContextType: IAction_1.ActionContextType.dimensionLocation, }; const BlockBreakActionType = { id: "block_break", title: "Block Break", requiredContextType: IAction_1.ActionContextType.dimensionLocation, }; exports.GroupActions = ["tick", "entity_die", "block_explode", "player_join", "randomize", "sequence"]; class ActionSetCatalog { static async getEntityLegacyFiltersSet() { const legacyFilterTypes = []; await ActionSetCatalog.addTypesFromFormFolder(legacyFilterTypes, "entityfilters", IActionSetData_1.ActionSetTarget.entityEvent); return legacyFilterTypes; } static async getScriptSet() { const scriptFilterTypes = []; await ActionSetCatalog.addTypesFromFormFolder(scriptFilterTypes, "scriptfilters", IActionSetData_1.ActionSetTarget.script); return scriptFilterTypes; } static async addTypesFromFormFolder(actionList, folderName, actionSetTarget) { const formsFolder = await Database_1.default.getFormsFolder(folderName); if (!formsFolder) { return; } await formsFolder.load(); for (const fileName in formsFolder.files) { const file = formsFolder.files[fileName]; if (file) { if (!file.isContentLoaded) { await file.loadContent(); } const form = await DataFormFile_1.default.ensureOnFile(file); if (form && form.formDefinition) { let shouldAddItem = true; if (form.formDefinition.tags) { if (actionSetTarget === IActionSetData_1.ActionSetTarget.entityEvent && !form.formDefinition.tags.includes("entityevent")) { shouldAddItem = false; } if (actionSetTarget === IActionSetData_1.ActionSetTarget.script && !form.formDefinition.tags.includes("script")) { shouldAddItem = false; } if (actionSetTarget === IActionSetData_1.ActionSetTarget.mcfunction && !form.formDefinition.tags.includes("commands")) { shouldAddItem = false; } if (actionSetTarget === IActionSetData_1.ActionSetTarget.gameTest && !form.formDefinition.tags.includes("test")) { shouldAddItem = false; } } else { shouldAddItem = false; } if (shouldAddItem) { actionList.push({ id: StorageUtilities_1.default.getCoreBaseFromName(fileName), title: form.title ? form.title : Utilities_1.default.humanify(form.id ? form.id : StorageUtilities_1.default.getCoreBaseFromName(fileName)), form: form.formDefinition, }); } } } } } getDefaultContextForTarget(actionSetTarget) { if (actionSetTarget === IActionSetData_1.ActionSetTarget.entityEvent) { return IAction_1.ActionContextType.entity; } return IAction_1.ActionContextType.general; } static async getActionCatalog(actionSetTarget) { const actionTypes = []; if (actionSetTarget === IActionSetData_1.ActionSetTarget.entityEvent) { await ActionSetCatalog.addTypesFromFormFolder(actionTypes, "entityevents", actionSetTarget); } else { await ActionSetCatalog.addTypesFromFormFolder(actionTypes, "action", actionSetTarget); } return actionTypes; } static createActionGroup(parent, data, id) { const ag = new ActionGroup_1.default(data ? data : { id: id ? id : Utilities_1.default.createRandomId(10), actions: [], }, parent.actionSet); return ag; } static createActionOrGroup(parent, type, data, id) { if (exports.GroupActions.includes(type)) { const ag = this.createActionGroup(parent, data, id); ag.groupActionType = type; return ag; } return this.createAction(parent, type, data, id); } static createAction(parent, type, data, id) { let action = undefined; if (!data) { data = { type: type, }; } switch (type) { case EntitySpawnActionType.id: action = new EntitySpawnAction_1.default(parent, data); break; case BlockBreakActionType.id: action = new BlockBreakAction_1.default(parent, data); break; case "test_simulated_player_spawn": action = new TestSimulatedPlayerSpawnAction_1.default(parent, data); break; case "test_simulated_player_move": action = new TestSimulatedPlayerMoveAction_1.default(parent, data); break; case "test_idle": action = new TestIdleAction_1.default(parent, data); break; case "tick": action = new TickGroupAction_1.default(parent, data); break; case "randomize": action = new RandomizeGroupAction_1.default(parent, data); break; case "sequence": action = new SequenceGroupAction_1.default(parent, data); break; case "world_send_message": action = new WorldSendMessageAction_1.default(parent, data); break; case "entity_die": action = new EntityDieAction_1.default(parent, data); break; case "player_join": action = new PlayerJoinAction_1.default(parent, data); break; case "block_set": action = new BlockSetAction_1.default(parent, data); break; case "particle_spawn": action = new ParticleSpawnAction_1.default(parent, data); break; case "item_spawn": action = new ItemSpawnAction_1.default(parent, data); break; case "block_explode": action = new BlockExplodeAction_1.default(parent, data); break; case "sound_play": action = new SoundPlayAction_1.default(parent, data); break; default: action = new GeneralAction_1.default(parent, data); action.typeId = type; break; } if (id) { action.id = id; } return action; } } exports.ActionSetCatalog = ActionSetCatalog;