@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
947 lines • 58.4 kB
JavaScript
"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.FormMappings = void 0;
const Utilities_1 = require("../core/Utilities");
const Pack_1 = require("../minecraft/Pack");
const StorageUtilities_1 = require("../storage/StorageUtilities");
const IProjectItemData_1 = require("./IProjectItemData");
const ProjectUtilities_1 = require("./ProjectUtilities");
exports.FormMappings = {
/* ["" + ProjectItemType.atmosphericsJson]: {
formCategory: "client_deferred_rendering",
formName: "atmosphericscattering_atmosphericscatteringconfigsettings",
select: "minecraft:atmosphere_settings",
},
["" + ProjectItemType.colorGradingJson]: {
formCategory: "client_deferred_rendering",
formName: "colorgraderconfig_colorgradingparameterssrc",
select: "minecraft:color_grading_settings",
},
["" + ProjectItemType.lightingJson]: {
formCategory: "client_deferred_rendering",
formName: "lightinggroup_lightingimpl_1_21_70",
select: "minecraft:lighting_settings",
},
["" + ProjectItemType.pbrJson]: {
formCategory: "client_deferred_rendering",
formName: "pbrfallbackconfig_pbrfallbackconfigsettings",
select: "minecraft:pbr_fallback_settings",
},
["" + ProjectItemType.waterJson]: {
formCategory: "client_deferred_rendering",
formName: "waterconfig_waterconfigsettingsv1",
select: "minecraft:water_settings",
},
["" + ProjectItemType.shadowsJson]: {
formCategory: "client_deferred_rendering",
formName: "shadowstylizationconfig_shadowstylizationconfigsettings",
select: "minecraft:shadow_settings",
},
["" + ProjectItemType.pointLightsJson]: {
formCategory: "client_deferred_rendering",
formName: "pointlightconfig_pointlightconfigsettings",
select: "minecraft:point_light_settings",
},*/
};
class ProjectItemUtilities {
static inferTypeFromContent(content, fileName) {
const type = StorageUtilities_1.default.getTypeFromName(fileName);
if (typeof content === "string") {
switch (type) {
case "json":
return ProjectItemUtilities.inferTypeFromJsonContent(content, fileName);
}
}
else {
switch (type) {
case "png":
return { itemType: IProjectItemData_1.ProjectItemType.texture, packType: Pack_1.PackType.resource, path: "/textures/ " };
}
}
return { itemType: IProjectItemData_1.ProjectItemType.unknown, packType: Pack_1.PackType.behavior, path: "/" };
}
static inferTypeFromJsonContent(jsonContent, fileName) {
const fileBaseName = StorageUtilities_1.default.getBaseFromName(fileName);
if (fileBaseName) {
if (fileBaseName.endsWith(".mci")) {
return { itemType: IProjectItemData_1.ProjectItemType.contentIndexJson };
}
else if (fileBaseName.endsWith(".mcr")) {
return { itemType: IProjectItemData_1.ProjectItemType.contentReportJson };
}
}
const firstHundred = jsonContent.substring(0, 100);
if (firstHundred.indexOf('"minecraft:recipe_shaped"') >= 0 ||
firstHundred.indexOf('"minecraft:recipe_shapeless"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.recipeBehavior };
}
else if (firstHundred.indexOf('"minecraft:entity"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.entityTypeBehavior };
}
else if (firstHundred.indexOf('"minecraft:item"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehavior };
}
else if (firstHundred.indexOf('"pools"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehavior };
}
else if (firstHundred.indexOf('"minecraft:spawn_rules"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.spawnRuleBehavior };
}
else if (firstHundred.indexOf('"tiers"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.tradingBehaviorJson };
}
else if (firstHundred.indexOf('"animation_controllers"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.animationControllerResourceJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"animations"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.animationResourceJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"animations"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.animationResourceJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"minecraft:attachable"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.attachableResourceJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"minecraft:client_entity"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.entityTypeResource, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"minecraft:fog_settings"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.fogResourceJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"minecraft:geometry"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.modelGeometryJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"particle_effect"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.particleJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"render_controllers"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.renderControllerJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"block_culling"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.blockCulling, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"item_catalog"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.craftingItemCatalog, packType: Pack_1.PackType.behavior };
}
else if (firstHundred.indexOf('"namespace"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.uiJson, packType: Pack_1.PackType.resource };
}
else if (firstHundred.indexOf('"sound_definitions"') >= 0) {
return { itemType: IProjectItemData_1.ProjectItemType.soundDefinitionCatalog, packType: Pack_1.PackType.resource };
}
else if (fileBaseName === "manifest") {
const jsonO = Utilities_1.default.getJsonObject(jsonContent);
if (jsonO !== undefined && jsonO["modules"]) {
for (const mod of jsonO["modules"]) {
if (mod && mod["type"]) {
switch (mod["type"]) {
case "script":
case "data":
return { itemType: IProjectItemData_1.ProjectItemType.behaviorPackManifestJson };
case "resources":
return { itemType: IProjectItemData_1.ProjectItemType.resourcePackManifestJson };
}
}
}
}
}
return { itemType: IProjectItemData_1.ProjectItemType.unknown };
}
static getSortOrder(itemType) {
// default order is item type * 100;
switch (itemType) {
case IProjectItemData_1.ProjectItemType.resourcePackManifestJson: // sort next to .behaviorPackManifestJson
return 510;
case IProjectItemData_1.ProjectItemType.entityTypeBehavior:
return 1851;
case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
return 1852;
case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
return 1853;
case IProjectItemData_1.ProjectItemType.recipeBehavior:
return 1860;
case IProjectItemData_1.ProjectItemType.particleJson:
return 1870;
case IProjectItemData_1.ProjectItemType.tickJson:
return 903;
case IProjectItemData_1.ProjectItemType.soundCatalog:
return 9901;
case IProjectItemData_1.ProjectItemType.modelGeometryJson:
return 5001;
case IProjectItemData_1.ProjectItemType.renderControllerJson:
return 5003;
// sort all the world-y and container-y stuff next to each other
case IProjectItemData_1.ProjectItemType.structure:
case IProjectItemData_1.ProjectItemType.MCWorld:
case IProjectItemData_1.ProjectItemType.MCTemplate:
case IProjectItemData_1.ProjectItemType.MCPack:
case IProjectItemData_1.ProjectItemType.MCProject:
case IProjectItemData_1.ProjectItemType.zip:
return 1600 + itemType;
}
return itemType * 100;
}
static getCategory(itemType) {
switch (itemType) {
case IProjectItemData_1.ProjectItemType.MCFunction:
case IProjectItemData_1.ProjectItemType.testJs:
case IProjectItemData_1.ProjectItemType.actionSet:
case IProjectItemData_1.ProjectItemType.animationBehaviorJson:
case IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson:
case IProjectItemData_1.ProjectItemType.tickJson:
case IProjectItemData_1.ProjectItemType.js:
case IProjectItemData_1.ProjectItemType.ts:
case IProjectItemData_1.ProjectItemType.buildProcessedJs:
case IProjectItemData_1.ProjectItemType.catalogIndexJs:
return IProjectItemData_1.ProjectItemCategory.logic;
case IProjectItemData_1.ProjectItemType.image:
case IProjectItemData_1.ProjectItemType.texture:
case IProjectItemData_1.ProjectItemType.storeAssetImage:
case IProjectItemData_1.ProjectItemType.marketingAssetImage:
case IProjectItemData_1.ProjectItemType.uiTexture:
case IProjectItemData_1.ProjectItemType.iconImage:
case IProjectItemData_1.ProjectItemType.soundDefinitionCatalog:
case IProjectItemData_1.ProjectItemType.soundCatalog:
case IProjectItemData_1.ProjectItemType.resourcePackManifestJson:
case IProjectItemData_1.ProjectItemType.resourcePackListJson:
case IProjectItemData_1.ProjectItemType.renderControllerJson:
case IProjectItemData_1.ProjectItemType.lightingJson:
case IProjectItemData_1.ProjectItemType.textureSetJson:
case IProjectItemData_1.ProjectItemType.modelGeometryJson:
case IProjectItemData_1.ProjectItemType.material:
case IProjectItemData_1.ProjectItemType.materialSetJson:
case IProjectItemData_1.ProjectItemType.animationControllerResourceJson:
case IProjectItemData_1.ProjectItemType.animationResourceJson:
case IProjectItemData_1.ProjectItemType.itemTextureJson:
case IProjectItemData_1.ProjectItemType.flipbookTexturesJson:
case IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.globalVariablesJson:
case IProjectItemData_1.ProjectItemType.uiJson:
case IProjectItemData_1.ProjectItemType.lang:
case IProjectItemData_1.ProjectItemType.languagesCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.ninesliceJson:
case IProjectItemData_1.ProjectItemType.attachableResourceJson:
case IProjectItemData_1.ProjectItemType.audio:
return IProjectItemData_1.ProjectItemCategory.assets;
case IProjectItemData_1.ProjectItemType.entityTypeBehavior:
case IProjectItemData_1.ProjectItemType.entityTypeResource:
case IProjectItemData_1.ProjectItemType.entityTypeBaseJs:
case IProjectItemData_1.ProjectItemType.entityTypeBaseTs:
case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
case IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.blockTypeResourceJsonDoNotUse:
case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
case IProjectItemData_1.ProjectItemType.fogResourceJson:
case IProjectItemData_1.ProjectItemType.tradingBehaviorJson:
case IProjectItemData_1.ProjectItemType.particleJson:
case IProjectItemData_1.ProjectItemType.structure:
case IProjectItemData_1.ProjectItemType.recipeBehavior:
case IProjectItemData_1.ProjectItemType.biomeBehaviorJson:
case IProjectItemData_1.ProjectItemType.biomeResourceJson:
case IProjectItemData_1.ProjectItemType.lootTableBehavior:
case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
case IProjectItemData_1.ProjectItemType.dialogueBehaviorJson:
case IProjectItemData_1.ProjectItemType.MCWorld:
case IProjectItemData_1.ProjectItemType.worldTemplateManifestJson:
case IProjectItemData_1.ProjectItemType.itemTypeResourceJson:
case IProjectItemData_1.ProjectItemType.featureBehavior:
case IProjectItemData_1.ProjectItemType.featureRuleBehaviorJson:
return IProjectItemData_1.ProjectItemCategory.types;
case IProjectItemData_1.ProjectItemType.esLintConfigMjs:
case IProjectItemData_1.ProjectItemType.env:
case IProjectItemData_1.ProjectItemType.justConfigTs:
case IProjectItemData_1.ProjectItemType.packageLockJson:
case IProjectItemData_1.ProjectItemType.jsconfigJson:
case IProjectItemData_1.ProjectItemType.prettierRcJson:
case IProjectItemData_1.ProjectItemType.tsconfigJson:
case IProjectItemData_1.ProjectItemType.docfxJson:
case IProjectItemData_1.ProjectItemType.jsdocJson:
case IProjectItemData_1.ProjectItemType.vsCodeExtensionsJson:
case IProjectItemData_1.ProjectItemType.vsCodeLaunchJson:
case IProjectItemData_1.ProjectItemType.vsCodeSettingsJson:
case IProjectItemData_1.ProjectItemType.vsCodeTasksJson:
return IProjectItemData_1.ProjectItemCategory.build;
case IProjectItemData_1.ProjectItemType.mcToolsProjectPreferences:
return IProjectItemData_1.ProjectItemCategory.mctools;
case IProjectItemData_1.ProjectItemType.zip:
case IProjectItemData_1.ProjectItemType.MCAddon:
case IProjectItemData_1.ProjectItemType.MCPack:
case IProjectItemData_1.ProjectItemType.MCTemplate:
case IProjectItemData_1.ProjectItemType.MCProject:
case IProjectItemData_1.ProjectItemType.behaviorPackFolder:
case IProjectItemData_1.ProjectItemType.resourcePackFolder:
case IProjectItemData_1.ProjectItemType.skinPackFolder:
return IProjectItemData_1.ProjectItemCategory.package;
}
return IProjectItemData_1.ProjectItemCategory.unknown;
}
static isImageType(itemType) {
if (itemType === IProjectItemData_1.ProjectItemType.image ||
itemType === IProjectItemData_1.ProjectItemType.texture ||
itemType === IProjectItemData_1.ProjectItemType.storeAssetImage ||
itemType === IProjectItemData_1.ProjectItemType.marketingAssetImage ||
itemType === IProjectItemData_1.ProjectItemType.uiTexture ||
itemType === IProjectItemData_1.ProjectItemType.iconImage) {
return true;
}
return false;
}
static isAudioType(itemType) {
if (itemType === IProjectItemData_1.ProjectItemType.audio) {
return true;
}
return false;
}
static isPackageType(itemType) {
if (itemType === IProjectItemData_1.ProjectItemType.zip ||
itemType === IProjectItemData_1.ProjectItemType.MCAddon ||
itemType === IProjectItemData_1.ProjectItemType.MCPack ||
itemType === IProjectItemData_1.ProjectItemType.MCProject ||
itemType === IProjectItemData_1.ProjectItemType.MCWorld ||
itemType === IProjectItemData_1.ProjectItemType.MCTemplate) {
return true;
}
return false;
}
static isBinaryType(itemType) {
if (this.isImageType(itemType) || this.isPackageType(itemType) || this.isAudioType(itemType)) {
return true;
}
return false;
}
static getMimeTypes(item) {
switch (item.itemType) {
case IProjectItemData_1.ProjectItemType.js:
case IProjectItemData_1.ProjectItemType.testJs:
case IProjectItemData_1.ProjectItemType.entityTypeBaseJs:
case IProjectItemData_1.ProjectItemType.buildProcessedJs:
case IProjectItemData_1.ProjectItemType.catalogIndexJs:
case IProjectItemData_1.ProjectItemType.entityTypeBaseTs:
case IProjectItemData_1.ProjectItemType.esLintConfigMjs:
case IProjectItemData_1.ProjectItemType.blockTypeBaseJs:
return ["application/javascript"];
case IProjectItemData_1.ProjectItemType.justConfigTs:
case IProjectItemData_1.ProjectItemType.ts:
case IProjectItemData_1.ProjectItemType.blockTypeBaseTs:
return ["application/typescript"];
case IProjectItemData_1.ProjectItemType.json:
case IProjectItemData_1.ProjectItemType.behaviorPackManifestJson:
case IProjectItemData_1.ProjectItemType.resourcePackManifestJson:
case IProjectItemData_1.ProjectItemType.entityTypeBehavior:
case IProjectItemData_1.ProjectItemType.tickJson:
case IProjectItemData_1.ProjectItemType.aimAssistJson:
case IProjectItemData_1.ProjectItemType.waterJson:
case IProjectItemData_1.ProjectItemType.shadowsJson:
case IProjectItemData_1.ProjectItemType.pbrJson:
case IProjectItemData_1.ProjectItemType.atmosphericsJson:
case IProjectItemData_1.ProjectItemType.pointLightsJson:
case IProjectItemData_1.ProjectItemType.colorGradingJson:
case IProjectItemData_1.ProjectItemType.cameraJson:
case IProjectItemData_1.ProjectItemType.actionSet:
case IProjectItemData_1.ProjectItemType.worldTest:
case IProjectItemData_1.ProjectItemType.behaviorPackListJson:
case IProjectItemData_1.ProjectItemType.resourcePackListJson:
case IProjectItemData_1.ProjectItemType.animationBehaviorJson:
case IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson:
case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
case IProjectItemData_1.ProjectItemType.blockMaterialsBehaviorJson:
case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
case IProjectItemData_1.ProjectItemType.lootTableBehavior:
case IProjectItemData_1.ProjectItemType.biomeResourceJson:
case IProjectItemData_1.ProjectItemType.fileListArrayJson:
case IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.soundCatalog:
case IProjectItemData_1.ProjectItemType.animationResourceJson:
case IProjectItemData_1.ProjectItemType.animationControllerResourceJson:
case IProjectItemData_1.ProjectItemType.entityTypeResource:
case IProjectItemData_1.ProjectItemType.fogResourceJson:
case IProjectItemData_1.ProjectItemType.modelGeometryJson:
case IProjectItemData_1.ProjectItemType.particleJson:
case IProjectItemData_1.ProjectItemType.renderControllerJson:
case IProjectItemData_1.ProjectItemType.ninesliceJson:
case IProjectItemData_1.ProjectItemType.uiJson:
case IProjectItemData_1.ProjectItemType.languagesCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.biomeBehaviorJson:
case IProjectItemData_1.ProjectItemType.dialogueBehaviorJson:
case IProjectItemData_1.ProjectItemType.featureRuleBehaviorJson:
case IProjectItemData_1.ProjectItemType.featureBehavior:
case IProjectItemData_1.ProjectItemType.functionEventJson:
case IProjectItemData_1.ProjectItemType.recipeBehavior:
case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
case IProjectItemData_1.ProjectItemType.tradingBehaviorJson:
case IProjectItemData_1.ProjectItemType.volumeBehaviorJson:
case IProjectItemData_1.ProjectItemType.attachableResourceJson:
case IProjectItemData_1.ProjectItemType.itemTypeResourceJson:
case IProjectItemData_1.ProjectItemType.materialsResourceJson:
case IProjectItemData_1.ProjectItemType.musicDefinitionJson:
case IProjectItemData_1.ProjectItemType.soundDefinitionCatalog:
case IProjectItemData_1.ProjectItemType.contentIndexJson:
case IProjectItemData_1.ProjectItemType.contentReportJson:
case IProjectItemData_1.ProjectItemType.tsconfigJson:
case IProjectItemData_1.ProjectItemType.prettierRcJson:
case IProjectItemData_1.ProjectItemType.jsconfigJson:
case IProjectItemData_1.ProjectItemType.docfxJson:
case IProjectItemData_1.ProjectItemType.jsdocJson:
case IProjectItemData_1.ProjectItemType.packageJson:
case IProjectItemData_1.ProjectItemType.packageLockJson:
case IProjectItemData_1.ProjectItemType.docInfoJson:
case IProjectItemData_1.ProjectItemType.scriptTypesJson:
case IProjectItemData_1.ProjectItemType.vanillaDataJson:
case IProjectItemData_1.ProjectItemType.engineOrderingJson:
case IProjectItemData_1.ProjectItemType.commandSetDefinitionJson:
case IProjectItemData_1.ProjectItemType.skinPackManifestJson:
case IProjectItemData_1.ProjectItemType.blockCulling:
case IProjectItemData_1.ProjectItemType.craftingItemCatalog:
case IProjectItemData_1.ProjectItemType.personaManifestJson:
case IProjectItemData_1.ProjectItemType.vsCodeLaunchJson:
case IProjectItemData_1.ProjectItemType.vsCodeTasksJson:
case IProjectItemData_1.ProjectItemType.vsCodeSettingsJson:
case IProjectItemData_1.ProjectItemType.vsCodeExtensionsJson:
case IProjectItemData_1.ProjectItemType.worldTemplateManifestJson:
case IProjectItemData_1.ProjectItemType.textureSetJson:
case IProjectItemData_1.ProjectItemType.textureListJson:
case IProjectItemData_1.ProjectItemType.lightingJson:
case IProjectItemData_1.ProjectItemType.flipbookTexturesJson:
case IProjectItemData_1.ProjectItemType.itemTextureJson:
case IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson:
case IProjectItemData_1.ProjectItemType.globalVariablesJson:
case IProjectItemData_1.ProjectItemType.dataForm:
case IProjectItemData_1.ProjectItemType.mcToolsProjectPreferences:
case IProjectItemData_1.ProjectItemType.dimensionJson:
case IProjectItemData_1.ProjectItemType.behaviorPackHistoryListJson:
case IProjectItemData_1.ProjectItemType.resourcePackHistoryListJson:
case IProjectItemData_1.ProjectItemType.educationJson:
return ["application/json"];
case IProjectItemData_1.ProjectItemType.MCWorld:
case IProjectItemData_1.ProjectItemType.MCTemplate:
case IProjectItemData_1.ProjectItemType.MCProject:
case IProjectItemData_1.ProjectItemType.MCAddon:
case IProjectItemData_1.ProjectItemType.MCPack:
case IProjectItemData_1.ProjectItemType.zip:
return ["application/zip"];
case IProjectItemData_1.ProjectItemType.structure:
return ["application/octet-stream"];
case IProjectItemData_1.ProjectItemType.MCFunction:
case IProjectItemData_1.ProjectItemType.material:
case IProjectItemData_1.ProjectItemType.materialGeometry:
case IProjectItemData_1.ProjectItemType.materialFragment:
case IProjectItemData_1.ProjectItemType.materialSetJson:
case IProjectItemData_1.ProjectItemType.materialVertex:
case IProjectItemData_1.ProjectItemType.env:
case IProjectItemData_1.ProjectItemType.lang:
return ["text/plain"];
case IProjectItemData_1.ProjectItemType.audio:
return ["audio/wav", "audio/mp3", "audio/ogg"];
case IProjectItemData_1.ProjectItemType.image:
case IProjectItemData_1.ProjectItemType.texture:
case IProjectItemData_1.ProjectItemType.uiTexture:
case IProjectItemData_1.ProjectItemType.iconImage:
case IProjectItemData_1.ProjectItemType.marketingAssetImage:
case IProjectItemData_1.ProjectItemType.storeAssetImage:
return ["image/png", "image/tiff"];
default:
return ["application/octet-stream"];
}
}
static getDescriptionForType(type) {
switch (type) {
case IProjectItemData_1.ProjectItemType.js:
return "JavaScript";
case IProjectItemData_1.ProjectItemType.buildProcessedJs:
return "Built JavaScript";
case IProjectItemData_1.ProjectItemType.ts:
return "TypeScript";
case IProjectItemData_1.ProjectItemType.json:
return "General json file";
case IProjectItemData_1.ProjectItemType.behaviorPackManifestJson:
return "Behavior pack manifest";
case IProjectItemData_1.ProjectItemType.resourcePackManifestJson:
return "Resource pack manifest";
case IProjectItemData_1.ProjectItemType.testJs:
return "Test JavaScript file";
case IProjectItemData_1.ProjectItemType.entityTypeBaseJs:
return "Entity type JavaScript";
case IProjectItemData_1.ProjectItemType.entityTypeBaseTs:
return "Entity type TypeScript";
case IProjectItemData_1.ProjectItemType.entityTypeBehavior:
return "Entity type";
case IProjectItemData_1.ProjectItemType.MCTemplate:
return "Minecraft template";
case IProjectItemData_1.ProjectItemType.MCWorld:
return "Minecraft world";
case IProjectItemData_1.ProjectItemType.MCProject:
return "Minecraft project";
case IProjectItemData_1.ProjectItemType.MCAddon:
return "Minecraft addon";
case IProjectItemData_1.ProjectItemType.MCPack:
return "Minecraft pack";
case IProjectItemData_1.ProjectItemType.zip:
return "Minecraft zip";
case IProjectItemData_1.ProjectItemType.worldFolder:
return "Minecraft world";
case IProjectItemData_1.ProjectItemType.structure:
return "Structure";
case IProjectItemData_1.ProjectItemType.MCFunction:
return "Function";
case IProjectItemData_1.ProjectItemType.tickJson:
return "Tick";
case IProjectItemData_1.ProjectItemType.material:
return "Material";
case IProjectItemData_1.ProjectItemType.materialSetJson:
return "Material Set";
case IProjectItemData_1.ProjectItemType.materialGeometry:
return "Geometry";
case IProjectItemData_1.ProjectItemType.materialFragment:
return "Fragment";
case IProjectItemData_1.ProjectItemType.materialVertex:
return "Vertex";
case IProjectItemData_1.ProjectItemType.shadowsJson:
return "Shadow";
case IProjectItemData_1.ProjectItemType.waterJson:
return "Water";
case IProjectItemData_1.ProjectItemType.pbrJson:
return "PBR";
case IProjectItemData_1.ProjectItemType.atmosphericsJson:
return "Atmospherics";
case IProjectItemData_1.ProjectItemType.pointLightsJson:
return "Point Light";
case IProjectItemData_1.ProjectItemType.colorGradingJson:
return "Color Grading";
case IProjectItemData_1.ProjectItemType.cameraJson:
return "Camera";
case IProjectItemData_1.ProjectItemType.aimAssistJson:
return "Aim Assist";
case IProjectItemData_1.ProjectItemType.catalogIndexJs:
return "Catalog index";
case IProjectItemData_1.ProjectItemType.behaviorPackFolder:
return "Behavior pack";
case IProjectItemData_1.ProjectItemType.resourcePackFolder:
return "Resource pack";
case IProjectItemData_1.ProjectItemType.skinPackFolder:
return "Skin pack";
case IProjectItemData_1.ProjectItemType.actionSet:
return "Action Set";
case IProjectItemData_1.ProjectItemType.worldTest:
return "World test";
case IProjectItemData_1.ProjectItemType.behaviorPackListJson:
return "World behavior pack list";
case IProjectItemData_1.ProjectItemType.resourcePackListJson:
return "World resource pack list";
case IProjectItemData_1.ProjectItemType.animationBehaviorJson:
return "Behavior pack animation";
case IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson:
return "Behavior pack animation controller";
case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
return "Block type";
case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
return "Item type";
case IProjectItemData_1.ProjectItemType.lootTableBehavior:
return "Loot table";
case IProjectItemData_1.ProjectItemType.biomeResourceJson:
return "Biome resources";
case IProjectItemData_1.ProjectItemType.fileListArrayJson:
return "File list";
case IProjectItemData_1.ProjectItemType.craftingItemCatalog:
return "Crafting Item catalog";
case IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson:
return "Block resource catalog";
case IProjectItemData_1.ProjectItemType.soundCatalog:
return "Sound catalog";
case IProjectItemData_1.ProjectItemType.animationResourceJson:
return "Animation";
case IProjectItemData_1.ProjectItemType.animationControllerResourceJson:
return "Animation controller";
case IProjectItemData_1.ProjectItemType.entityTypeResource:
return "Entity type visuals/audio";
case IProjectItemData_1.ProjectItemType.fogResourceJson:
return "Fog";
case IProjectItemData_1.ProjectItemType.modelGeometryJson:
return "Model";
case IProjectItemData_1.ProjectItemType.particleJson:
return "Particle";
case IProjectItemData_1.ProjectItemType.renderControllerJson:
return "Render controller";
case IProjectItemData_1.ProjectItemType.blockCulling:
return "Block culling";
case IProjectItemData_1.ProjectItemType.uiJson:
return "User interface";
case IProjectItemData_1.ProjectItemType.languagesCatalogResourceJson:
return "Language catalog";
case IProjectItemData_1.ProjectItemType.biomeBehaviorJson:
return "Biome";
case IProjectItemData_1.ProjectItemType.dialogueBehaviorJson:
return "Entity dialogue";
case IProjectItemData_1.ProjectItemType.featureRuleBehaviorJson:
return "World feature rule";
case IProjectItemData_1.ProjectItemType.featureBehavior:
return "Feature";
case IProjectItemData_1.ProjectItemType.functionEventJson:
return "Function event";
case IProjectItemData_1.ProjectItemType.recipeBehavior:
return "Recipe";
case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
return "Spawn rule";
case IProjectItemData_1.ProjectItemType.tradingBehaviorJson:
return "Trading";
case IProjectItemData_1.ProjectItemType.volumeBehaviorJson:
return "Volume";
case IProjectItemData_1.ProjectItemType.attachableResourceJson:
return "Attachable";
case IProjectItemData_1.ProjectItemType.itemTypeResourceJson:
return "Item type resources";
case IProjectItemData_1.ProjectItemType.materialsResourceJson:
return "Materials";
case IProjectItemData_1.ProjectItemType.musicDefinitionJson:
return "Music catalog";
case IProjectItemData_1.ProjectItemType.soundDefinitionCatalog:
return "Sound catalog";
case IProjectItemData_1.ProjectItemType.audio:
return "Audio";
case IProjectItemData_1.ProjectItemType.contentIndexJson:
return "Content Description";
case IProjectItemData_1.ProjectItemType.contentReportJson:
return "Content Report";
case IProjectItemData_1.ProjectItemType.tsconfigJson:
return "TypeScript config";
case IProjectItemData_1.ProjectItemType.prettierRcJson:
return "Prettier JavaScript/JSON style config";
case IProjectItemData_1.ProjectItemType.jsconfigJson:
return "JavaScript config";
case IProjectItemData_1.ProjectItemType.docfxJson:
return "DocFX definition";
case IProjectItemData_1.ProjectItemType.jsdocJson:
return "JSDoc definition";
case IProjectItemData_1.ProjectItemType.packageJson:
return "NPM package definition";
case IProjectItemData_1.ProjectItemType.packageLockJson:
return "NPM package lock definition";
case IProjectItemData_1.ProjectItemType.env:
return "Environment File";
case IProjectItemData_1.ProjectItemType.esLintConfigMjs:
return "ESLint config";
case IProjectItemData_1.ProjectItemType.justConfigTs:
return "Just config";
case IProjectItemData_1.ProjectItemType.docInfoJson:
return "Doc info json";
case IProjectItemData_1.ProjectItemType.ninesliceJson:
return "Nine-slice scaling config";
case IProjectItemData_1.ProjectItemType.scriptTypesJson:
return "Script types definition";
case IProjectItemData_1.ProjectItemType.vanillaDataJson:
return "Vanilla data definition";
case IProjectItemData_1.ProjectItemType.engineOrderingJson:
return "Engine ordering definition";
case IProjectItemData_1.ProjectItemType.commandSetDefinitionJson:
return "Command definition";
case IProjectItemData_1.ProjectItemType.skinPackManifestJson:
return "Skin pack manifest";
case IProjectItemData_1.ProjectItemType.personaManifestJson:
return "Persona manifest";
case IProjectItemData_1.ProjectItemType.blockTypeBaseJs:
return "Block type base JavaScript";
case IProjectItemData_1.ProjectItemType.blockTypeBaseTs:
return "Block type base TypeScript";
case IProjectItemData_1.ProjectItemType.image:
return "Image";
case IProjectItemData_1.ProjectItemType.texture:
return "Texture";
case IProjectItemData_1.ProjectItemType.uiTexture:
return "UI texture";
case IProjectItemData_1.ProjectItemType.iconImage:
return "Icon";
case IProjectItemData_1.ProjectItemType.marketingAssetImage:
return "Marketing image";
case IProjectItemData_1.ProjectItemType.storeAssetImage:
return "Store image";
case IProjectItemData_1.ProjectItemType.vsCodeLaunchJson:
return "VS Code launch file";
case IProjectItemData_1.ProjectItemType.vsCodeTasksJson:
return "VS Code tasks";
case IProjectItemData_1.ProjectItemType.vsCodeSettingsJson:
return "VS Code settings";
case IProjectItemData_1.ProjectItemType.vsCodeExtensionsJson:
return "VS Code extensions";
case IProjectItemData_1.ProjectItemType.lang:
return "Language translations";
case IProjectItemData_1.ProjectItemType.worldTemplateManifestJson:
return "World template manifest";
case IProjectItemData_1.ProjectItemType.textureSetJson:
return "Texture set";
case IProjectItemData_1.ProjectItemType.textureListJson:
return "Texture list";
case IProjectItemData_1.ProjectItemType.lightingJson:
return "Lighting";
case IProjectItemData_1.ProjectItemType.flipbookTexturesJson:
return "Flipbook texture set";
case IProjectItemData_1.ProjectItemType.itemTextureJson:
return "Item texture";
case IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson:
return "Terrain texture";
case IProjectItemData_1.ProjectItemType.globalVariablesJson:
return "UI global variables";
case IProjectItemData_1.ProjectItemType.dataForm:
return "Form";
case IProjectItemData_1.ProjectItemType.dimensionJson:
return "Dimension";
case IProjectItemData_1.ProjectItemType.mcToolsProjectPreferences:
return "MCTools preferences";
case IProjectItemData_1.ProjectItemType.behaviorPackHistoryListJson:
return "Behavior pack history";
case IProjectItemData_1.ProjectItemType.resourcePackHistoryListJson:
return "Resource pack history";
case IProjectItemData_1.ProjectItemType.educationJson:
return "Education manifest";
default:
return "Unknown";
}
}
static wouldBeCircular(candidate, considering, paths, dontGoUpward, dontGoDownward) {
if (!paths) {
paths = [];
}
if (!candidate.projectPath) {
return false;
}
if (paths.includes(candidate.projectPath)) {
return true;
}
if (!considering) {
considering = candidate;
}
else if (considering.projectPath) {
paths.push(considering.projectPath);
}
if (considering.parentItems && !dontGoUpward) {
for (const parentItem of considering.parentItems) {
if (parentItem.parentItem) {
if (this.wouldBeCircular(candidate, parentItem.parentItem, paths, false, true)) {
return true;
}
}
}
}
if (considering.childItems && !dontGoDownward) {
for (const childItem of considering.childItems) {
if (childItem.childItem) {
if (this.wouldBeCircular(candidate, childItem.childItem, paths, true, false)) {
return true;
}
}
}
}
return false;
}
static isBlock(type) {
return (type === IProjectItemData_1.ProjectItemType.blockCulling ||
type === IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson ||
type === IProjectItemData_1.ProjectItemType.blockTypeBehavior ||
type === IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson ||
type === IProjectItemData_1.ProjectItemType.blockMaterialsBehaviorJson);
}
static isBlockRelated(projectItem, dontGoUpward, dontGoDownward) {
if (projectItem.parentItems && !dontGoUpward) {
for (const parentItem of projectItem.parentItems) {
if (parentItem.parentItem) {
if (this.isBlock(parentItem.parentItem.itemType)) {
return true;
}
if (this.isBlockRelated(parentItem.parentItem, false, true)) {
return true;
}
}
}
}
if (projectItem.childItems && !dontGoDownward) {
for (const parentItem of projectItem.childItems) {
if (parentItem.childItem) {
if (this.isBlock(parentItem.childItem.itemType)) {
return true;
}
if (this.isBlockRelated(parentItem.parentItem, true, false)) {
return true;
}
}
}
}
return false;
}
static isUI(type) {
return type === IProjectItemData_1.ProjectItemType.uiJson || type === IProjectItemData_1.ProjectItemType.uiTexture;
}
static isUIRelated(projectItem, dontGoUpward, dontGoDownward) {
if (projectItem.parentItems && !dontGoUpward) {
for (const parentItem of projectItem.parentItems) {
if (parentItem.parentItem) {
if (this.isUI(parentItem.parentItem.itemType)) {
return true;
}
if (this.isUIRelated(parentItem.parentItem, false, true)) {
return true;
}
}
}
}
if (projectItem.childItems && !dontGoDownward) {
for (const parentItem of projectItem.childItems) {
if (parentItem.childItem) {
if (this.isUI(parentItem.childItem.itemType)) {
return true;
}
if (this.isUIRelated(parentItem.parentItem, true, false)) {
return true;
}
}
}
}
return false;
}
static isItem(type) {
return (type === IProjectItemData_1.ProjectItemType.itemTextureJson ||
type === IProjectItemData_1.ProjectItemType.itemTypeBehavior ||
type === IProjectItemData_1.ProjectItemType.attachableResourceJson ||
type === IProjectItemData_1.ProjectItemType.itemTypeResourceJson);
}
static isItemRelated(projectItem, dontGoUpward, dontGoDownward) {
if (projectItem.parentItems && !dontGoUpward) {
for (const parentItem of projectItem.parentItems) {
if (parentItem.parentItem) {
if (this.isItem(parentItem.parentItem.itemType)) {
return true;
}
if (this.isItemRelated(parentItem.parentItem, false, true)) {
return true;
}
}
}
}
if (projectItem.childItems && !dontGoDownward) {
for (const parentItem of projectItem.childItems) {
if (parentItem.childItem) {
if (this.isItem(parentItem.childItem.itemType)) {
return true;
}
if (this.isItemRelated(parentItem.parentItem, true, false)) {
return true;
}
}
}
}
return false;
}
static isEntity(type) {
return (type === IProjectItemData_1.ProjectItemType.entityTypeBehavior ||
type === IProjectItemData_1.ProjectItemType.entityTypeResource ||
type === IProjectItemData_1.ProjectItemType.renderControllerJson);
}
static isEntityRelated(projectItem, dontGoUpward, dontGoDownward) {
if (projectItem.parentItems && !dontGoUpward) {
for (const parentItem of projectItem.parentItems) {
if (parentItem.parentItem) {
if (this.isEntity(parentItem.parentItem.itemType)) {
return true;
}
if (this.isEntityRelated(parentItem.parentItem, false, true)) {
return true;
}
}
}
}
if (projectItem.childItems && !dontGoDownward) {
for (const parentItem of projectItem.childItems) {
if (parentItem.childItem) {
if (this.isEntity(parentItem.childItem.itemType)) {
return true;
}
if (this.isEntityRelated(parentItem.parentItem, true, false)) {
return true;
}
}
}
}
return false;
}
static isParticle(type) {
return type === IProjectItemData_1.ProjectItemType.particleJson;
}
static isParticleRelated(projectItem, dontGoUpward, dontGoDownward) {
if (projectItem.parentItems && !dontGoUpward) {
for (const parentItem of projectItem.parentItems) {
if (parentItem.parentItem) {
if (this.isParticle(parentItem.parentItem.itemType)) {
return true;
}
if (this.isParticleRelated(parentItem.parentItem, false, true)) {
return true;
}
}
}
}
if (projectItem.childItems && !dontGoDownward) {
for (const parentItem of projectItem.childItems) {
if (parentItem.childItem) {
if (this.isParticle(parentItem.childItem.itemType)) {
return true;
}
if (this.isParticleRelated(parentItem.parentItem, true, false)) {
return true;
}
}
}
}
return false;
}
static getNewItemName(type) {
return ProjectItemUtilities.getDescriptionForType(type).toLowerCase();
}
static getColorForType(type) {
const cat = ProjectItemUtilities.getCategory(type);
switch (cat) {
case IProjectItemData_1.ProjectItemCategory.logic:
return {
red: (type % 4) * 24 + 160,
green: (Math.floor(type / 4) % 4) * 12 + 104,
blue: (Math.floor(type / 16) % 4) * 12 + 104,
};
case IProjectItemData_1.ProjectItemCategory.assets:
return {
red: (Math.floor(type / 4) % 4) * 12 + 104,
green: (type % 4) * 24 + 160,
blue: (Math.floor(type / 16) % 4) * 12 + 104,
};
case IProjectItemData_1.ProjectItemCategory.types:
return {
red: (Math.floor(type / 16) % 4) * 12 + 104,
green: (Math.floor(type / 4) % 4) * 12 + 104,
blue: (type % 4) * 24 + 160,
};
default:
return {
red: (Math.floor(type / 4) % 4) * 24 + 128,
green: (Math.floor(type / 4) % 4) * 24 + 128,
blue: (Math.floor(type / 4) % 4) * 24 + 128,
};
}
}
static getPluralDescriptionForType(type) {
// override non-"plus s" plural-ifications here
switch (type) {
case IProjectItemData_1.ProjectItemType.audio:
return "Audio";
case IProjectItemData_1.ProjectItemType.ts:
return "TypeScript files";
case IProjectItemData_1.ProjectItemType.js:
return "JavaScript files";
case IProjectItemData_1.ProjectItemType.itemTypeResourceJson:
return "Item type visuals and audio";
case IProjectItemData_1.ProjectItemType.entityTypeResource:
return "Entity type visuals/audio";
case IProjectItemData_1.ProjectItemType.catalogIndexJs:
return "Catalog indexes";
case IProjectItemData_1.ProjectItemType.behaviorPackHistoryListJson:
return "Behavior pack histories";
case IProjectItemData_1.ProjectItemType.resourcePackHistoryListJson:
return "Resource pack histories";
case IProjectItemData_1.ProjectItemType.globalVariablesJson:
case IProjectItemData_1.ProjectIte