@minecraft/creator-tools 0.10.1 → 0.11.0
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.
- package/app/Carto.js +33 -6
- package/app/CartoApp.js +1 -0
- package/app/IGalleryItem.js +7 -0
- package/app/IProjectItemData.js +11 -3
- package/app/IProjectItemVariant.js +1 -0
- package/app/IProjectItemVariantSeed.js +4 -0
- package/app/Project.js +213 -809
- package/app/ProjectAutogeneration.js +28 -27
- package/app/ProjectExporter.js +15 -12
- package/app/ProjectItem.js +163 -32
- package/app/{ProjectItemManager.js → ProjectItemCreateManager.js} +153 -46
- package/app/ProjectItemInference.js +709 -0
- package/app/ProjectItemRelations.js +32 -32
- package/app/ProjectItemUtilities.js +111 -10
- package/app/ProjectItemVariant.js +1 -1
- package/app/ProjectItemVariantCreateManager.js +72 -0
- package/app/ProjectStandard.js +6 -6
- package/app/ProjectUtilities.js +59 -57
- package/cli/ClUtils.js +2 -1
- package/cli/TaskWorker.js +9 -1
- package/cli/index.js +233 -141
- package/core/Constants.js +2 -1
- package/core/Utilities.js +24 -2
- package/data/content/index.json +4 -0
- package/data/content/newitemjson/aggregate_feature.json +9 -0
- package/data/content/newitemjson/atmospherics.json +79 -0
- package/data/content/newitemjson/attachable.json +18 -0
- package/data/content/newitemjson/biome.json +13 -0
- package/data/content/newitemjson/block_behavior.json +13 -0
- package/data/content/newitemjson/block_catalog.json +6 -0
- package/data/content/newitemjson/block_culling.json +9 -0
- package/data/content/newitemjson/cave_carver_feature.json +9 -0
- package/data/content/newitemjson/color_grading.json +34 -0
- package/data/content/newitemjson/entity_behavior.json +19 -0
- package/data/content/newitemjson/entity_resources.json +27 -0
- package/data/content/newitemjson/feature_rule.json +16 -0
- package/data/content/newitemjson/geode_feature.json +28 -0
- package/data/content/newitemjson/index.json +33 -0
- package/data/content/newitemjson/item_behavior.json +17 -0
- package/data/content/newitemjson/jigsaw_processor_list.json +8 -0
- package/data/content/newitemjson/jigsaw_structure.json +14 -0
- package/data/content/newitemjson/jigsaw_structure_set.json +21 -0
- package/data/content/newitemjson/jigsaw_template_pool.json +8 -0
- package/data/content/newitemjson/lighting.json +44 -0
- package/data/content/newitemjson/loot_table.json +1 -0
- package/data/content/newitemjson/pbr.json +9 -0
- package/data/content/newitemjson/point_lights.json +47 -0
- package/data/content/newitemjson/recipe_shaped.json +9 -0
- package/data/content/newitemjson/recipe_shapeless.json +9 -0
- package/data/content/newitemjson/render_controller.json +10 -0
- package/data/content/newitemjson/shadows.json +4 -0
- package/data/content/newitemjson/spawn_rule.json +9 -0
- package/data/content/newitemjson/water.json +22 -0
- package/data/forms/biome/biome_definition.form.json +663 -503
- package/data/forms/biome/biome_description.form.json +8 -2
- package/data/forms/biome/biome_json_file.form.json +685 -525
- package/data/forms/biome/biome_replacement.form.json +17 -11
- package/data/forms/biome/minecraft_capped_surface.form.json +60 -25
- package/data/forms/biome/minecraft_climate.form.json +15 -15
- package/data/forms/biome/minecraft_frozen_ocean_surface.form.json +96 -51
- package/data/forms/biome/minecraft_mesa_surface.form.json +142 -79
- package/data/forms/biome/minecraft_mountain_parameters.form.json +12 -8
- package/data/forms/biome/minecraft_multinoise_generation_rules.form.json +12 -12
- package/data/forms/biome/minecraft_overworld_generation_rules.form.json +20 -4
- package/data/forms/biome/minecraft_overworld_height.form.json +6 -6
- package/data/forms/biome/minecraft_replace_biomes.form.json +17 -11
- package/data/forms/biome/minecraft_surface_material_adjustments.form.json +84 -64
- package/data/forms/biome/minecraft_surface_parameters.form.json +96 -51
- package/data/forms/biome/minecraft_swamp_surface.form.json +96 -51
- package/data/forms/biome/minecraft_tags.form.json +1 -1
- package/data/forms/block/materialinstanceface.form.json +34 -0
- package/data/forms/block/minecraft_destructible_by_mining.form.json +3 -28
- package/data/forms/block/minecraft_destruction_particles.form.json +7 -0
- package/data/forms/block/minecraft_geometry.form.json +74 -0
- package/data/forms/block/minecraft_item_visual.form.json +1 -0
- package/data/forms/block/minecraft_liquid_detection.form.json +1 -0
- package/data/forms/block/minecraft_map_color.form.json +7 -6
- package/data/forms/block/minecraft_material_instances.form.json +45 -0
- package/data/forms/block/minecraft_replaceable.form.json +1 -0
- package/data/forms/client_biome/client_biome_definition.form.json +145 -139
- package/data/forms/client_biome/client_biome_description.form.json +7 -1
- package/data/forms/client_biome/client_biome_json_file.form.json +151 -145
- package/data/forms/client_biome/minecraft_ambient_sounds.form.json +1 -0
- package/data/forms/client_biome/minecraft_atmosphere_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_biome_music.form.json +7 -6
- package/data/forms/client_biome/minecraft_color_grading_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_lighting_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_water_identifier.form.json +1 -1
- package/data/forms/client_block/block_culling.form.json +15 -10
- package/data/forms/clientbiome/index.json +1 -0
- package/data/forms/entity/entity_component_definitions.form.json +1860 -0
- package/data/forms/entity/entity_document.form.json +3748 -0
- package/data/forms/entity/filter_test.form.json +10 -10
- package/data/forms/entity/index.json +1 -1
- package/data/forms/entity/minecraft_addrider.form.json +1 -1
- package/data/forms/entity/minecraft_ageable.form.json +23 -0
- package/data/forms/entity/minecraft_ambient_sound_interval.form.json +24 -0
- package/data/forms/entity/minecraft_angry.form.json +1 -2
- package/data/forms/entity/minecraft_behavior_fire_at_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_float.form.json +8 -0
- package/data/forms/entity/minecraft_behavior_float_tempt.form.json +157 -6
- package/data/forms/entity/minecraft_behavior_float_wander.form.json +108 -6
- package/data/forms/entity/minecraft_behavior_follow_caravan.form.json +10 -10
- package/data/forms/entity/minecraft_behavior_follow_mob.form.json +369 -3
- package/data/forms/entity/minecraft_behavior_hold_ground.form.json +24 -24
- package/data/forms/entity/minecraft_behavior_jump_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_melee_box_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_move_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_nearest_attackable_target.form.json +33 -8
- package/data/forms/entity/minecraft_behavior_offer_flower.form.json +2 -12
- package/data/forms/entity/minecraft_behavior_panic.form.json +15 -6
- package/data/forms/entity/minecraft_behavior_player_ride_tamed.form.json +17 -1
- package/data/forms/entity/minecraft_behavior_random_hover.form.json +22 -0
- package/data/forms/entity/minecraft_behavior_ranged_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_summon_entity.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_tempt.form.json +40 -0
- package/data/forms/entity/minecraft_body_rotation_always_follows_head.form.json +14 -0
- package/data/forms/entity/minecraft_body_rotation_axis_aligned.form.json +8 -0
- package/data/forms/entity/minecraft_body_rotation_blocked.form.json +6 -0
- package/data/forms/entity/minecraft_boostable.form.json +9 -4
- package/data/forms/entity/minecraft_breathable.form.json +30 -0
- package/data/forms/entity/minecraft_breedable.form.json +45 -18
- package/data/forms/entity/minecraft_can_fly.form.json +6 -0
- package/data/forms/entity/minecraft_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_collision_box.form.json +40 -28
- package/data/forms/entity/minecraft_conditional_bandwidth_optimization.form.json +6 -0
- package/data/forms/entity/minecraft_damage_sensor.form.json +37 -23
- package/data/forms/entity/minecraft_despawn.form.json +8 -0
- package/data/forms/entity/minecraft_entity_sensor.form.json +140 -20
- package/data/forms/entity/minecraft_equipment.form.json +24 -0
- package/data/forms/entity/minecraft_explode.form.json +110 -104
- package/data/forms/entity/minecraft_flying_speed.form.json +30 -0
- package/data/forms/entity/minecraft_follow_range.form.json +9 -0
- package/data/forms/entity/minecraft_home.form.json +57 -23
- package/data/forms/entity/minecraft_hurt_on_condition.form.json +28 -36
- package/data/forms/entity/minecraft_ignore_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_input_air_controlled.form.json +31 -3
- package/data/forms/entity/minecraft_interact.form.json +862 -248
- package/data/forms/entity/minecraft_is_baby.form.json +32 -6
- package/data/forms/entity/minecraft_is_collidable.form.json +6 -0
- package/data/forms/entity/minecraft_is_hidden_when_invisible.form.json +6 -0
- package/data/forms/entity/minecraft_is_tamed.form.json +6 -0
- package/data/forms/entity/minecraft_jump_static.form.json +6 -0
- package/data/forms/entity/minecraft_knockback_resistance.form.json +14 -0
- package/data/forms/entity/minecraft_leashable.form.json +229 -214
- package/data/forms/entity/minecraft_leashable_to.form.json +244 -0
- package/data/forms/entity/minecraft_movement.form.json +26 -0
- package/data/forms/entity/minecraft_movement_hover.form.json +6 -0
- package/data/forms/entity/minecraft_nameable.form.json +6 -0
- package/data/forms/entity/minecraft_navigation_float.form.json +28 -2
- package/data/forms/entity/minecraft_navigation_hover.form.json +11 -0
- package/data/forms/entity/minecraft_physics.form.json +8 -0
- package/data/forms/entity/minecraft_pushable.form.json +37 -0
- package/data/forms/entity/minecraft_remove_in_peaceful.form.json +212 -0
- package/data/forms/entity/minecraft_rideable.form.json +302 -300
- package/data/forms/entity/minecraft_scale.form.json +38 -0
- package/data/forms/entity/minecraft_transient.form.json +1 -0
- package/data/forms/entity/minecraft_type_family.form.json +20 -0
- package/data/forms/entityevents/emit_particle.form.json +1 -0
- package/data/forms/entityevents/play_sound.form.json +1 -0
- package/data/forms/entityfilters/bool_property.form.json +37 -1
- package/data/forms/entityfilters/has_equipment.form.json +28 -4
- package/data/forms/entityfilters/in_caravan.form.json +14 -3
- package/data/forms/entityfilters/in_contact_with_water.form.json +1 -3
- package/data/forms/entityfilters/in_lava.form.json +22 -34
- package/data/forms/entityfilters/index.json +1 -1
- package/data/forms/entityfilters/is_daytime.form.json +8 -0
- package/data/forms/entityfilters/is_family.form.json +40 -26
- package/data/forms/entityfilters/is_riding_self.form.json +129 -0
- package/data/forms/entityfilters/rider_count.form.json +56 -13
- package/data/forms/index.json +1 -1
- package/data/forms/item/90.form.json +1486 -0
- package/data/forms/item/index.json +1 -1
- package/data/forms/item/minecraft_block_placer.form.json +13 -12
- package/data/forms/item/minecraft_bundle_interaction.form.json +1 -0
- package/data/forms/item/minecraft_compostable.form.json +1 -0
- package/data/forms/item/minecraft_digger.form.json +11 -11
- package/data/forms/item/minecraft_durability.form.json +4 -4
- package/data/forms/item/minecraft_dyeable.form.json +1 -0
- package/data/forms/item/minecraft_enchantable.form.json +20 -20
- package/data/forms/item/minecraft_entity_placer.form.json +10 -10
- package/data/forms/item/minecraft_food.form.json +25 -20
- package/data/forms/item/minecraft_icon.form.json +23 -6
- package/data/forms/item/minecraft_item.form.json +102 -17
- package/data/forms/item/minecraft_rarity.form.json +1 -0
- package/data/forms/item/minecraft_record.form.json +10 -10
- package/data/forms/item/minecraft_shooter.form.json +12 -12
- package/data/forms/item/minecraft_storage_item.form.json +35 -34
- package/data/forms/item/minecraft_throwable.form.json +18 -18
- package/data/forms/item/minecraft_use_modifiers.form.json +22 -14
- package/data/forms/item/minecraft_wearable.form.json +6 -6
- package/data/forms/misc/biome_replacement.form.json +17 -11
- package/data/forms/misc/bounds.form.json +4 -4
- package/data/forms/misc/class_v1_21_80_jigsawblockmetadata.form.json +24 -24
- package/data/forms/misc/crafting_catalog_category.form.json +12 -12
- package/data/forms/misc/crafting_catalog_document.form.json +12 -12
- package/data/forms/misc/crafting_catalog_group.form.json +12 -12
- package/data/forms/misc/crafting_catalog_group_icon.form.json +12 -12
- package/data/forms/misc/dimension.form.json +20 -20
- package/data/forms/misc/dimensiondocument.form.json +20 -20
- package/data/forms/misc/emitter_lifetime_events_proxy.form.json +32 -32
- package/data/forms/misc/emitter_local_space_proxy.form.json +4 -4
- package/data/forms/misc/emitter_rate_steady.form.json +12 -12
- package/data/forms/misc/emitter_shape_box.form.json +34 -34
- package/data/forms/misc/emitter_shape_custom.form.json +12 -12
- package/data/forms/misc/emitter_shape_disc.form.json +45 -45
- package/data/forms/misc/emitter_shape_entity_aabb.form.json +5 -5
- package/data/forms/misc/emitter_shape_point.form.json +12 -12
- package/data/forms/misc/emitter_shape_sphere.form.json +34 -34
- package/data/forms/misc/minecraft_aim_assist_categories.form.json +16 -16
- package/data/forms/misc/minecraft_aim_assist_preset.form.json +21 -21
- package/data/forms/misc/minecraft_dimension_bounds.form.json +5 -4
- package/data/forms/misc/particle_appearance_billboard.form.json +10 -10
- package/data/forms/misc/particle_appearance_billboard_flipbook_data.form.json +16 -16
- package/data/forms/misc/particle_curve_bezier_chain.form.json +16 -16
- package/data/forms/misc/particle_curve_bezier_chain_node_proxy.form.json +9 -9
- package/data/forms/misc/particle_curve_linear.form.json +17 -17
- package/data/forms/misc/particle_effect.form.json +850 -850
- package/data/forms/misc/particle_effect_basic_render_parameters.form.json +1 -1
- package/data/forms/misc/particle_effect_component.form.json +589 -589
- package/data/forms/misc/particle_effect_description.form.json +6 -6
- package/data/forms/misc/particle_event_node.form.json +148 -148
- package/data/forms/misc/particle_event_random_node.form.json +183 -183
- package/data/forms/misc/particle_initialization.form.json +12 -12
- package/data/forms/misc/particle_lifetime_expression.form.json +12 -12
- package/data/forms/misc/particle_motion_collision.form.json +36 -36
- package/data/forms/misc/particle_motion_collision_event.form.json +5 -5
- package/data/forms/misc/particle_motion_parametric.form.json +12 -12
- package/data/forms/spawn/filter_test.form.json +10 -10
- package/data/forms/visual/index.json +1 -1
- package/data/forms/visual/texture_set.v1.21.30.form.json +57 -0
- package/data/forms/world/feature_rule_conditions.form.json +31 -31
- package/data/forms/world/feature_rule_definition.form.json +126 -126
- package/data/forms/world/filter_test.form.json +10 -10
- package/data/forms/world/jigsawstructure.form.json +82 -76
- package/data/forms/world/scatter_params.form.json +71 -71
- package/data/gallery.json +206 -0
- package/data/mci/minecraft-samples-main.mci.json +1 -1
- package/data/mci/preview.mci.json +1 -1
- package/data/mci/release.mci.json +1 -1
- package/data/typedefs.beta.json +6832 -4416
- package/dataform/DataFormUtilities.js +26 -0
- package/dataform/IField.js +1 -0
- package/devproject/EnvSettings.js +1 -1
- package/devproject/NpmModule.js +1 -1
- package/docgen/FormDefinitionTypeScriptGenerator.js +2 -0
- package/docgen/FormJsonDocumentationGenerator.js +193 -91
- package/docgen/FormMarkdownDocumentationGenerator.js +31 -2
- package/docgen/JsonSchemaGenerator.js +2 -1
- package/github/GitHubFile.js +2 -2
- package/info/AnimationResourceInfoGenerator.js +2 -2
- package/info/CooperativeAddOnItemRequirementsGenerator.js +51 -51
- package/info/CooperativeAddOnRequirementsGenerator.js +46 -39
- package/info/GeneratorRegistrations.js +11 -1
- package/info/GeometryInfoGenerator.js +3 -3
- package/info/PackInfoGenerator.js +9 -8
- package/info/SchemaItemInfoGenerator.js +5 -5
- package/info/SharingInfoGenerator.js +17 -5
- package/info/StrictPlatformInfoGenerator.js +4 -4
- package/info/TextureImageInfoGenerator.js +10 -9
- package/info/TextureInfoGenerator.js +19 -19
- package/info/TextureReferenceInfoGenerator.js +6 -6
- package/info/TypesInfoGenerator.js +8 -8
- package/info/UnknownItemGenerator.js +2 -2
- package/info/WorldDataInfoGenerator.js +6 -6
- package/info/fileGenerators/CheckNoBOMGenerator.js +46 -0
- package/info/projectGenerators/CheckPackIconsGenerator.js +83 -0
- package/info/projectGenerators/CheckWorldIconsGenerator.js +93 -0
- package/integrations/BlockbenchModel.js +271 -72
- package/local/LocalEnvironment.js +4 -4
- package/manager/BaseGameVersionManager.js +4 -4
- package/manager/BlocksCatalogManager.js +4 -4
- package/manager/EntityTypeManager.js +4 -4
- package/manager/FormatVersionManager.js +24 -24
- package/manager/ItemTypeManager.js +4 -4
- package/manager/MinEngineVersionManager.js +14 -14
- package/manager/ScriptModuleManager.js +6 -6
- package/manager/VsCodeFileManager.js +10 -10
- package/maps/app/Carto.js.map +1 -1
- package/maps/app/CartoApp.js.map +1 -1
- package/maps/app/ICartoData.js.map +1 -1
- package/maps/app/IGalleryItem.js.map +1 -1
- package/maps/app/IProjectItemData.js.map +1 -1
- package/maps/app/IProjectItemSeed.js.map +1 -1
- package/maps/app/IProjectItemVariant.js.map +1 -1
- package/maps/app/IProjectItemVariantSeed.js.map +1 -0
- package/maps/app/Project.js.map +1 -1
- package/maps/app/ProjectAutogeneration.js.map +1 -1
- package/maps/app/ProjectExporter.js.map +1 -1
- package/maps/app/ProjectItem.js.map +1 -1
- package/maps/app/ProjectItemCreateManager.js.map +1 -0
- package/maps/app/ProjectItemInference.js.map +1 -0
- package/maps/app/ProjectItemRelations.js.map +1 -1
- package/maps/app/ProjectItemUtilities.js.map +1 -1
- package/maps/app/ProjectItemVariant.js.map +1 -1
- package/maps/app/ProjectItemVariantCreateManager.js.map +1 -0
- package/maps/app/ProjectStandard.js.map +1 -1
- package/maps/app/ProjectUtilities.js.map +1 -1
- package/maps/cli/ClUtils.js.map +1 -1
- package/maps/cli/TaskWorker.js.map +1 -1
- package/maps/cli/index.js.map +1 -1
- package/maps/core/Constants.js.map +1 -1
- package/maps/core/ISimpleReference.js.map +1 -1
- package/maps/core/Utilities.js.map +1 -1
- package/maps/dataform/DataFormUtilities.js.map +1 -1
- package/maps/dataform/IField.js.map +1 -1
- package/maps/dataform/IFormDefinition.js.map +1 -1
- package/maps/devproject/EnvSettings.js.map +1 -1
- package/maps/devproject/NpmModule.js.map +1 -1
- package/maps/docgen/FormDefinitionTypeScriptGenerator.js.map +1 -1
- package/maps/docgen/FormJsonDocumentationGenerator.js.map +1 -1
- package/maps/docgen/FormMarkdownDocumentationGenerator.js.map +1 -1
- package/maps/docgen/JsonSchemaGenerator.js.map +1 -1
- package/maps/github/GitHubFile.js.map +1 -1
- package/maps/info/AnimationResourceInfoGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnItemRequirementsGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnRequirementsGenerator.js.map +1 -1
- package/maps/info/GeneratorRegistrations.js.map +1 -1
- package/maps/info/GeometryInfoGenerator.js.map +1 -1
- package/maps/info/PackInfoGenerator.js.map +1 -1
- package/maps/info/SchemaItemInfoGenerator.js.map +1 -1
- package/maps/info/SharingInfoGenerator.js.map +1 -1
- package/maps/info/StrictPlatformInfoGenerator.js.map +1 -1
- package/maps/info/TextureImageInfoGenerator.js.map +1 -1
- package/maps/info/TextureInfoGenerator.js.map +1 -1
- package/maps/info/TextureReferenceInfoGenerator.js.map +1 -1
- package/maps/info/TypesInfoGenerator.js.map +1 -1
- package/maps/info/UnknownItemGenerator.js.map +1 -1
- package/maps/info/WorldDataInfoGenerator.js.map +1 -1
- package/maps/info/fileGenerators/CheckNoBOMGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckPackIconsGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckWorldIconsGenerator.js.map +1 -0
- package/maps/integrations/BlockbenchModel.js.map +1 -1
- package/maps/integrations/IBlockbenchModel.js.map +1 -1
- package/maps/local/ILocalEnvironmentData.js.map +1 -1
- package/maps/local/LocalEnvironment.js.map +1 -1
- package/maps/manager/BaseGameVersionManager.js.map +1 -1
- package/maps/manager/BlocksCatalogManager.js.map +1 -1
- package/maps/manager/EntityTypeManager.js.map +1 -1
- package/maps/manager/FormatVersionManager.js.map +1 -1
- package/maps/manager/ItemTypeManager.js.map +1 -1
- package/maps/manager/MinEngineVersionManager.js.map +1 -1
- package/maps/manager/ScriptModuleManager.js.map +1 -1
- package/maps/manager/VsCodeFileManager.js.map +1 -1
- package/maps/minecraft/AnimationResourceDefinition.js.map +1 -1
- package/maps/minecraft/AttachableResourceDefinition.js.map +1 -1
- package/maps/minecraft/AudioDefinition.js.map +1 -1
- package/maps/minecraft/BehaviorManifestDefinition.js.map +1 -1
- package/maps/minecraft/BlockTypeDefinition.js.map +1 -1
- package/maps/minecraft/BlocksCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Database.js.map +1 -1
- package/maps/minecraft/EntityTypeDefinition.js.map +1 -1
- package/maps/minecraft/EntityTypeResourceDefinition.js.map +1 -1
- package/maps/minecraft/FlipbookTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/IAnimationResource.js.map +1 -1
- package/maps/minecraft/IEntityTypeResource.js.map +1 -1
- package/maps/minecraft/ItemTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/ItemTypeDefinition.js.map +1 -1
- package/maps/minecraft/JsonUIResourceDefinition.js.map +1 -1
- package/maps/minecraft/LocManager.js.map +1 -1
- package/maps/minecraft/MCWorld.js.map +1 -1
- package/maps/minecraft/ManagedComponentGroup.js.map +1 -1
- package/maps/minecraft/ManagedPermutation.js.map +1 -1
- package/maps/minecraft/MinecraftDefinitions.js.map +1 -1
- package/maps/minecraft/MinecraftUtilities.js.map +1 -1
- package/maps/minecraft/MusicDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Pack.js.map +1 -1
- package/maps/minecraft/ParticleEffectResourceDefinition.js.map +1 -1
- package/maps/minecraft/ResourceManifestDefinition.js.map +1 -1
- package/maps/minecraft/SoundCatalogDefinition.js.map +1 -1
- package/maps/minecraft/SoundDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/TerrainTextureCatalogDefinition.js.map +1 -1
- package/maps/storage/FileBase.js.map +1 -1
- package/maps/storage/FileSystemFolder.js.map +1 -1
- package/maps/storage/FolderBase.js.map +1 -1
- package/maps/storage/IFile.js.map +1 -1
- package/maps/storage/IFolder.js.map +1 -1
- package/maps/storage/ImageUtilites.js.map +1 -0
- package/maps/storage/StorageUtilities.js.map +1 -1
- package/maps/test/CommandLineTest.js.map +1 -1
- package/minecraft/AnimationResourceDefinition.js +13 -2
- package/minecraft/AttachableResourceDefinition.js +10 -10
- package/minecraft/AudioDefinition.js +2 -2
- package/minecraft/BehaviorManifestDefinition.js +6 -6
- package/minecraft/BlockTypeDefinition.js +10 -10
- package/minecraft/BlocksCatalogDefinition.js +2 -2
- package/minecraft/Database.js +38 -12
- package/minecraft/EntityTypeDefinition.js +21 -11
- package/minecraft/EntityTypeResourceDefinition.js +65 -15
- package/minecraft/FlipbookTextureCatalogDefinition.js +4 -4
- package/minecraft/ItemTextureCatalogDefinition.js +2 -2
- package/minecraft/ItemTypeDefinition.js +4 -4
- package/minecraft/JsonUIResourceDefinition.js +2 -2
- package/minecraft/LocManager.js +2 -2
- package/minecraft/MCWorld.js +2 -2
- package/minecraft/ManagedComponentGroup.js +3 -0
- package/minecraft/ManagedPermutation.js +3 -0
- package/minecraft/MinecraftDefinitions.js +23 -23
- package/minecraft/MinecraftUtilities.js +27 -0
- package/minecraft/MusicDefinitionCatalogDefinition.js +2 -2
- package/minecraft/Pack.js +15 -0
- package/minecraft/ParticleEffectResourceDefinition.js +4 -4
- package/minecraft/ResourceManifestDefinition.js +3 -3
- package/minecraft/SoundCatalogDefinition.js +4 -4
- package/minecraft/SoundDefinitionCatalogDefinition.js +4 -4
- package/minecraft/TerrainTextureCatalogDefinition.js +2 -2
- package/package.json +1 -1
- package/storage/FileBase.js +3 -0
- package/storage/FileSystemFolder.js +2 -1
- package/storage/FolderBase.js +9 -0
- package/storage/ImageUtilites.js +35 -0
- package/storage/StorageUtilities.js +52 -2
- package/test/CommandLineTest.js +141 -1
- package/maps/app/ProjectItemManager.js.map +0 -1
|
@@ -0,0 +1,709 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Log_1 = require("../core/Log");
|
|
4
|
+
const Utilities_1 = require("../core/Utilities");
|
|
5
|
+
const MinecraftUtilities_1 = require("../minecraft/MinecraftUtilities");
|
|
6
|
+
const Pack_1 = require("../minecraft/Pack");
|
|
7
|
+
const StorageUtilities_1 = require("../storage/StorageUtilities");
|
|
8
|
+
const IProjectData_1 = require("./IProjectData");
|
|
9
|
+
const IProjectItemData_1 = require("./IProjectItemData");
|
|
10
|
+
const Project_1 = require("./Project");
|
|
11
|
+
class ProjectItemInference {
|
|
12
|
+
static async inferProjectItemsFromFolder(project, folder, fileSystemPrefix, folderContext, variantLabel, isInWorld, rootFolder, depth, source, force, processingCallback) {
|
|
13
|
+
if (project.projectFolder === null ||
|
|
14
|
+
(folder.name.startsWith(".") && !folder.name.startsWith(".vscode") && !folder.name.startsWith(".mct"))) {
|
|
15
|
+
Log_1.default.debugAlert("Could not process folder: " + folder.storageRelativePath);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (processingCallback) {
|
|
19
|
+
processingCallback("Scanning `" + folder.storageRelativePath + "` for Minecraft project items.");
|
|
20
|
+
}
|
|
21
|
+
await folder.load(force ? force : false);
|
|
22
|
+
let parentFolder = folder.parentFolder;
|
|
23
|
+
if (parentFolder === project.projectFolder.parentFolder) {
|
|
24
|
+
parentFolder = null;
|
|
25
|
+
}
|
|
26
|
+
const folderPathCanon = StorageUtilities_1.default.canonicalizePath(StorageUtilities_1.default.getFolderPath(folder.storageRelativePath));
|
|
27
|
+
const parentIsPacksRoot = parentFolder !== null &&
|
|
28
|
+
parentFolder.name.indexOf("_packs") >= 0 &&
|
|
29
|
+
(folderContext === Project_1.FolderContext.behaviorPack ||
|
|
30
|
+
folderContext === Project_1.FolderContext.resourcePack ||
|
|
31
|
+
folderContext === Project_1.FolderContext.skinPack);
|
|
32
|
+
const lastUnderscore = folder.storageRelativePath.lastIndexOf("_");
|
|
33
|
+
if (!variantLabel && lastUnderscore >= 0 && parentIsPacksRoot) {
|
|
34
|
+
// vanilla stores folders like:
|
|
35
|
+
// chemistry
|
|
36
|
+
// chemistry_1.20.50
|
|
37
|
+
// chemistry_1.20.60
|
|
38
|
+
// unify version variants with their parent
|
|
39
|
+
let potentialVersionSection = folder.storageRelativePath.substring(lastUnderscore + 1);
|
|
40
|
+
if (potentialVersionSection.endsWith("/")) {
|
|
41
|
+
potentialVersionSection = potentialVersionSection.substring(0, potentialVersionSection.length - 1);
|
|
42
|
+
}
|
|
43
|
+
if (Utilities_1.default.isNumericIsh(potentialVersionSection) && potentialVersionSection.indexOf(".") > 0) {
|
|
44
|
+
variantLabel = potentialVersionSection;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (folderPathCanon.indexOf("/checkpoint_input") >= 0 ||
|
|
48
|
+
folderPathCanon.indexOf("/metadata") >= 0 ||
|
|
49
|
+
folderPathCanon.indexOf("/type_definitions") >= 0 ||
|
|
50
|
+
folderPathCanon.indexOf("/typedefs") >= 0 ||
|
|
51
|
+
folderPathCanon.indexOf("/script_modules/") >= 0 ||
|
|
52
|
+
folderPathCanon.indexOf("/vanilladata_modules/") >= 0 ||
|
|
53
|
+
folderPathCanon.indexOf("/engine_modules/") >= 0 ||
|
|
54
|
+
folderPathCanon.indexOf("/command_modules/") >= 0) {
|
|
55
|
+
folderContext = Project_1.FolderContext.typeDefs;
|
|
56
|
+
}
|
|
57
|
+
else if (folderPathCanon.indexOf("/data/") >= 0 || folderPathCanon.indexOf("/forms/") >= 0) {
|
|
58
|
+
folderContext = Project_1.FolderContext.metaData;
|
|
59
|
+
}
|
|
60
|
+
else if (folderPathCanon.indexOf("/.vscode") >= 0) {
|
|
61
|
+
folderContext = Project_1.FolderContext.vscodeFolder;
|
|
62
|
+
}
|
|
63
|
+
else if (folderPathCanon.indexOf("/.mct") >= 0) {
|
|
64
|
+
folderContext = Project_1.FolderContext.mctoolsWorkingFolder;
|
|
65
|
+
}
|
|
66
|
+
else if (MinecraftUtilities_1.default.pathLooksLikeBehaviorPackName(folderPathCanon)) {
|
|
67
|
+
folderContext = Project_1.FolderContext.behaviorPack;
|
|
68
|
+
}
|
|
69
|
+
else if (MinecraftUtilities_1.default.pathLooksLikeSubPacksFolderName(folderPathCanon)) {
|
|
70
|
+
// note this check must be above the .resourcePack check
|
|
71
|
+
folderContext = Project_1.FolderContext.resourcePackSubPack;
|
|
72
|
+
}
|
|
73
|
+
else if (MinecraftUtilities_1.default.pathLooksLikeResourcePackName(folderPathCanon)) {
|
|
74
|
+
folderContext = Project_1.FolderContext.resourcePack;
|
|
75
|
+
}
|
|
76
|
+
else if (MinecraftUtilities_1.default.pathLooksLikeSkinPackName(folderPathCanon) &&
|
|
77
|
+
folderContext === Project_1.FolderContext.unknown) {
|
|
78
|
+
folderContext = Project_1.FolderContext.skinPack;
|
|
79
|
+
}
|
|
80
|
+
else if (MinecraftUtilities_1.default.pathLooksLikePersonaPackName(folderPathCanon) &&
|
|
81
|
+
folderContext === Project_1.FolderContext.unknown) {
|
|
82
|
+
folderContext = Project_1.FolderContext.persona;
|
|
83
|
+
}
|
|
84
|
+
else if (MinecraftUtilities_1.default.pathLooksLikeWorldFolderName(folderPathCanon) &&
|
|
85
|
+
folderContext === Project_1.FolderContext.unknown) {
|
|
86
|
+
folderContext = Project_1.FolderContext.world;
|
|
87
|
+
isInWorld = true;
|
|
88
|
+
}
|
|
89
|
+
else if ((folderPathCanon.indexOf("/docs/") >= 0 ||
|
|
90
|
+
folderPathCanon.indexOf("/@minecraft/") >= 0 ||
|
|
91
|
+
folderPathCanon.indexOf("/mojang-commands") >= 0) &&
|
|
92
|
+
folderContext === Project_1.FolderContext.unknown) {
|
|
93
|
+
folderContext = Project_1.FolderContext.docs;
|
|
94
|
+
if (project.docsContainer === null) {
|
|
95
|
+
project.docsContainer = folder.parentFolder;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (folderContext === Project_1.FolderContext.unknown &&
|
|
99
|
+
(folder.files["manifest.json"] || folder.files["pack_manifest.json"]) &&
|
|
100
|
+
!folder.files["level.dat"] &&
|
|
101
|
+
!folder.files["levelname.txt"]) {
|
|
102
|
+
for (const folderName in folder.folders) {
|
|
103
|
+
if (folderName) {
|
|
104
|
+
if (folderName.toLowerCase() === "persona" || folderName.toLowerCase().startsWith("persona_")) {
|
|
105
|
+
folderContext = Project_1.FolderContext.persona;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (folderContext === Project_1.FolderContext.unknown &&
|
|
111
|
+
(folder.files["manifest.json"] || folder.files["pack_manifest.json"]) &&
|
|
112
|
+
!folder.files["level.dat"] &&
|
|
113
|
+
!folder.files["levelname.txt"]) {
|
|
114
|
+
if (folder.folders["models"] ||
|
|
115
|
+
folder.folders["textures"] ||
|
|
116
|
+
folder.folders["lighting"] ||
|
|
117
|
+
folder.folders["subpacks"] ||
|
|
118
|
+
folder.folders["assets"] ||
|
|
119
|
+
folder.folders["sounds"] ||
|
|
120
|
+
folder.folders["texture_sets"] ||
|
|
121
|
+
folder.folders["sounds"] ||
|
|
122
|
+
folder.folders["ui"]) {
|
|
123
|
+
folderContext = Project_1.FolderContext.resourcePack;
|
|
124
|
+
}
|
|
125
|
+
else if (folder.fullPath.indexOf("/rp/") >= 0 ||
|
|
126
|
+
folder.fullPath.indexOf(" rp/") >= 0 ||
|
|
127
|
+
folder.fullPath.indexOf("/rp ") >= 0 ||
|
|
128
|
+
folder.fullPath.indexOf("esource") >= 0) {
|
|
129
|
+
folderContext = Project_1.FolderContext.resourcePack;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
folderContext = Project_1.FolderContext.behaviorPack;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (folder.files["world_behavior_packs.json"] ||
|
|
136
|
+
folder.files["world_resource_packs.json"] ||
|
|
137
|
+
folder.files["levelname.txt"]) {
|
|
138
|
+
if (folderContext === Project_1.FolderContext.unknown) {
|
|
139
|
+
folderContext = Project_1.FolderContext.world;
|
|
140
|
+
}
|
|
141
|
+
if (folder.parentFolder && !project.worldContainer) {
|
|
142
|
+
project.worldContainer = folder.parentFolder;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
for (const fileName in folder.files) {
|
|
146
|
+
const canonFileName = StorageUtilities_1.default.canonicalizeName(fileName);
|
|
147
|
+
// console.log("Considering " + canonFileName + " in folder " + folder.storageRelativePath);
|
|
148
|
+
if (canonFileName !== "gulpfile.js" && canonFileName !== "package-lock.json") {
|
|
149
|
+
const candidateFile = folder.files[fileName];
|
|
150
|
+
if (candidateFile !== undefined) {
|
|
151
|
+
let pi = null;
|
|
152
|
+
let projectPath = undefined;
|
|
153
|
+
if (fileSystemPrefix.length > 0) {
|
|
154
|
+
projectPath = fileSystemPrefix + candidateFile.fullPath;
|
|
155
|
+
pi = project.getItemByProjectPath(projectPath);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const frPath = candidateFile.getFolderRelativePath(rootFolder);
|
|
159
|
+
if (frPath !== undefined) {
|
|
160
|
+
projectPath = StorageUtilities_1.default.canonicalizePath(frPath);
|
|
161
|
+
pi = project.getItemByProjectPath(projectPath);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if ((pi === undefined || pi === null) && projectPath !== undefined) {
|
|
165
|
+
const fileExtension = candidateFile.type ? candidateFile.type.toLowerCase() : candidateFile.type;
|
|
166
|
+
const baseName = StorageUtilities_1.default.getBaseFromName(candidateFile.name);
|
|
167
|
+
const folderPath = StorageUtilities_1.default.canonicalizePath(StorageUtilities_1.default.getFolderPath(projectPath));
|
|
168
|
+
const folderPathLower = folderPath.toLowerCase();
|
|
169
|
+
const projectPathLower = projectPath.toLowerCase();
|
|
170
|
+
const isResourcePack = folderContext === Project_1.FolderContext.resourcePack || folderContext === Project_1.FolderContext.resourcePackSubPack;
|
|
171
|
+
if (canonFileName === "manifest.json" || canonFileName === "pack_manifest.json") {
|
|
172
|
+
if (folderContext === Project_1.FolderContext.world) {
|
|
173
|
+
project.defaultWorldFolder = folder;
|
|
174
|
+
project.worldContainer = parentFolder;
|
|
175
|
+
}
|
|
176
|
+
await candidateFile.loadContent(false);
|
|
177
|
+
if (candidateFile.content !== undefined &&
|
|
178
|
+
candidateFile.content !== "" &&
|
|
179
|
+
!variantLabel &&
|
|
180
|
+
typeof candidateFile.content === "string") {
|
|
181
|
+
try {
|
|
182
|
+
const manifest = JSON.parse(candidateFile.content);
|
|
183
|
+
if (manifest.header.uuid !== undefined) {
|
|
184
|
+
if (folderContext === Project_1.FolderContext.behaviorPack) {
|
|
185
|
+
project.defaultBehaviorPackUniqueId = manifest.header.uuid;
|
|
186
|
+
project.defaultBehaviorPackVersion = manifest.header.version;
|
|
187
|
+
project.defaultBehaviorPackFolder = folder;
|
|
188
|
+
project.behaviorPacksContainer = parentFolder;
|
|
189
|
+
project.ensurePackByFolder(folder, Pack_1.PackType.behavior);
|
|
190
|
+
}
|
|
191
|
+
else if (folderContext === Project_1.FolderContext.resourcePack) {
|
|
192
|
+
project.defaultResourcePackUniqueId = manifest.header.uuid;
|
|
193
|
+
project.defaultResourcePackVersion = manifest.header.version;
|
|
194
|
+
project.defaultResourcePackFolder = folder;
|
|
195
|
+
project.resourcePacksContainer = parentFolder;
|
|
196
|
+
project.ensurePackByFolder(folder, Pack_1.PackType.resource);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (manifest.modules) {
|
|
200
|
+
for (let i = 0; i < manifest.modules.length; i++) {
|
|
201
|
+
const mod = manifest.modules[i];
|
|
202
|
+
if (mod.type === "script") {
|
|
203
|
+
project.defaultScriptModuleUniqueId = mod.uuid;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (manifest.header.description !== undefined) {
|
|
208
|
+
project.description = manifest.header.description;
|
|
209
|
+
}
|
|
210
|
+
if (manifest.header.name !== undefined) {
|
|
211
|
+
project.title = manifest.header.name;
|
|
212
|
+
}
|
|
213
|
+
if (manifest.header.version !== undefined &&
|
|
214
|
+
manifest.header.version.length === 3 &&
|
|
215
|
+
folderContext === Project_1.FolderContext.behaviorPack) {
|
|
216
|
+
project.versionMajor = manifest.header.version[0];
|
|
217
|
+
project.versionMinor = manifest.header.version[1];
|
|
218
|
+
project.versionPatch = manifest.header.version[2];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (e) { }
|
|
222
|
+
}
|
|
223
|
+
let newPiType = IProjectItemData_1.ProjectItemType.unknown;
|
|
224
|
+
let tag = "";
|
|
225
|
+
if (folderContext === Project_1.FolderContext.behaviorPack) {
|
|
226
|
+
newPiType = IProjectItemData_1.ProjectItemType.behaviorPackManifestJson;
|
|
227
|
+
tag = "behaviorpackmanifest";
|
|
228
|
+
}
|
|
229
|
+
else if (folderContext === Project_1.FolderContext.resourcePack) {
|
|
230
|
+
newPiType = IProjectItemData_1.ProjectItemType.resourcePackManifestJson;
|
|
231
|
+
tag = "resourcepackmanifest";
|
|
232
|
+
}
|
|
233
|
+
else if (folderContext === Project_1.FolderContext.skinPack) {
|
|
234
|
+
newPiType = IProjectItemData_1.ProjectItemType.skinPackManifestJson;
|
|
235
|
+
tag = "skinpackmanifest";
|
|
236
|
+
}
|
|
237
|
+
else if (folderContext === Project_1.FolderContext.persona) {
|
|
238
|
+
newPiType = IProjectItemData_1.ProjectItemType.personaManifestJson;
|
|
239
|
+
tag = "personapackmanifest";
|
|
240
|
+
}
|
|
241
|
+
else if (folderContext === Project_1.FolderContext.world) {
|
|
242
|
+
newPiType = IProjectItemData_1.ProjectItemType.worldTemplateManifestJson;
|
|
243
|
+
tag = "worldtemplatemanifest";
|
|
244
|
+
}
|
|
245
|
+
// Log.assert(newPiType !== ProjectItemType.unknown, "Unknown manifest.json file found.");
|
|
246
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, newPiType, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, tag, isInWorld);
|
|
247
|
+
}
|
|
248
|
+
else if (projectPathLower.endsWith("/scripts/index.js")) {
|
|
249
|
+
await candidateFile.loadContent();
|
|
250
|
+
let creationType = IProjectItemData_1.ProjectItemCreationType.normal;
|
|
251
|
+
if (candidateFile.content === undefined ||
|
|
252
|
+
candidateFile.content === "" ||
|
|
253
|
+
(typeof candidateFile.content === "string" &&
|
|
254
|
+
candidateFile.content.indexOf(Project_1.AUTOGENERATED_CONTENT_TOKEN) >= 0)) {
|
|
255
|
+
creationType = IProjectItemData_1.ProjectItemCreationType.generated;
|
|
256
|
+
}
|
|
257
|
+
project.ensureItemByTag("jsindex", "index.js", IProjectItemData_1.ProjectItemType.catalogIndexJs, projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, creationType, candidateFile, isInWorld);
|
|
258
|
+
}
|
|
259
|
+
else if (projectPathLower.endsWith(".mctp.json") &&
|
|
260
|
+
folderContext === Project_1.FolderContext.mctoolsWorkingFolder) {
|
|
261
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.mcToolsProjectPreferences, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
262
|
+
}
|
|
263
|
+
else if (projectPathLower.endsWith("tasks.json") && folderContext === Project_1.FolderContext.vscodeFolder) {
|
|
264
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.vsCodeTasksJson, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
265
|
+
}
|
|
266
|
+
else if (projectPathLower.endsWith("launch.json") && folderContext === Project_1.FolderContext.vscodeFolder) {
|
|
267
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.vsCodeLaunchJson, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
268
|
+
}
|
|
269
|
+
else if (projectPathLower.endsWith("settings.json") && folderContext === Project_1.FolderContext.vscodeFolder) {
|
|
270
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.vsCodeSettingsJson, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
271
|
+
}
|
|
272
|
+
else if (projectPathLower.endsWith("extensions.json") && folderContext === Project_1.FolderContext.vscodeFolder) {
|
|
273
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.vsCodeExtensionsJson, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
274
|
+
}
|
|
275
|
+
else if (projectPathLower.endsWith("/tick.json")) {
|
|
276
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.tickJson, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
277
|
+
}
|
|
278
|
+
else if (fileExtension === "mcstructure") {
|
|
279
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.structure, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
280
|
+
}
|
|
281
|
+
else if (fileExtension === "mcfunction") {
|
|
282
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCFunction, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
283
|
+
}
|
|
284
|
+
else if (fileExtension === "material") {
|
|
285
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.material, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
286
|
+
}
|
|
287
|
+
else if (fileExtension === "vertex") {
|
|
288
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.materialVertex, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
289
|
+
}
|
|
290
|
+
else if (fileExtension === "fragment") {
|
|
291
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.materialFragment, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
292
|
+
}
|
|
293
|
+
else if (fileExtension === "geometry") {
|
|
294
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.materialGeometry, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
295
|
+
}
|
|
296
|
+
else if (canonFileName === "level.dat" &&
|
|
297
|
+
fileSystemPrefix.indexOf(".mcworld") < 0 && // don't create a project item if we're inside of a mcworld/mctemplate since that broader item has a link already
|
|
298
|
+
fileSystemPrefix.indexOf(".mctemplate") < 0 &&
|
|
299
|
+
folderContext !== Project_1.FolderContext.behaviorPack) {
|
|
300
|
+
isInWorld = true;
|
|
301
|
+
project.ensureItemByProjectPath(folderPath, IProjectItemData_1.ProjectItemStorageType.folder, candidateFile.name, IProjectItemData_1.ProjectItemType.worldFolder, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
302
|
+
}
|
|
303
|
+
else if (canonFileName === "just.config.ts") {
|
|
304
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.justConfigTs, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
305
|
+
}
|
|
306
|
+
else if (canonFileName === "eslint.config.mjs") {
|
|
307
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.esLintConfigMjs, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
308
|
+
}
|
|
309
|
+
else if (fileExtension === "js") {
|
|
310
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.js, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
311
|
+
}
|
|
312
|
+
else if (fileExtension === "ts") {
|
|
313
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.ts, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
314
|
+
}
|
|
315
|
+
else if (fileExtension === "mcworld") {
|
|
316
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCWorld, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
317
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
318
|
+
}
|
|
319
|
+
else if (fileExtension === "mcproject") {
|
|
320
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCProject, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
321
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
322
|
+
}
|
|
323
|
+
else if (fileExtension === "mctemplate") {
|
|
324
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCTemplate, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
325
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
326
|
+
}
|
|
327
|
+
else if (fileExtension === "mcaddon") {
|
|
328
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCAddon, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
329
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
330
|
+
}
|
|
331
|
+
else if (fileExtension === "mcpack") {
|
|
332
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.MCPack, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
333
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
334
|
+
}
|
|
335
|
+
else if (fileExtension === "zip") {
|
|
336
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.zip, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
337
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
338
|
+
}
|
|
339
|
+
else if (fileExtension === "png" ||
|
|
340
|
+
fileExtension === "jpg" ||
|
|
341
|
+
fileExtension === "gif" ||
|
|
342
|
+
fileExtension === "jpeg" ||
|
|
343
|
+
fileExtension === "tga") {
|
|
344
|
+
let imageType = IProjectItemData_1.ProjectItemType.image;
|
|
345
|
+
if (folderPathLower.indexOf("/marketing art/") >= 0) {
|
|
346
|
+
imageType = IProjectItemData_1.ProjectItemType.marketingAssetImage;
|
|
347
|
+
}
|
|
348
|
+
else if (folderPathLower.indexOf("/store art/") >= 0) {
|
|
349
|
+
imageType = IProjectItemData_1.ProjectItemType.storeAssetImage;
|
|
350
|
+
}
|
|
351
|
+
else if (folderPathLower.indexOf("/textures/ui/") >= 0) {
|
|
352
|
+
imageType = IProjectItemData_1.ProjectItemType.uiTexture;
|
|
353
|
+
}
|
|
354
|
+
else if (baseName === "pack_icon" || folder.files["manifest.json"]) {
|
|
355
|
+
imageType = IProjectItemData_1.ProjectItemType.iconImage;
|
|
356
|
+
}
|
|
357
|
+
else if (folderPathLower.indexOf("/textures/") >= 0) {
|
|
358
|
+
imageType = IProjectItemData_1.ProjectItemType.texture;
|
|
359
|
+
}
|
|
360
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, imageType, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
361
|
+
}
|
|
362
|
+
else if (fileExtension === "ogg" || fileExtension === "mp3" || fileExtension === "wav") {
|
|
363
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.audio, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
364
|
+
}
|
|
365
|
+
else if (fileExtension === "env" && baseName === "") {
|
|
366
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.env, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
367
|
+
}
|
|
368
|
+
else if (fileExtension === "lang") {
|
|
369
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, candidateFile.name, IProjectItemData_1.ProjectItemType.lang, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
370
|
+
}
|
|
371
|
+
else if (fileExtension === "json") {
|
|
372
|
+
let newJsonType = IProjectItemData_1.ProjectItemType.json;
|
|
373
|
+
let itemName = candidateFile.name;
|
|
374
|
+
if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/loot_tables/") >= 0) {
|
|
375
|
+
newJsonType = IProjectItemData_1.ProjectItemType.lootTableBehavior;
|
|
376
|
+
}
|
|
377
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/dialogue/") >= 0) {
|
|
378
|
+
newJsonType = IProjectItemData_1.ProjectItemType.dialogueBehaviorJson;
|
|
379
|
+
}
|
|
380
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/recipes/") >= 0) {
|
|
381
|
+
newJsonType = IProjectItemData_1.ProjectItemType.recipeBehavior;
|
|
382
|
+
}
|
|
383
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
384
|
+
folderPathLower.indexOf("/spawn_rules/") >= 0) {
|
|
385
|
+
newJsonType = IProjectItemData_1.ProjectItemType.spawnRuleBehavior;
|
|
386
|
+
}
|
|
387
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
388
|
+
folderPathLower.indexOf("/cameras/") >= 0 &&
|
|
389
|
+
folderPathLower.indexOf("aim_assist_preset") >= 0) {
|
|
390
|
+
newJsonType = IProjectItemData_1.ProjectItemType.aimAssistPresetJson;
|
|
391
|
+
}
|
|
392
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
393
|
+
folderPathLower.indexOf("/aim_assist/categories/") >= 0) {
|
|
394
|
+
newJsonType = IProjectItemData_1.ProjectItemType.aimAssistCategoryJson;
|
|
395
|
+
}
|
|
396
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
397
|
+
folderPathLower.indexOf("/aim_assist/presets/") >= 0) {
|
|
398
|
+
newJsonType = IProjectItemData_1.ProjectItemType.aimAssistPresetJson;
|
|
399
|
+
}
|
|
400
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
401
|
+
folderPathLower.indexOf("/behavior_trees/") >= 0) {
|
|
402
|
+
newJsonType = IProjectItemData_1.ProjectItemType.behaviorTreeJson;
|
|
403
|
+
}
|
|
404
|
+
else if (folderPathLower.indexOf("/spawn_groups/") >= 0) {
|
|
405
|
+
newJsonType = IProjectItemData_1.ProjectItemType.spawnGroupJson;
|
|
406
|
+
}
|
|
407
|
+
else if (isResourcePack && folderPathLower.indexOf("/atmospherics/") >= 0) {
|
|
408
|
+
newJsonType = IProjectItemData_1.ProjectItemType.atmosphericsJson;
|
|
409
|
+
}
|
|
410
|
+
else if (isResourcePack && folderPathLower.indexOf("/point_lights/") >= 0) {
|
|
411
|
+
newJsonType = IProjectItemData_1.ProjectItemType.pointLightsJson;
|
|
412
|
+
}
|
|
413
|
+
else if (isResourcePack && folderPathLower.indexOf("/color_grading/") >= 0) {
|
|
414
|
+
newJsonType = IProjectItemData_1.ProjectItemType.colorGradingJson;
|
|
415
|
+
}
|
|
416
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/cameras/") >= 0) {
|
|
417
|
+
newJsonType = IProjectItemData_1.ProjectItemType.cameraJson;
|
|
418
|
+
}
|
|
419
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/trading/") >= 0) {
|
|
420
|
+
newJsonType = IProjectItemData_1.ProjectItemType.tradingBehaviorJson;
|
|
421
|
+
}
|
|
422
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
423
|
+
folderPathLower.indexOf("/animation_controllers/") >= 0) {
|
|
424
|
+
newJsonType = IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson;
|
|
425
|
+
}
|
|
426
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/animations/") >= 0) {
|
|
427
|
+
newJsonType = IProjectItemData_1.ProjectItemType.animationBehaviorJson;
|
|
428
|
+
}
|
|
429
|
+
else if (isResourcePack &&
|
|
430
|
+
(folderPathLower.indexOf("/models/") >= 0 ||
|
|
431
|
+
baseName.endsWith(".geo") ||
|
|
432
|
+
baseName.endsWith(".geometry"))) {
|
|
433
|
+
newJsonType = IProjectItemData_1.ProjectItemType.modelGeometryJson;
|
|
434
|
+
}
|
|
435
|
+
else if (baseName.endsWith(".mci")) {
|
|
436
|
+
newJsonType = IProjectItemData_1.ProjectItemType.contentIndexJson;
|
|
437
|
+
}
|
|
438
|
+
else if (baseName.endsWith(".mcr")) {
|
|
439
|
+
newJsonType = IProjectItemData_1.ProjectItemType.contentReportJson;
|
|
440
|
+
}
|
|
441
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/dimension/") >= 0) {
|
|
442
|
+
newJsonType = IProjectItemData_1.ProjectItemType.dimensionJson;
|
|
443
|
+
}
|
|
444
|
+
else if ((folderContext === Project_1.FolderContext.behaviorPack || folderContext === Project_1.FolderContext.unknown) &&
|
|
445
|
+
folderPathLower.indexOf("/features/") >= 0) {
|
|
446
|
+
newJsonType = IProjectItemData_1.ProjectItemType.featureBehavior;
|
|
447
|
+
}
|
|
448
|
+
else if ((folderContext === Project_1.FolderContext.behaviorPack || folderContext === Project_1.FolderContext.unknown) &&
|
|
449
|
+
folderPathLower.indexOf("/feature_rules/") >= 0) {
|
|
450
|
+
newJsonType = IProjectItemData_1.ProjectItemType.featureRuleBehavior;
|
|
451
|
+
}
|
|
452
|
+
else if (isResourcePack && folderPathLower.indexOf("/animation_controllers/") >= 0) {
|
|
453
|
+
newJsonType = IProjectItemData_1.ProjectItemType.animationControllerResourceJson;
|
|
454
|
+
}
|
|
455
|
+
else if (isResourcePack && folderPathLower.indexOf("/animations/") >= 0) {
|
|
456
|
+
newJsonType = IProjectItemData_1.ProjectItemType.animationResourceJson;
|
|
457
|
+
}
|
|
458
|
+
else if (folderPathLower.indexOf("/attachables/") >= 0) {
|
|
459
|
+
newJsonType = IProjectItemData_1.ProjectItemType.attachableResourceJson;
|
|
460
|
+
}
|
|
461
|
+
else if (isResourcePack && folderPathLower.indexOf("/fogs/") >= 0) {
|
|
462
|
+
newJsonType = IProjectItemData_1.ProjectItemType.fogResourceJson;
|
|
463
|
+
}
|
|
464
|
+
else if (isResourcePack && folderPathLower.indexOf("/particles/") >= 0) {
|
|
465
|
+
newJsonType = IProjectItemData_1.ProjectItemType.particleJson;
|
|
466
|
+
}
|
|
467
|
+
else if (isResourcePack && folderPathLower.indexOf("/render_controllers/") >= 0) {
|
|
468
|
+
newJsonType = IProjectItemData_1.ProjectItemType.renderControllerJson;
|
|
469
|
+
}
|
|
470
|
+
else if (isResourcePack && folderPathLower.indexOf("/block_culling/") >= 0) {
|
|
471
|
+
newJsonType = IProjectItemData_1.ProjectItemType.blockCulling;
|
|
472
|
+
}
|
|
473
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
474
|
+
projectPathLower.indexOf("/item_catalog/crafting_item_catalog") >= 0) {
|
|
475
|
+
newJsonType = IProjectItemData_1.ProjectItemType.craftingItemCatalog;
|
|
476
|
+
}
|
|
477
|
+
else if (isResourcePack &&
|
|
478
|
+
(projectPathLower.endsWith("terrain_texture.json") ||
|
|
479
|
+
projectPathLower.endsWith("terrain_textures.json"))) {
|
|
480
|
+
newJsonType = IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson;
|
|
481
|
+
}
|
|
482
|
+
else if (isResourcePack && projectPathLower.endsWith("_global_variables.json")) {
|
|
483
|
+
newJsonType = IProjectItemData_1.ProjectItemType.globalVariablesJson;
|
|
484
|
+
}
|
|
485
|
+
else if (isResourcePack && projectPathLower.endsWith("flipbook_textures.json")) {
|
|
486
|
+
newJsonType = IProjectItemData_1.ProjectItemType.flipbookTexturesJson;
|
|
487
|
+
}
|
|
488
|
+
else if (isResourcePack &&
|
|
489
|
+
(projectPathLower.endsWith("item_texture.json") || projectPathLower.endsWith("item_textures.json"))) {
|
|
490
|
+
newJsonType = IProjectItemData_1.ProjectItemType.itemTextureJson;
|
|
491
|
+
}
|
|
492
|
+
else if (baseName === "contents") {
|
|
493
|
+
newJsonType = IProjectItemData_1.ProjectItemType.contentsJson;
|
|
494
|
+
}
|
|
495
|
+
else if (folderContext === Project_1.FolderContext.skinPack && projectPathLower.endsWith("skins.json")) {
|
|
496
|
+
newJsonType = IProjectItemData_1.ProjectItemType.skinCatalogJson;
|
|
497
|
+
}
|
|
498
|
+
else if (isResourcePack && folderPathLower.indexOf("/materials/") >= 0) {
|
|
499
|
+
newJsonType = IProjectItemData_1.ProjectItemType.materialSetJson;
|
|
500
|
+
}
|
|
501
|
+
else if (isResourcePack &&
|
|
502
|
+
folderPathLower.indexOf("/sounds/") >= 0 &&
|
|
503
|
+
baseName === "sound_definitions") {
|
|
504
|
+
newJsonType = IProjectItemData_1.ProjectItemType.soundDefinitionCatalog;
|
|
505
|
+
}
|
|
506
|
+
else if (isResourcePack &&
|
|
507
|
+
folderPathLower.indexOf("/sounds/") >= 0 &&
|
|
508
|
+
baseName === "music_definitions") {
|
|
509
|
+
newJsonType = IProjectItemData_1.ProjectItemType.musicDefinitionJson;
|
|
510
|
+
}
|
|
511
|
+
else if (folderPathLower.indexOf("/texts/") >= 0 || baseName === "languages") {
|
|
512
|
+
newJsonType = IProjectItemData_1.ProjectItemType.languagesCatalogResourceJson;
|
|
513
|
+
}
|
|
514
|
+
else if (isResourcePack && folderPathLower.indexOf("/textures/ui/") >= 0) {
|
|
515
|
+
newJsonType = IProjectItemData_1.ProjectItemType.ninesliceJson;
|
|
516
|
+
}
|
|
517
|
+
else if (isResourcePack && folderPathLower.indexOf("/texture_sets/") >= 0) {
|
|
518
|
+
newJsonType = IProjectItemData_1.ProjectItemType.textureSetJson;
|
|
519
|
+
}
|
|
520
|
+
else if (isResourcePack && folderPathLower.indexOf("/lighting/") >= 0) {
|
|
521
|
+
newJsonType = IProjectItemData_1.ProjectItemType.lightingJson;
|
|
522
|
+
}
|
|
523
|
+
else if (isResourcePack && folderPathLower.indexOf("/point_lights/") >= 0) {
|
|
524
|
+
newJsonType = IProjectItemData_1.ProjectItemType.lightingJson;
|
|
525
|
+
}
|
|
526
|
+
else if (isResourcePack && folderPathLower.indexOf("/pbr/") >= 0) {
|
|
527
|
+
newJsonType = IProjectItemData_1.ProjectItemType.pbrJson;
|
|
528
|
+
}
|
|
529
|
+
else if (isResourcePack && folderPathLower.indexOf("/water/") >= 0) {
|
|
530
|
+
newJsonType = IProjectItemData_1.ProjectItemType.waterJson;
|
|
531
|
+
}
|
|
532
|
+
else if (isResourcePack && folderPathLower.indexOf("/shadows/") >= 0) {
|
|
533
|
+
newJsonType = IProjectItemData_1.ProjectItemType.shadowsJson;
|
|
534
|
+
}
|
|
535
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
536
|
+
folderPathLower.indexOf("/worldgen/jigsaw_structures/") >= 0) {
|
|
537
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jigsawStructure;
|
|
538
|
+
}
|
|
539
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
540
|
+
folderPathLower.indexOf("/worldgen/structure_sets/") >= 0) {
|
|
541
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jigsawStructureSet;
|
|
542
|
+
}
|
|
543
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
544
|
+
folderPathLower.indexOf("/worldgen/template_pools/") >= 0) {
|
|
545
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jigsawTemplatePool;
|
|
546
|
+
}
|
|
547
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
548
|
+
folderPathLower.indexOf("/worldgen/processors/") >= 0) {
|
|
549
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jigsawProcessorList;
|
|
550
|
+
}
|
|
551
|
+
else if (isResourcePack && folderPathLower.indexOf("/ui/") >= 0) {
|
|
552
|
+
newJsonType = IProjectItemData_1.ProjectItemType.uiJson;
|
|
553
|
+
}
|
|
554
|
+
else if (folderContext === Project_1.FolderContext.docs && baseName === "example_files") {
|
|
555
|
+
newJsonType = IProjectItemData_1.ProjectItemType.fileListArrayJson;
|
|
556
|
+
}
|
|
557
|
+
else if (isResourcePack && baseName === "biomes_client") {
|
|
558
|
+
newJsonType = IProjectItemData_1.ProjectItemType.biomeResourceJson;
|
|
559
|
+
}
|
|
560
|
+
else if (folderPathLower.indexOf("/biomes/") >= 0) {
|
|
561
|
+
newJsonType = IProjectItemData_1.ProjectItemType.biomeBehaviorJson;
|
|
562
|
+
}
|
|
563
|
+
else if (isResourcePack && baseName === "blocks") {
|
|
564
|
+
newJsonType = IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson;
|
|
565
|
+
}
|
|
566
|
+
else if (isResourcePack &&
|
|
567
|
+
(projectPathLower.endsWith("texture_list.json") || projectPathLower.endsWith("textures_list.json"))) {
|
|
568
|
+
newJsonType = IProjectItemData_1.ProjectItemType.textureListJson;
|
|
569
|
+
}
|
|
570
|
+
else if (isResourcePack && projectPathLower.endsWith("texture_set.json")) {
|
|
571
|
+
newJsonType = IProjectItemData_1.ProjectItemType.textureSetJson;
|
|
572
|
+
}
|
|
573
|
+
else if (isResourcePack && folderPathLower.indexOf("/items/") >= 0) {
|
|
574
|
+
newJsonType = IProjectItemData_1.ProjectItemType.itemTypeLegacyResource;
|
|
575
|
+
}
|
|
576
|
+
else if (isResourcePack && baseName === "sounds") {
|
|
577
|
+
newJsonType = IProjectItemData_1.ProjectItemType.soundCatalog;
|
|
578
|
+
}
|
|
579
|
+
else if (baseName === "education") {
|
|
580
|
+
newJsonType = IProjectItemData_1.ProjectItemType.educationJson;
|
|
581
|
+
}
|
|
582
|
+
else if (baseName === "world_behavior_packs") {
|
|
583
|
+
newJsonType = IProjectItemData_1.ProjectItemType.behaviorPackListJson;
|
|
584
|
+
}
|
|
585
|
+
else if (baseName === "world_resource_packs") {
|
|
586
|
+
newJsonType = IProjectItemData_1.ProjectItemType.resourcePackListJson;
|
|
587
|
+
}
|
|
588
|
+
else if (baseName === "world_behavior_pack_history") {
|
|
589
|
+
newJsonType = IProjectItemData_1.ProjectItemType.behaviorPackHistoryListJson;
|
|
590
|
+
}
|
|
591
|
+
else if (baseName === "world_resource_pack_history") {
|
|
592
|
+
newJsonType = IProjectItemData_1.ProjectItemType.resourcePackHistoryListJson;
|
|
593
|
+
}
|
|
594
|
+
else if (baseName === "tsconfig") {
|
|
595
|
+
newJsonType = IProjectItemData_1.ProjectItemType.tsconfigJson;
|
|
596
|
+
}
|
|
597
|
+
else if (baseName === "docfx") {
|
|
598
|
+
newJsonType = IProjectItemData_1.ProjectItemType.docfxJson;
|
|
599
|
+
}
|
|
600
|
+
else if (baseName === "jsdoc") {
|
|
601
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jsdocJson;
|
|
602
|
+
}
|
|
603
|
+
else if (baseName === "jsconfig") {
|
|
604
|
+
newJsonType = IProjectItemData_1.ProjectItemType.jsconfigJson;
|
|
605
|
+
}
|
|
606
|
+
else if (baseName === "package") {
|
|
607
|
+
newJsonType = IProjectItemData_1.ProjectItemType.packageJson;
|
|
608
|
+
}
|
|
609
|
+
else if (baseName === "package.lock") {
|
|
610
|
+
newJsonType = IProjectItemData_1.ProjectItemType.packageLockJson;
|
|
611
|
+
}
|
|
612
|
+
else if (baseName === ".prettierrc") {
|
|
613
|
+
newJsonType = IProjectItemData_1.ProjectItemType.prettierRcJson;
|
|
614
|
+
}
|
|
615
|
+
else if (folderContext === Project_1.FolderContext.docs && baseName === "info") {
|
|
616
|
+
newJsonType = IProjectItemData_1.ProjectItemType.docInfoJson;
|
|
617
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
618
|
+
itemName = StorageUtilities_1.default.getLeafName(folderPath);
|
|
619
|
+
}
|
|
620
|
+
else if (isResourcePack && folderPathLower.indexOf("/textures/") >= 0) {
|
|
621
|
+
newJsonType = IProjectItemData_1.ProjectItemType.ninesliceJson;
|
|
622
|
+
}
|
|
623
|
+
else if (folderContext === Project_1.FolderContext.docs &&
|
|
624
|
+
(baseName === "_example_files" || baseName === "example_files")) {
|
|
625
|
+
newJsonType = IProjectItemData_1.ProjectItemType.fileListArrayJson;
|
|
626
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
627
|
+
itemName = StorageUtilities_1.default.getLeafName(folderPath);
|
|
628
|
+
}
|
|
629
|
+
else if (folderContext === Project_1.FolderContext.typeDefs && folderPathLower.indexOf("/command_modules") >= 0) {
|
|
630
|
+
newJsonType = IProjectItemData_1.ProjectItemType.commandSetDefinitionJson;
|
|
631
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
632
|
+
}
|
|
633
|
+
else if ((folderContext === Project_1.FolderContext.metaData && folderPathLower.indexOf("/forms") >= 0) ||
|
|
634
|
+
projectPathLower.endsWith(".form.json")) {
|
|
635
|
+
newJsonType = IProjectItemData_1.ProjectItemType.dataForm;
|
|
636
|
+
project.role = IProjectData_1.ProjectRole.meta;
|
|
637
|
+
}
|
|
638
|
+
else if (folderContext === Project_1.FolderContext.typeDefs && folderPathLower.indexOf("/script_modules") >= 0) {
|
|
639
|
+
newJsonType = IProjectItemData_1.ProjectItemType.scriptTypesJson;
|
|
640
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
641
|
+
}
|
|
642
|
+
else if (folderContext === Project_1.FolderContext.typeDefs &&
|
|
643
|
+
folderPathLower.indexOf("/vanilladata_modules") >= 0) {
|
|
644
|
+
newJsonType = IProjectItemData_1.ProjectItemType.vanillaDataJson;
|
|
645
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
646
|
+
}
|
|
647
|
+
else if (folderContext === Project_1.FolderContext.typeDefs && folderPathLower.indexOf("/engine_modules") >= 0) {
|
|
648
|
+
newJsonType = IProjectItemData_1.ProjectItemType.engineOrderingJson;
|
|
649
|
+
project.role = IProjectData_1.ProjectRole.documentation;
|
|
650
|
+
}
|
|
651
|
+
// these need to be near the bottom since URL segments like /items/, /blocks/, /entities etc. could theoretically be used in loot_tables, etc. and that should take precedence in detection
|
|
652
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/items/") >= 0) {
|
|
653
|
+
newJsonType = IProjectItemData_1.ProjectItemType.itemTypeBehavior;
|
|
654
|
+
}
|
|
655
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack && folderPathLower.indexOf("/blocks/") >= 0) {
|
|
656
|
+
newJsonType = IProjectItemData_1.ProjectItemType.blockTypeBehavior;
|
|
657
|
+
}
|
|
658
|
+
else if (isResourcePack &&
|
|
659
|
+
(folderPathLower.indexOf("/entities/") >= 0 || folderPathLower.indexOf("/entity/") >= 0)) {
|
|
660
|
+
newJsonType = IProjectItemData_1.ProjectItemType.entityTypeResource;
|
|
661
|
+
}
|
|
662
|
+
else if (folderContext === Project_1.FolderContext.behaviorPack &&
|
|
663
|
+
(folderPathLower.indexOf("/entities/") >= 0 || folderPathLower.indexOf("/entity/") >= 0)) {
|
|
664
|
+
newJsonType = IProjectItemData_1.ProjectItemType.entityTypeBehavior;
|
|
665
|
+
}
|
|
666
|
+
else {
|
|
667
|
+
// Log.debugAlert("General JSON file found: " + projectPath);
|
|
668
|
+
}
|
|
669
|
+
project.ensureItemByProjectPath(projectPath, IProjectItemData_1.ProjectItemStorageType.singleFile, itemName, newJsonType, folderContext, source, IProjectItemData_1.ProjectItemCreationType.normal, candidateFile, undefined, isInWorld);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
else if (pi && projectPath !== undefined) {
|
|
673
|
+
if (pi.itemType === IProjectItemData_1.ProjectItemType.MCWorld ||
|
|
674
|
+
pi.itemType === IProjectItemData_1.ProjectItemType.MCProject ||
|
|
675
|
+
pi.itemType === IProjectItemData_1.ProjectItemType.MCTemplate ||
|
|
676
|
+
pi.itemType === IProjectItemData_1.ProjectItemType.MCAddon ||
|
|
677
|
+
pi.itemType === IProjectItemData_1.ProjectItemType.MCPack ||
|
|
678
|
+
pi.itemType === IProjectItemData_1.ProjectItemType.zip) {
|
|
679
|
+
await project.inferProjectItemsFromZipFile(projectPath, candidateFile, force);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
for (const folderName in folder.folders) {
|
|
686
|
+
const childFolder = folder.folders[folderName];
|
|
687
|
+
if (childFolder && !childFolder.errorStatus) {
|
|
688
|
+
const name = StorageUtilities_1.default.canonicalizeName(folderName);
|
|
689
|
+
if (name === "build" || name === "out" || name === "dist") {
|
|
690
|
+
project.distBuildFolder = folder;
|
|
691
|
+
}
|
|
692
|
+
else if (name === "lib") {
|
|
693
|
+
project.libFolder = folder;
|
|
694
|
+
}
|
|
695
|
+
else if ((name.startsWith(".mct") || name.startsWith(".vscode") || !name.startsWith(".")) &&
|
|
696
|
+
!childFolder.canIgnore &&
|
|
697
|
+
(folderContext !== Project_1.FolderContext.unknown || depth < 4) &&
|
|
698
|
+
depth < 10) {
|
|
699
|
+
if (childFolder !== undefined) {
|
|
700
|
+
await ProjectItemInference.inferProjectItemsFromFolder(project, childFolder, fileSystemPrefix, folderContext, variantLabel, isInWorld, rootFolder, depth + 1, source, force, processingCallback);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
exports.default = ProjectItemInference;
|
|
708
|
+
|
|
709
|
+
//# sourceMappingURL=../maps/app/ProjectItemInference.js.map
|