UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

73 lines (72 loc) 3.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const EntityTypeDefinition_1 = __importDefault(require("./EntityTypeDefinition")); const Log_1 = __importDefault(require("../core/Log")); const Database_1 = __importDefault(require("./Database")); const IField_1 = require("../dataform/IField"); const ManagedComponent_1 = require("./ManagedComponent"); class EntityTypeComponentSetUtilities { static async getTriggers(componentSet, isBaseComponent) { const allTriggers = []; const comps = componentSet.getComponents(); for (const comp of comps) { let formName = comp.id; if (formName.startsWith("minecraft:") && (isBaseComponent || formName !== "minecraft:breedable")) { formName = EntityTypeDefinition_1.default.getFormIdFromComponentId(formName); const form = await Database_1.default.ensureFormLoaded("entity", formName); Log_1.default.assert(form !== undefined); if (form) { await EntityTypeComponentSetUtilities.processFormForTriggers(allTriggers, form, comp, comp.id); } } } return allTriggers; } static async processFormForTriggers(triggers, form, component, propertyPath) { for (const field of form.fields) { if ((field.dataType === IField_1.FieldDataType.object || field.dataType === IField_1.FieldDataType.objectArray) && field.subForm) { let obj = undefined; if (component) { obj = component.getProperty(field.id); } const data = component?.getData(); if (data && typeof data === "object") { if (field.dataType === IField_1.FieldDataType.objectArray && Array.isArray(obj)) { let index = 0; for (const arrObj of obj) { await this.processFormForTriggers(triggers, field.subForm, new ManagedComponent_1.ManagedComponent(data, field.id, arrObj), propertyPath + "." + field.id + "." + index); index++; } } else { await this.processFormForTriggers(triggers, field.subForm, new ManagedComponent_1.ManagedComponent(data, field.id, obj), propertyPath + "." + field.id); } } } else if (field.dataType === IField_1.FieldDataType.minecraftEventTrigger || field.dataType === IField_1.FieldDataType.minecraftEventReference) { let ref = undefined; if (component) { ref = component.getProperty(field.id); } const path = propertyPath + "." + field.id; if (!ref) { triggers.push({ path: path, }); } else { triggers.push({ path: path, reference: ref, referenceId: ref.event ? ref.event : ref, }); } } } } } exports.default = EntityTypeComponentSetUtilities;