@minecraft/creator-tools 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/app/Carto.js +4 -4
  2. package/app/IProjectItemData.js +2 -2
  3. package/app/Project.js +6 -6
  4. package/app/ProjectItem.js +2 -2
  5. package/app/ProjectItemRelations.js +22 -3
  6. package/app/ProjectItemUtilities.js +13 -13
  7. package/app/ProjectUtilities.js +8 -5
  8. package/cli/ClUtils.js +4 -1
  9. package/cli/TaskWorker.js +17 -10
  10. package/core/Constants.js +1 -1
  11. package/core/ContentIndex.js +13 -5
  12. package/data/forms/render_controller_set_geometry.form.json +1 -0
  13. package/data/forms/render_controller_set_materials.form.json +1 -0
  14. package/data/forms/render_controller_set_textures.form.json +1 -0
  15. package/data/mci/release.mci.json +1 -1
  16. package/info/AddOnItemRequirementsGenerator.js +15 -6
  17. package/info/AddOnRequirementsGenerator.js +12 -4
  18. package/info/ItemCountsInfoGenerator.js +1 -1
  19. package/info/JsonFileTagsInfoGenerator.js +138 -23
  20. package/info/ProjectInfoSet.js +11 -8
  21. package/info/StrictPlatformInfoGenerator.js +1 -1
  22. package/info/TextureInfoGenerator.js +3 -3
  23. package/local/LocalUtilities.js +12 -2
  24. package/manager/BehaviorPackItemTypeManager.js +1 -1
  25. package/manager/FormatVersionManager.js +2 -2
  26. package/maps/app/Carto.js.map +1 -1
  27. package/maps/app/IProjectItemData.js.map +1 -1
  28. package/maps/app/Project.js.map +1 -1
  29. package/maps/app/ProjectItem.js.map +1 -1
  30. package/maps/app/ProjectItemRelations.js.map +1 -1
  31. package/maps/app/ProjectItemUtilities.js.map +1 -1
  32. package/maps/app/ProjectUtilities.js.map +1 -1
  33. package/maps/cli/ClUtils.js.map +1 -1
  34. package/maps/cli/TaskWorker.js.map +1 -1
  35. package/maps/core/Constants.js.map +1 -1
  36. package/maps/core/ContentIndex.js.map +1 -1
  37. package/maps/info/AddOnItemRequirementsGenerator.js.map +1 -1
  38. package/maps/info/AddOnRequirementsGenerator.js.map +1 -1
  39. package/maps/info/ItemCountsInfoGenerator.js.map +1 -1
  40. package/maps/info/JsonFileTagsInfoGenerator.js.map +1 -1
  41. package/maps/info/ProjectInfoSet.js.map +1 -1
  42. package/maps/info/StrictPlatformInfoGenerator.js.map +1 -1
  43. package/maps/info/TextureInfoGenerator.js.map +1 -1
  44. package/maps/local/LocalUtilities.js.map +1 -1
  45. package/maps/manager/BehaviorPackItemTypeManager.js.map +1 -1
  46. package/maps/manager/FormatVersionManager.js.map +1 -1
  47. package/maps/minecraft/AnimationBehaviorDefinition.js.map +1 -1
  48. package/maps/minecraft/AnimationControllerBehaviorDefinition.js.map +1 -1
  49. package/maps/minecraft/AnimationControllerResourceDefinition.js.map +1 -1
  50. package/maps/minecraft/AnimationResourceDefinition.js.map +1 -1
  51. package/maps/minecraft/AttachableResourceDefinition.js.map +1 -1
  52. package/maps/minecraft/BehaviorManifestDefinition.js.map +1 -1
  53. package/maps/minecraft/BlockTypeBehaviorDefinition.js.map +1 -1
  54. package/maps/minecraft/Database.js.map +1 -1
  55. package/maps/minecraft/EntityTypeDefinition.js.map +1 -1
  56. package/maps/minecraft/EntityTypeResourceDefinition.js.map +1 -1
  57. package/maps/minecraft/FlipbookTextureCatalogDefinition.js.map +1 -1
  58. package/maps/minecraft/IDefinition.js.map +1 -0
  59. package/maps/minecraft/IParticleEffect.js.map +1 -1
  60. package/maps/minecraft/IRecipeBehavior.js.map +1 -1
  61. package/maps/minecraft/IRenderControllerSet.js.map +1 -1
  62. package/maps/minecraft/ItemTypeBehaviorDefinition.js.map +1 -1
  63. package/maps/minecraft/MinecraftDefinitions.js.map +1 -1
  64. package/maps/minecraft/MusicDefinitionCatalogDefinition.js.map +1 -1
  65. package/maps/minecraft/ParticleEffectResourceDefinition.js.map +1 -1
  66. package/maps/minecraft/RecipeBehaviorDefinition.js.map +1 -1
  67. package/maps/minecraft/RenderControllerSetDefinition.js.map +1 -1
  68. package/maps/minecraft/ResourceManifestDefinition.js.map +1 -1
  69. package/maps/minecraft/SoundCatalogDefinition.js.map +1 -1
  70. package/maps/minecraft/SoundDefinitionCatalogDefinition.js.map +1 -1
  71. package/maps/minecraft/TerrainTextureCatalogDefinition.js.map +1 -1
  72. package/maps/minecraft/WorldChunk.js.map +1 -1
  73. package/minecraft/AttachableResourceDefinition.js +1 -1
  74. package/minecraft/BehaviorManifestDefinition.js +6 -6
  75. package/minecraft/Database.js +21 -4
  76. package/minecraft/EntityTypeResourceDefinition.js +1 -1
  77. package/minecraft/FlipbookTextureCatalogDefinition.js +94 -2
  78. package/minecraft/IDefinition.js +4 -0
  79. package/minecraft/MinecraftDefinitions.js +2 -2
  80. package/minecraft/ParticleEffectResourceDefinition.js +100 -8
  81. package/minecraft/RecipeBehaviorDefinition.js +28 -7
  82. package/minecraft/RenderControllerSetDefinition.js +9 -4
  83. package/minecraft/ResourceManifestDefinition.js +6 -6
  84. package/minecraft/SoundDefinitionCatalogDefinition.js +1 -1
  85. package/minecraft/WorldChunk.js +1 -1
  86. package/package.json +4 -5
package/app/Carto.js CHANGED
@@ -69,10 +69,10 @@ var CartoMinecraftErrorStatus;
69
69
  CartoMinecraftErrorStatus[CartoMinecraftErrorStatus["configuration"] = 6] = "configuration";
70
70
  })(CartoMinecraftErrorStatus = exports.CartoMinecraftErrorStatus || (exports.CartoMinecraftErrorStatus = {}));
71
71
  exports.CartoTargetStrings = [
72
- "Latest Minecraft release",
73
- "Latest Minecraft preview",
74
- "Latest Education Edition",
75
- "Latest Education Edition preview",
72
+ "Latest Minecraft Bedrock",
73
+ "Latest Minecraft Bedrock preview",
74
+ "Latest Minecraft Education",
75
+ "Latest Minecraft Education preview",
76
76
  ];
77
77
  exports.SidePaneMaxWidth = 880;
78
78
  exports.SidePaneMinWidth = 280;
@@ -40,7 +40,7 @@ var ProjectItemType;
40
40
  ProjectItemType[ProjectItemType["animationControllerBehaviorJson"] = 20] = "animationControllerBehaviorJson";
41
41
  ProjectItemType[ProjectItemType["blockTypeBehavior"] = 21] = "blockTypeBehavior";
42
42
  ProjectItemType[ProjectItemType["blockMaterialsBehaviorJson"] = 22] = "blockMaterialsBehaviorJson";
43
- ProjectItemType[ProjectItemType["itemTypeBehaviorJson"] = 23] = "itemTypeBehaviorJson";
43
+ ProjectItemType[ProjectItemType["itemTypeBehavior"] = 23] = "itemTypeBehavior";
44
44
  ProjectItemType[ProjectItemType["lootTableBehavior"] = 24] = "lootTableBehavior";
45
45
  ProjectItemType[ProjectItemType["biomeResourceJson"] = 25] = "biomeResourceJson";
46
46
  ProjectItemType[ProjectItemType["blocksCatalogResourceJson"] = 26] = "blocksCatalogResourceJson";
@@ -60,7 +60,7 @@ var ProjectItemType;
60
60
  ProjectItemType[ProjectItemType["featureRuleBehaviorJson"] = 40] = "featureRuleBehaviorJson";
61
61
  ProjectItemType[ProjectItemType["featureBehavior"] = 41] = "featureBehavior";
62
62
  ProjectItemType[ProjectItemType["functionEventJson"] = 42] = "functionEventJson";
63
- ProjectItemType[ProjectItemType["recipeBehaviorJson"] = 43] = "recipeBehaviorJson";
63
+ ProjectItemType[ProjectItemType["recipeBehavior"] = 43] = "recipeBehavior";
64
64
  ProjectItemType[ProjectItemType["spawnRuleBehavior"] = 44] = "spawnRuleBehavior";
65
65
  ProjectItemType[ProjectItemType["tradingBehaviorJson"] = 45] = "tradingBehaviorJson";
66
66
  ProjectItemType[ProjectItemType["volumeBehaviorJson"] = 46] = "volumeBehaviorJson";
package/app/Project.js CHANGED
@@ -65,10 +65,10 @@ var FolderContext;
65
65
  })(FolderContext = exports.FolderContext || (exports.FolderContext = {}));
66
66
  exports.ProjectTargetStrings = [
67
67
  "<default>",
68
- "Latest Minecraft release",
69
- "Latest Minecraft preview",
70
- "Latest Education Edition",
71
- "Latest Education Edition preview",
68
+ "Latest Minecraft Bedrock",
69
+ "Latest Minecraft Bedrock preview",
70
+ "Latest Minecraft Education",
71
+ "Latest Minecraft Education preview",
72
72
  ];
73
73
  exports.AUTOGENERATED_CONTENT_TOKEN = "==== AUTOGENERATED";
74
74
  exports.AUTOGENERATED_JS_SEPARATOR = "\r\n// ===== AUTOGENERATED CONTENT ===== CONTENT AT OR BELOW THIS LINE WILL BE WIPED AND UPDATED WHEN USED IN TOOLING";
@@ -1564,7 +1564,7 @@ class Project {
1564
1564
  newJsonType = IProjectItemData_1.ProjectItemType.dialogueBehaviorJson;
1565
1565
  }
1566
1566
  else if (folderContext === FolderContext.behaviorPack && folderPathLower.indexOf("/recipes/") >= 0) {
1567
- newJsonType = IProjectItemData_1.ProjectItemType.recipeBehaviorJson;
1567
+ newJsonType = IProjectItemData_1.ProjectItemType.recipeBehavior;
1568
1568
  }
1569
1569
  else if (folderContext === FolderContext.behaviorPack &&
1570
1570
  folderPathLower.indexOf("/spawn_rules/") >= 0) {
@@ -1742,7 +1742,7 @@ class Project {
1742
1742
  newJsonType = IProjectItemData_1.ProjectItemType.entityTypeBehavior;
1743
1743
  }
1744
1744
  else if (folderContext === FolderContext.behaviorPack && folderPathLower.indexOf("/items/") >= 0) {
1745
- newJsonType = IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson;
1745
+ newJsonType = IProjectItemData_1.ProjectItemType.itemTypeBehavior;
1746
1746
  }
1747
1747
  else if (folderContext === FolderContext.behaviorPack && folderPathLower.indexOf("/blocks/") >= 0) {
1748
1748
  newJsonType = IProjectItemData_1.ProjectItemType.blockTypeBehavior;
@@ -248,7 +248,7 @@ class ProjectItem {
248
248
  return "behavior/animations/animations.json";
249
249
  case IProjectItemData_2.ProjectItemType.blockTypeBehavior:
250
250
  return "behavior/blocks/blocks.json";
251
- case IProjectItemData_2.ProjectItemType.itemTypeBehaviorJson:
251
+ case IProjectItemData_2.ProjectItemType.itemTypeBehavior:
252
252
  return "behavior/items/items.json";
253
253
  case IProjectItemData_2.ProjectItemType.lootTableBehavior:
254
254
  return "behavior/loot_tables/loot_tables.json";
@@ -288,7 +288,7 @@ class ProjectItem {
288
288
  return "behavior/feature_rules/feature_rules.json";
289
289
  case IProjectItemData_2.ProjectItemType.functionEventJson:
290
290
  return "behavior/functions/tick.json";
291
- case IProjectItemData_2.ProjectItemType.recipeBehaviorJson:
291
+ case IProjectItemData_2.ProjectItemType.recipeBehavior:
292
292
  return "behavior/recipes/recipes.json";
293
293
  case IProjectItemData_2.ProjectItemType.spawnRuleBehavior:
294
294
  return "behavior/spawn_rules/spawn_rules.json";
@@ -5,6 +5,7 @@ const EntityTypeDefinition_1 = require("../minecraft/EntityTypeDefinition");
5
5
  const EntityTypeResourceDefinition_1 = require("../minecraft/EntityTypeResourceDefinition");
6
6
  const ItemTextureCatalogDefinition_1 = require("../minecraft/ItemTextureCatalogDefinition");
7
7
  const MusicDefinitionCatalogDefinition_1 = require("../minecraft/MusicDefinitionCatalogDefinition");
8
+ const ParticleEffectResourceDefinition_1 = require("../minecraft/ParticleEffectResourceDefinition");
8
9
  const SoundCatalogDefinition_1 = require("../minecraft/SoundCatalogDefinition");
9
10
  const SoundDefinitionCatalogDefinition_1 = require("../minecraft/SoundDefinitionCatalogDefinition");
10
11
  const TerrainTextureCatalogDefinition_1 = require("../minecraft/TerrainTextureCatalogDefinition");
@@ -36,6 +37,15 @@ class ProjectItemRelations {
36
37
  }
37
38
  }
38
39
  }
40
+ else if (item.itemType === IProjectItemData_1.ProjectItemType.particleJson) {
41
+ await item.ensureStorage();
42
+ if (item.file) {
43
+ const particleResource = await ParticleEffectResourceDefinition_1.default.ensureOnFile(item.file);
44
+ if (particleResource) {
45
+ await particleResource.addChildItems(project, item);
46
+ }
47
+ }
48
+ }
39
49
  else if (item.itemType === IProjectItemData_1.ProjectItemType.attachableResourceJson) {
40
50
  await item.ensureStorage();
41
51
  if (item.file) {
@@ -103,7 +113,16 @@ class ProjectItemRelations {
103
113
  if (rel.parentItem.file) {
104
114
  const entityTypeResource = await EntityTypeResourceDefinition_1.default.ensureOnFile(rel.parentItem.file);
105
115
  if (entityTypeResource) {
106
- await entityTypeResource.deleteLink(rel);
116
+ await entityTypeResource.deleteLinkToChild(rel);
117
+ }
118
+ }
119
+ }
120
+ else if (rel.parentItem.itemType === IProjectItemData_1.ProjectItemType.particleJson) {
121
+ await item.ensureStorage();
122
+ if (rel.parentItem.file) {
123
+ const particleResource = await ParticleEffectResourceDefinition_1.default.ensureOnFile(rel.parentItem.file);
124
+ if (particleResource) {
125
+ await particleResource.deleteLinkToChild(rel);
107
126
  }
108
127
  }
109
128
  }
@@ -112,7 +131,7 @@ class ProjectItemRelations {
112
131
  if (rel.parentItem.file) {
113
132
  const attachableResource = await AttachableResourceDefinition_1.default.ensureOnFile(rel.parentItem.file);
114
133
  if (attachableResource) {
115
- await attachableResource.deleteLink(rel);
134
+ await attachableResource.deleteLinkToChild(rel);
116
135
  }
117
136
  }
118
137
  }
@@ -121,7 +140,7 @@ class ProjectItemRelations {
121
140
  if (rel.parentItem.file) {
122
141
  const soundCat = await SoundDefinitionCatalogDefinition_1.default.ensureOnFile(rel.parentItem.file);
123
142
  if (soundCat) {
124
- await soundCat.deleteLink(rel.childItem);
143
+ await soundCat.deleteLinkToChild(rel.childItem);
125
144
  }
126
145
  }
127
146
  }
@@ -37,16 +37,16 @@ class ProjectItemUtilities {
37
37
  const firstHundred = jsonContent.substring(0, 100);
38
38
  if (firstHundred.indexOf('"minecraft:recipe_shaped"') >= 0 ||
39
39
  firstHundred.indexOf('"minecraft:recipe_shapeless"') >= 0) {
40
- return { itemType: IProjectItemData_1.ProjectItemType.recipeBehaviorJson };
40
+ return { itemType: IProjectItemData_1.ProjectItemType.recipeBehavior };
41
41
  }
42
42
  else if (firstHundred.indexOf('"minecraft:entity"') >= 0) {
43
43
  return { itemType: IProjectItemData_1.ProjectItemType.entityTypeBehavior };
44
44
  }
45
45
  else if (firstHundred.indexOf('"minecraft:item"') >= 0) {
46
- return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson };
46
+ return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehavior };
47
47
  }
48
48
  else if (firstHundred.indexOf('"pools"') >= 0) {
49
- return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson };
49
+ return { itemType: IProjectItemData_1.ProjectItemType.itemTypeBehavior };
50
50
  }
51
51
  else if (firstHundred.indexOf('"minecraft:spawn_rules"') >= 0) {
52
52
  return { itemType: IProjectItemData_1.ProjectItemType.spawnRuleBehavior };
@@ -114,9 +114,9 @@ class ProjectItemUtilities {
114
114
  return 1851;
115
115
  case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
116
116
  return 1852;
117
- case IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson:
117
+ case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
118
118
  return 1853;
119
- case IProjectItemData_1.ProjectItemType.recipeBehaviorJson:
119
+ case IProjectItemData_1.ProjectItemType.recipeBehavior:
120
120
  return 1860;
121
121
  case IProjectItemData_1.ProjectItemType.particleJson:
122
122
  return 1870;
@@ -188,12 +188,12 @@ class ProjectItemUtilities {
188
188
  case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
189
189
  case IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson:
190
190
  case IProjectItemData_1.ProjectItemType.blockTypeResourceJson:
191
- case IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson:
191
+ case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
192
192
  case IProjectItemData_1.ProjectItemType.fogResourceJson:
193
193
  case IProjectItemData_1.ProjectItemType.tradingBehaviorJson:
194
194
  case IProjectItemData_1.ProjectItemType.particleJson:
195
195
  case IProjectItemData_1.ProjectItemType.structure:
196
- case IProjectItemData_1.ProjectItemType.recipeBehaviorJson:
196
+ case IProjectItemData_1.ProjectItemType.recipeBehavior:
197
197
  case IProjectItemData_1.ProjectItemType.biomeBehaviorJson:
198
198
  case IProjectItemData_1.ProjectItemType.biomeResourceJson:
199
199
  case IProjectItemData_1.ProjectItemType.lootTableBehavior:
@@ -294,7 +294,7 @@ class ProjectItemUtilities {
294
294
  case IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson:
295
295
  case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
296
296
  case IProjectItemData_1.ProjectItemType.blockMaterialsBehaviorJson:
297
- case IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson:
297
+ case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
298
298
  case IProjectItemData_1.ProjectItemType.lootTableBehavior:
299
299
  case IProjectItemData_1.ProjectItemType.biomeResourceJson:
300
300
  case IProjectItemData_1.ProjectItemType.fileListArrayJson:
@@ -315,7 +315,7 @@ class ProjectItemUtilities {
315
315
  case IProjectItemData_1.ProjectItemType.featureRuleBehaviorJson:
316
316
  case IProjectItemData_1.ProjectItemType.featureBehavior:
317
317
  case IProjectItemData_1.ProjectItemType.functionEventJson:
318
- case IProjectItemData_1.ProjectItemType.recipeBehaviorJson:
318
+ case IProjectItemData_1.ProjectItemType.recipeBehavior:
319
319
  case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
320
320
  case IProjectItemData_1.ProjectItemType.tradingBehaviorJson:
321
321
  case IProjectItemData_1.ProjectItemType.volumeBehaviorJson:
@@ -465,7 +465,7 @@ class ProjectItemUtilities {
465
465
  return "Block type";
466
466
  case IProjectItemData_1.ProjectItemType.blockMaterialsBehaviorJson:
467
467
  return "Block type materials";
468
- case IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson:
468
+ case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
469
469
  return "Item type";
470
470
  case IProjectItemData_1.ProjectItemType.lootTableBehavior:
471
471
  return "Loot table";
@@ -505,7 +505,7 @@ class ProjectItemUtilities {
505
505
  return "Feature";
506
506
  case IProjectItemData_1.ProjectItemType.functionEventJson:
507
507
  return "Function event";
508
- case IProjectItemData_1.ProjectItemType.recipeBehaviorJson:
508
+ case IProjectItemData_1.ProjectItemType.recipeBehavior:
509
509
  return "Recipe";
510
510
  case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
511
511
  return "Spawn rule";
@@ -764,7 +764,7 @@ class ProjectItemUtilities {
764
764
  return ["attachables"];
765
765
  case IProjectItemData_1.ProjectItemType.entityTypeBehavior:
766
766
  return ["entities"];
767
- case IProjectItemData_1.ProjectItemType.itemTypeBehaviorJson:
767
+ case IProjectItemData_1.ProjectItemType.itemTypeBehavior:
768
768
  case IProjectItemData_1.ProjectItemType.itemTypeResourceJson:
769
769
  return ["items"];
770
770
  case IProjectItemData_1.ProjectItemType.blockTypeBehavior:
@@ -775,7 +775,7 @@ class ProjectItemUtilities {
775
775
  return ["command_modules"];
776
776
  case IProjectItemData_1.ProjectItemType.lootTableBehavior:
777
777
  return ["loot_tables"];
778
- case IProjectItemData_1.ProjectItemType.recipeBehaviorJson:
778
+ case IProjectItemData_1.ProjectItemType.recipeBehavior:
779
779
  return ["recipes"];
780
780
  case IProjectItemData_1.ProjectItemType.spawnRuleBehavior:
781
781
  return ["spawn_rules"];
@@ -492,8 +492,8 @@ class ProjectUtilities {
492
492
  const bpManifestJson = await BehaviorManifestDefinition_1.default.ensureOnFile(pi.file);
493
493
  if (bpManifestJson) {
494
494
  bpManifestJson.randomizeModuleUuids(project.defaultScriptModuleUniqueId, oldUids["defaultScriptModulePack"]);
495
- if (bpManifestJson.uuid !== oldUids["defaultBehaviorPack"] &&
496
- bpManifestJson.uuid !== project.defaultBehaviorPackUniqueId) {
495
+ if (bpManifestJson.id !== oldUids["defaultBehaviorPack"] &&
496
+ bpManifestJson.id !== project.defaultBehaviorPackUniqueId) {
497
497
  await bpManifestJson.setUuid(Utilities_1.default.createUuid(), project);
498
498
  }
499
499
  }
@@ -502,8 +502,8 @@ class ProjectUtilities {
502
502
  const rpManifestJson = await ResourceManifestDefinition_1.default.ensureOnFile(pi.file);
503
503
  if (rpManifestJson) {
504
504
  rpManifestJson.randomizeModuleUuids(project.defaultDataUniqueId, oldUids["defaultDataModulePack"]);
505
- if (rpManifestJson.uuid !== oldUids["defaultResourcePack"] &&
506
- rpManifestJson.uuid !== project.defaultResourcePackUniqueId) {
505
+ if (rpManifestJson.id !== oldUids["defaultResourcePack"] &&
506
+ rpManifestJson.id !== project.defaultResourcePackUniqueId) {
507
507
  await rpManifestJson.setUuid(Utilities_1.default.createUuid(), project);
508
508
  }
509
509
  }
@@ -677,7 +677,10 @@ class ProjectUtilities {
677
677
  }
678
678
  }
679
679
  static replaceNamesInPath(path, project, entityTypeProject, newName) {
680
- path = Utilities_1.default.replaceAll(path, entityTypeProject.id, newName);
680
+ path = Utilities_1.default.replaceAll(path, "/" + entityTypeProject.id + ".", "/" + newName + ".");
681
+ path = Utilities_1.default.replaceAll(path, "\\" + entityTypeProject.id + ".", "\\" + newName + ".");
682
+ path = Utilities_1.default.replaceAll(path, "/" + entityTypeProject.id + "/", "/" + newName + "/");
683
+ path = Utilities_1.default.replaceAll(path, "\\" + entityTypeProject.id + "\\", "\\" + newName + "\\");
681
684
  return path;
682
685
  }
683
686
  static replaceNamesInContent(content, project, entityTypeProject, newName) {
package/cli/ClUtils.js CHANGED
@@ -118,7 +118,7 @@ class ClUtils {
118
118
  await workFolder.load();
119
119
  return workFolder;
120
120
  }
121
- static getCarto(localEnv) {
121
+ static getCarto(localEnv, basePath) {
122
122
  CartoApp_1.default.localFolderExists = ClUtils.localFolderExists;
123
123
  CartoApp_1.default.localFileExists = ClUtils.localFileExists;
124
124
  CartoApp_1.default.ensureLocalFolder = ClUtils.ensureLocalFolder;
@@ -127,6 +127,9 @@ class ClUtils {
127
127
  CartoApp_1.default.packStorage = new NodeStorage_1.default(localEnv.utilities.cliWorkingPath + "packs" + NodeStorage_1.default.platformFolderDelimiter, "");
128
128
  CartoApp_1.default.deploymentStorage = new NodeStorage_1.default(localEnv.utilities.cliWorkingPath + "deployment" + NodeStorage_1.default.platformFolderDelimiter, "");
129
129
  CartoApp_1.default.workingStorage = new NodeStorage_1.default(localEnv.utilities.cliWorkingPath + "working" + NodeStorage_1.default.platformFolderDelimiter, "");
130
+ if (localEnv.utilities && basePath) {
131
+ localEnv.utilities.basePathAdjust = basePath;
132
+ }
130
133
  const coreStorage = new NodeStorage_1.default(__dirname + "/../data/content/", "");
131
134
  Database_1.default.contentFolder = coreStorage.rootFolder;
132
135
  Database_1.default.local = localEnv.utilities;
package/cli/TaskWorker.js CHANGED
@@ -119,21 +119,28 @@ async function validateAndDisposeProject(project, outputStorage, mcrJsonFile, su
119
119
  metaStates.push(projectSet);
120
120
  pis.disconnectFromProject();
121
121
  if (localEnv?.displayInfo || localEnv?.displayVerbose) {
122
+ let lastMessage;
122
123
  for (let k = 0; k < pis.items.length; k++) {
123
124
  const item = pis.items[k];
124
- if ((localEnv.displayInfo || localEnv.displayVerbose) &&
125
- item.itemType !== IInfoItemData_1.InfoItemType.info &&
126
- item.itemType !== IInfoItemData_1.InfoItemType.featureAggregate) {
127
- if (item.itemType === IInfoItemData_1.InfoItemType.error || item.itemType === IInfoItemData_1.InfoItemType.testCompleteFail) {
128
- Log_1.default.error(pis.itemToString(item));
125
+ const message = pis.itemToString(item);
126
+ if (message !== lastMessage) {
127
+ if ((localEnv.displayInfo || localEnv.displayVerbose) &&
128
+ item.itemType !== IInfoItemData_1.InfoItemType.info &&
129
+ item.itemType !== IInfoItemData_1.InfoItemType.featureAggregate) {
130
+ if (item.itemType === IInfoItemData_1.InfoItemType.error || item.itemType === IInfoItemData_1.InfoItemType.testCompleteFail) {
131
+ Log_1.default.error(message);
132
+ lastMessage = message;
133
+ }
134
+ else {
135
+ Log_1.default.message(message);
136
+ lastMessage = message;
137
+ }
129
138
  }
130
- else {
131
- Log_1.default.message(pis.itemToString(item));
139
+ else if (localEnv.displayVerbose) {
140
+ Log_1.default.verbose(message);
141
+ lastMessage = message;
132
142
  }
133
143
  }
134
- else if (localEnv.displayVerbose) {
135
- Log_1.default.verbose(pis.itemToString(item));
136
- }
137
144
  }
138
145
  }
139
146
  try {
package/core/Constants.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.constants = void 0;
4
4
  exports.constants = {
5
- version: "0.6.0",
5
+ version: "0.6.1",
6
6
  name: "Minecraft Creator Tools",
7
7
  disclaimer: "Alpha software. License at https://github.com/mojang/minecraft-creator-tools.",
8
8
  copyright: "Copyright 2024 Mojang AB. All rights reserved.",
@@ -24,17 +24,25 @@ var AnnotationCategories;
24
24
  AnnotationCategories["entityComponentDependent"] = "c";
25
25
  AnnotationCategories["blockComponentDependent"] = "d";
26
26
  AnnotationCategories["entityTypeDependent"] = "e";
27
- AnnotationCategories["experiment"] = "E";
27
+ AnnotationCategories["entityComponentDependentInGroup"] = "g";
28
28
  AnnotationCategories["itemTypeDependent"] = "i";
29
29
  AnnotationCategories["itemComponentDependent"] = "j";
30
- AnnotationCategories["entityComponentDependentInGroup"] = "g";
31
30
  AnnotationCategories["blockComponentDependentInPermutation"] = "p";
32
31
  AnnotationCategories["storagePathDependent"] = "s";
33
- AnnotationCategories["entityTypeSource"] = "E";
34
32
  AnnotationCategories["blockTypeSource"] = "B";
33
+ AnnotationCategories["entityTypeSource"] = "E";
35
34
  AnnotationCategories["itemTypeSource"] = "I";
35
+ AnnotationCategories["itemTextureSource"] = "J";
36
+ AnnotationCategories["blockSounds"] = "L";
37
+ AnnotationCategories["musicDefinitionSource"] = "M";
38
+ AnnotationCategories["entitySounds"] = "N";
39
+ AnnotationCategories["interactiveSounds"] = "R";
36
40
  AnnotationCategories["jsSource"] = "S";
41
+ AnnotationCategories["terrainTextureSource"] = "T";
42
+ AnnotationCategories["soundDefinitionSource"] = "U";
43
+ AnnotationCategories["individualEventSoundsSource"] = "V";
37
44
  AnnotationCategories["worldProperty"] = "W";
45
+ AnnotationCategories["experiment"] = "X";
38
46
  })(AnnotationCategories = exports.AnnotationCategories || (exports.AnnotationCategories = {}));
39
47
  const AvoidTermList = ["__proto__", "prototype", "[[Prototype]]"];
40
48
  class ContentIndex {
@@ -283,7 +291,7 @@ class ContentIndex {
283
291
  }
284
292
  for (const item in curNode) {
285
293
  // we've found part of our string in this node
286
- if (item.startsWith(nextStart) && curNode[item] !== undefined) {
294
+ if (item.startsWith(nextStart) && curNode[item] !== undefined && !hasAdvanced) {
287
295
  let itemIndex = 0;
288
296
  hasAdvanced = true;
289
297
  curNode = curNode[item];
@@ -340,7 +348,7 @@ class ContentIndex {
340
348
  }
341
349
  }
342
350
  insert(key, item, annotationChar) {
343
- if (Utilities_1.default.isNumericIsh(key) || key.length > 40) {
351
+ if (Utilities_1.default.isNumericIsh(key) || key.length > 70) {
344
352
  return;
345
353
  }
346
354
  // since we treat ± as special, ban usage of ± in strings.
@@ -23,6 +23,7 @@
23
23
  {
24
24
  "id": "geometries",
25
25
  "title": "Geometries",
26
+ "undefinedIfEmpty": true,
26
27
  "description": "Lists of geometries that can be used in selection calculations",
27
28
  "dataType": 28
28
29
  }
@@ -23,6 +23,7 @@
23
23
  {
24
24
  "id": "materials",
25
25
  "title": "Materials",
26
+ "undefinedIfEmpty": true,
26
27
  "description": "Lists of materials that can be used in selection calculations",
27
28
  "dataType": 28
28
29
  }
@@ -24,6 +24,7 @@
24
24
  {
25
25
  "id": "textures",
26
26
  "title": "Textures",
27
+ "undefinedIfEmpty": true,
27
28
  "description": "Lists of textures that can be used in selection calculations",
28
29
  "dataType": 28
29
30
  }