@minecraft/creator-tools 0.10.1 → 0.11.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.
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/info/WorldDataInfoGenerator.ts"],"names":[],"mappings":"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","file":"../../info/WorldDataInfoGenerator.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport ProjectInfoItem from \"./ProjectInfoItem\";\r\nimport ProjectItem from \"../app/ProjectItem\";\r\nimport IProjectInfoItemGenerator from \"./IProjectItemInfoGenerator\";\r\nimport { ProjectItemType } from \"../app/IProjectItemData\";\r\nimport MCWorld from \"../minecraft/MCWorld\";\r\nimport Log from \"../core/Log\";\r\nimport { InfoItemType } from \"./IInfoItemData\";\r\nimport CommandBlockActor from \"../minecraft/blockActors/CommandBlockActor\";\r\nimport { StatusTopic } from \"../app/Status\";\r\nimport CommandStructure from \"../app/CommandStructure\";\r\nimport ProjectInfoSet from \"./ProjectInfoSet\";\r\nimport CommandRegistry from \"../app/CommandRegistry\";\r\nimport Dialogue from \"../minecraft/Dialogue\";\r\nimport ContentIndex, { AnnotationCategory } from \"../core/ContentIndex\";\r\nimport { NbtTagType } from \"../minecraft/NbtBinaryTag\";\r\nimport AnimationControllerBehaviorDefinition from \"../minecraft/AnimationControllerBehaviorDefinition\";\r\nimport AnimationBehaviorDefinition from \"../minecraft/AnimationBehaviorDefinition\";\r\nimport ProjectInfoUtilities from \"./ProjectInfoUtilities\";\r\n\r\nexport enum WorldDataInfoGeneratorTest {\r\n blocks = 1,\r\n blockData = 2,\r\n command = 3,\r\n executeSubCommand = 4,\r\n levelDat = 5,\r\n levelDatExperiments = 6,\r\n subchunklessChunks = 7,\r\n chunks = 8,\r\n unexpectedCommandInMCFunction = 101,\r\n minX = 103,\r\n minZ = 104,\r\n maxX = 105,\r\n maxZ = 106,\r\n unexpectedCommandInCommandBlock = 102,\r\n containsWorldImpactingCommand = 112,\r\n commandIsFromOlderMinecraftVersion = 212,\r\n errorProcessingWorld = 400,\r\n}\r\n\r\nexport default class WorldDataInfoGenerator implements IProjectInfoItemGenerator {\r\n id = \"WORLDDATA\";\r\n title = \"World Data Validation\";\r\n\r\n modernCommandVersion = 33; // corresponds to 1.20.0 versions of Minecraft.\r\n\r\n performAddOnValidations = false;\r\n performPlatformVersionValidations: boolean = false;\r\n\r\n getTopicData(topicId: number) {\r\n return {\r\n title: ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, topicId),\r\n };\r\n }\r\n\r\n summarize(info: any, infoSet: ProjectInfoSet) {\r\n info.chunkCount = infoSet.getSummedNumberValue(\r\n \"WORLDDATA\",\r\n WorldDataInfoGeneratorTest.unexpectedCommandInMCFunction\r\n );\r\n\r\n info.subchunkLessChunkCount = infoSet.getSummedNumberValue(\r\n \"WORLDDATA\",\r\n WorldDataInfoGeneratorTest.subchunklessChunks\r\n );\r\n\r\n info.worldLoadErrors = infoSet.getCount(\"WORLDDATA\", WorldDataInfoGeneratorTest.errorProcessingWorld);\r\n }\r\n\r\n processListOfCommands(\r\n commandList: string[],\r\n items: ProjectInfoItem[],\r\n projectItem: ProjectItem,\r\n commandsPi: ProjectInfoItem,\r\n subCommandsPi: ProjectInfoItem,\r\n checkForSlash: boolean\r\n ) {\r\n for (let i = 0; i < commandList.length; i++) {\r\n if (commandList[i].trim().length > 2 && (!checkForSlash || commandList[i].startsWith(\"/\"))) {\r\n const command = CommandStructure.parse(commandList[i]);\r\n\r\n if (CommandRegistry.isMinecraftBuiltInCommand(command.name)) {\r\n if (this.performAddOnValidations && CommandRegistry.isAddOnBlockedCommand(command.name)) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.warning,\r\n this.id,\r\n WorldDataInfoGeneratorTest.containsWorldImpactingCommand,\r\n \"Contains command '\" +\r\n command.name +\r\n \"' which is impacts the state of the entire world, and generally shouldn't be used in an add-on\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n commandList[i]\r\n )\r\n );\r\n }\r\n commandsPi.incrementFeature(command.name);\r\n\r\n if (command.name === \"execute\") {\r\n let foundRun = false;\r\n for (const arg of command.commandArguments) {\r\n if (arg === \"run\") {\r\n foundRun = true;\r\n } else if (foundRun && CommandRegistry.isMinecraftBuiltInCommand(arg)) {\r\n subCommandsPi.incrementFeature(arg);\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!this.performPlatformVersionValidations && !this.performAddOnValidations) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n 401,\r\n \"Unexpected command '\" + command.name + \"'\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n commandList[i]\r\n )\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n async generate(projectItem: ProjectItem, contentIndex: ContentIndex): Promise<ProjectInfoItem[]> {\r\n const items: ProjectInfoItem[] = [];\r\n\r\n if (\r\n projectItem.itemType !== ProjectItemType.MCWorld &&\r\n projectItem.itemType !== ProjectItemType.MCTemplate &&\r\n projectItem.itemType !== ProjectItemType.worldFolder &&\r\n projectItem.itemType !== ProjectItemType.dialogueBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.animationControllerBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.animationBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.MCFunction\r\n ) {\r\n return items;\r\n }\r\n\r\n const blocksPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.blocks,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.blocks),\r\n projectItem\r\n );\r\n items.push(blocksPi);\r\n\r\n const blockActorsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.blockData,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.blockData),\r\n projectItem\r\n );\r\n items.push(blockActorsPi);\r\n\r\n const commandsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.command,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.command),\r\n projectItem\r\n );\r\n items.push(commandsPi);\r\n\r\n const subCommandsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.executeSubCommand,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.executeSubCommand),\r\n projectItem\r\n );\r\n items.push(subCommandsPi);\r\n\r\n const nbtPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.levelDat,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.levelDat),\r\n projectItem\r\n );\r\n items.push(nbtPi);\r\n\r\n const nbtExperimentsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.levelDatExperiments,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.levelDatExperiments),\r\n projectItem\r\n );\r\n items.push(nbtExperimentsPi);\r\n\r\n if (projectItem.itemType === ProjectItemType.dialogueBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.availableFile) {\r\n const diaManifest = await Dialogue.ensureOnFile(projectItem.availableFile);\r\n\r\n if (diaManifest && diaManifest.definition && diaManifest.definition[\"minecraft:npc_dialogue\"]) {\r\n let scenes = diaManifest.definition[\"minecraft:npc_dialogue\"].scenes;\r\n\r\n for (const scene of scenes) {\r\n if (scene.on_open_commands) {\r\n this.processListOfCommands(scene.on_open_commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n if (scene.on_close_commands) {\r\n this.processListOfCommands(scene.on_close_commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n let buttons = diaManifest.getAllButtons();\r\n\r\n for (const button of buttons) {\r\n if (button.commands) {\r\n this.processListOfCommands(button.commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.animationControllerBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.availableFile) {\r\n const acManifest = await AnimationControllerBehaviorDefinition.ensureOnFile(projectItem.availableFile);\r\n\r\n if (acManifest && acManifest.data && acManifest.data.animation_controllers) {\r\n let states = acManifest.getAllStates();\r\n\r\n for (const state of states) {\r\n if (state.state.on_entry) {\r\n this.processListOfCommands(state.state.on_entry, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n\r\n if (state.state.on_exit) {\r\n this.processListOfCommands(state.state.on_exit, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.animationBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.availableFile) {\r\n const animManifest = await AnimationBehaviorDefinition.ensureOnFile(projectItem.availableFile);\r\n\r\n if (animManifest && animManifest.data && animManifest.data.animations) {\r\n let timelines = animManifest.getAllTimeline();\r\n\r\n for (const timeline of timelines) {\r\n if (timeline.timeline) {\r\n this.processListOfCommands(timeline.timeline, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.MCFunction) {\r\n let content = await projectItem.getStringContent();\r\n\r\n if (content !== undefined) {\r\n let contentLines = content.split(\"\\n\");\r\n\r\n this.processListOfCommands(contentLines, items, projectItem, commandsPi, subCommandsPi, false);\r\n }\r\n }\r\n\r\n if (\r\n projectItem.itemType === ProjectItemType.MCWorld ||\r\n projectItem.itemType === ProjectItemType.MCTemplate ||\r\n projectItem.itemType === ProjectItemType.worldFolder\r\n ) {\r\n let mcworld: MCWorld | undefined = await MCWorld.ensureOnItem(projectItem);\r\n\r\n if (!mcworld) {\r\n Log.debugAlert(\"Could not find respective world.\");\r\n return items;\r\n }\r\n\r\n await mcworld.load(false);\r\n\r\n await mcworld.loadData(false);\r\n\r\n if (\r\n mcworld.isInErrorState &&\r\n mcworld.errorMessages &&\r\n !this.performAddOnValidations &&\r\n !this.performPlatformVersionValidations\r\n ) {\r\n for (const err of mcworld.errorMessages) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n WorldDataInfoGeneratorTest.errorProcessingWorld,\r\n ProjectInfoUtilities.getTitleFromEnum(\r\n WorldDataInfoGeneratorTest,\r\n WorldDataInfoGeneratorTest.errorProcessingWorld\r\n ),\r\n projectItem,\r\n err.message + (err.context ? \" - \" + err.context : \"\"),\r\n mcworld.name\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (\r\n projectItem.projectPath &&\r\n contentIndex &&\r\n mcworld.levelData &&\r\n mcworld.levelData.nbt &&\r\n mcworld.levelData.nbt.singleRoot\r\n ) {\r\n const children = mcworld.levelData.nbt.singleRoot.getTagChildren();\r\n\r\n for (const child of children) {\r\n if (child.name === \"experiments\") {\r\n for (const experimentChild of child.getTagChildren()) {\r\n if (\r\n experimentChild.type === NbtTagType.int ||\r\n experimentChild.type === NbtTagType.byte ||\r\n experimentChild.type === NbtTagType.string\r\n ) {\r\n nbtExperimentsPi.incrementFeature(experimentChild.name, experimentChild.valueAsString);\r\n\r\n contentIndex.insert(\r\n experimentChild.name + \"==\" + experimentChild.valueAsString,\r\n projectItem.projectPath,\r\n AnnotationCategory.experiment\r\n );\r\n }\r\n }\r\n } else if (\r\n child.type === NbtTagType.int ||\r\n child.type === NbtTagType.byte ||\r\n child.type === NbtTagType.string\r\n ) {\r\n if (\r\n child.name !== \"LevelName\" &&\r\n child.name !== \"FlatWorldLayers\" &&\r\n child.name !== \"lightningTime\" &&\r\n child.name !== \"EducationOid\" &&\r\n child.name !== \"EducationProductId\" &&\r\n child.name !== \"rainTime\" &&\r\n child.name !== \"worldTemplateUUID\" &&\r\n !child.name.startsWith(\"LimitedWorld\") &&\r\n !child.name.startsWith(\"SpawnX\") &&\r\n !child.name.startsWith(\"SpawnY\") &&\r\n !child.name.startsWith(\"SpawnZ\")\r\n ) {\r\n if (child.name.indexOf(\"ersion\") >= 0 && !child.valueAsString.startsWith(\"1.\")) {\r\n nbtPi.incrementFeature(child.name, \"(unknown version)\");\r\n } else {\r\n nbtPi.incrementFeature(child.name, child.valueAsString);\r\n }\r\n\r\n contentIndex.insert(\r\n child.name + \"==\" + child.valueAsString,\r\n projectItem.projectPath,\r\n AnnotationCategory.worldProperty\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.chunks,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.chunks),\r\n projectItem,\r\n mcworld.chunkCount,\r\n mcworld.name\r\n )\r\n );\r\n\r\n let blockCount = 0;\r\n let chunkCount = 0;\r\n let subchunkLessChunkCount = 0;\r\n\r\n for (const dimIndex in mcworld.chunks) {\r\n let dim = mcworld.chunks[dimIndex];\r\n\r\n for (const chunkSliverIndex in dim) {\r\n const chunkSliver = dim[chunkSliverIndex];\r\n\r\n if (chunkSliver) {\r\n for (const chunkId in chunkSliver) {\r\n const chunk = chunkSliver[chunkId];\r\n\r\n if (chunk) {\r\n chunkCount++;\r\n\r\n if (chunk.subChunks.length <= 0) {\r\n subchunkLessChunkCount++;\r\n }\r\n\r\n if (chunkCount % 1000 === 0) {\r\n await projectItem.project.carto.notifyStatusUpdate(\r\n \"World data validation: scanned \" +\r\n chunkCount / 1000 +\r\n \"K of \" +\r\n Math.floor(mcworld.chunkCount / 1000) +\r\n \"K chunks in \" +\r\n mcworld.name,\r\n StatusTopic.validation\r\n );\r\n }\r\n\r\n const blockActors = chunk.blockActors;\r\n\r\n for (let i = 0; i < blockActors.length; i++) {\r\n const blockActor = blockActors[i];\r\n\r\n if (blockActor.id) {\r\n blockActorsPi.incrementFeature(blockActor.id);\r\n }\r\n\r\n if (blockActor instanceof CommandBlockActor) {\r\n let cba = blockActor as CommandBlockActor;\r\n if (cba.version) {\r\n blockActorsPi.spectrumIntFeature(\"Command Version\", cba.version);\r\n }\r\n\r\n if (cba.version && cba.version < this.modernCommandVersion) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.recommendation,\r\n this.id,\r\n WorldDataInfoGeneratorTest.commandIsFromOlderMinecraftVersion,\r\n \"Command '\" + cba.command + \"' is from an older Minecraft version (\" + cba.version + \") \",\r\n projectItem,\r\n \"(Command at location \" + cba.x + \", \" + cba.y + \", \" + cba.z + \")\",\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n\r\n if (cba.command && cba.command.trim().length > 2) {\r\n let command = CommandStructure.parse(cba.command);\r\n\r\n if (CommandRegistry.isMinecraftBuiltInCommand(command.name)) {\r\n if (this.performAddOnValidations && CommandRegistry.isAddOnBlockedCommand(command.name)) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.warning,\r\n this.id,\r\n WorldDataInfoGeneratorTest.containsWorldImpactingCommand,\r\n \"Contains command '\" +\r\n command.name +\r\n \"' which is impacts the state of the entire world, and generally shouldn't be used in an add-on\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n\r\n commandsPi.incrementFeature(command.name);\r\n\r\n if (command.name === \"execute\") {\r\n let foundRun = false;\r\n for (const arg of command.commandArguments) {\r\n if (arg === \"run\") {\r\n foundRun = true;\r\n } else if (foundRun && CommandRegistry.isMinecraftBuiltInCommand(arg)) {\r\n subCommandsPi.incrementFeature(arg);\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!this.performAddOnValidations && !this.performPlatformVersionValidations) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n WorldDataInfoGeneratorTest.unexpectedCommandInCommandBlock,\r\n \"Unexpected command '\" + command.name + \"'\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n const blockList = chunk.getBlockList();\r\n\r\n for (let i = 0; i < blockList.length; i++) {\r\n const block = blockList[i];\r\n\r\n if (block) {\r\n blockCount++;\r\n if (block.typeName) {\r\n let type = block.typeName;\r\n\r\n if (type.indexOf(\":\") >= 0 && type.indexOf(\"minecraft:\") < 0) {\r\n type = \"(custom)\";\r\n }\r\n\r\n blocksPi.incrementFeature(type);\r\n }\r\n }\r\n }\r\n\r\n chunk.clearCachedData();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n blocksPi.data = blockCount;\r\n\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.minX,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.minX),\r\n projectItem,\r\n mcworld.minX,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.minZ,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.minZ),\r\n projectItem,\r\n mcworld.minZ,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.maxX,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.maxX),\r\n projectItem,\r\n mcworld.maxX,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.maxZ,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.maxZ),\r\n projectItem,\r\n mcworld.maxZ,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.subchunklessChunks,\r\n \"Subchunkless Chunks\",\r\n projectItem,\r\n subchunkLessChunkCount,\r\n mcworld.name\r\n )\r\n );\r\n }\r\n\r\n return items;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/info/WorldDataInfoGenerator.ts"],"names":[],"mappings":"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","file":"../../info/WorldDataInfoGenerator.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport ProjectInfoItem from \"./ProjectInfoItem\";\r\nimport ProjectItem from \"../app/ProjectItem\";\r\nimport IProjectInfoItemGenerator from \"./IProjectItemInfoGenerator\";\r\nimport { ProjectItemType } from \"../app/IProjectItemData\";\r\nimport MCWorld from \"../minecraft/MCWorld\";\r\nimport Log from \"../core/Log\";\r\nimport { InfoItemType } from \"./IInfoItemData\";\r\nimport CommandBlockActor from \"../minecraft/blockActors/CommandBlockActor\";\r\nimport { StatusTopic } from \"../app/Status\";\r\nimport CommandStructure from \"../app/CommandStructure\";\r\nimport ProjectInfoSet from \"./ProjectInfoSet\";\r\nimport CommandRegistry from \"../app/CommandRegistry\";\r\nimport Dialogue from \"../minecraft/Dialogue\";\r\nimport ContentIndex, { AnnotationCategory } from \"../core/ContentIndex\";\r\nimport { NbtTagType } from \"../minecraft/NbtBinaryTag\";\r\nimport AnimationControllerBehaviorDefinition from \"../minecraft/AnimationControllerBehaviorDefinition\";\r\nimport AnimationBehaviorDefinition from \"../minecraft/AnimationBehaviorDefinition\";\r\nimport ProjectInfoUtilities from \"./ProjectInfoUtilities\";\r\n\r\nexport enum WorldDataInfoGeneratorTest {\r\n blocks = 1,\r\n blockData = 2,\r\n command = 3,\r\n executeSubCommand = 4,\r\n levelDat = 5,\r\n levelDatExperiments = 6,\r\n subchunklessChunks = 7,\r\n chunks = 8,\r\n unexpectedCommandInMCFunction = 101,\r\n minX = 103,\r\n minZ = 104,\r\n maxX = 105,\r\n maxZ = 106,\r\n unexpectedCommandInCommandBlock = 102,\r\n containsWorldImpactingCommand = 112,\r\n commandIsFromOlderMinecraftVersion = 212,\r\n errorProcessingWorld = 400,\r\n}\r\n\r\nexport default class WorldDataInfoGenerator implements IProjectInfoItemGenerator {\r\n id = \"WORLDDATA\";\r\n title = \"World Data Validation\";\r\n\r\n modernCommandVersion = 33; // corresponds to 1.20.0 versions of Minecraft.\r\n\r\n performAddOnValidations = false;\r\n performPlatformVersionValidations: boolean = false;\r\n\r\n getTopicData(topicId: number) {\r\n return {\r\n title: ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, topicId),\r\n };\r\n }\r\n\r\n summarize(info: any, infoSet: ProjectInfoSet) {\r\n info.chunkCount = infoSet.getSummedNumberValue(\r\n \"WORLDDATA\",\r\n WorldDataInfoGeneratorTest.unexpectedCommandInMCFunction\r\n );\r\n\r\n info.subchunkLessChunkCount = infoSet.getSummedNumberValue(\r\n \"WORLDDATA\",\r\n WorldDataInfoGeneratorTest.subchunklessChunks\r\n );\r\n\r\n info.worldLoadErrors = infoSet.getCount(\"WORLDDATA\", WorldDataInfoGeneratorTest.errorProcessingWorld);\r\n }\r\n\r\n processListOfCommands(\r\n commandList: string[],\r\n items: ProjectInfoItem[],\r\n projectItem: ProjectItem,\r\n commandsPi: ProjectInfoItem,\r\n subCommandsPi: ProjectInfoItem,\r\n checkForSlash: boolean\r\n ) {\r\n for (let i = 0; i < commandList.length; i++) {\r\n if (commandList[i].trim().length > 2 && (!checkForSlash || commandList[i].startsWith(\"/\"))) {\r\n const command = CommandStructure.parse(commandList[i]);\r\n\r\n if (CommandRegistry.isMinecraftBuiltInCommand(command.name)) {\r\n if (this.performAddOnValidations && CommandRegistry.isAddOnBlockedCommand(command.name)) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.warning,\r\n this.id,\r\n WorldDataInfoGeneratorTest.containsWorldImpactingCommand,\r\n \"Contains command '\" +\r\n command.name +\r\n \"' which is impacts the state of the entire world, and generally shouldn't be used in an add-on\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n commandList[i]\r\n )\r\n );\r\n }\r\n commandsPi.incrementFeature(command.name);\r\n\r\n if (command.name === \"execute\") {\r\n let foundRun = false;\r\n for (const arg of command.commandArguments) {\r\n if (arg === \"run\") {\r\n foundRun = true;\r\n } else if (foundRun && CommandRegistry.isMinecraftBuiltInCommand(arg)) {\r\n subCommandsPi.incrementFeature(arg);\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!this.performPlatformVersionValidations && !this.performAddOnValidations) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n 401,\r\n \"Unexpected command '\" + command.name + \"'\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n commandList[i]\r\n )\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n async generate(projectItem: ProjectItem, contentIndex: ContentIndex): Promise<ProjectInfoItem[]> {\r\n const items: ProjectInfoItem[] = [];\r\n\r\n if (\r\n projectItem.itemType !== ProjectItemType.MCWorld &&\r\n projectItem.itemType !== ProjectItemType.MCTemplate &&\r\n projectItem.itemType !== ProjectItemType.worldFolder &&\r\n projectItem.itemType !== ProjectItemType.dialogueBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.animationControllerBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.animationBehaviorJson &&\r\n projectItem.itemType !== ProjectItemType.MCFunction\r\n ) {\r\n return items;\r\n }\r\n\r\n const blocksPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.blocks,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.blocks),\r\n projectItem\r\n );\r\n items.push(blocksPi);\r\n\r\n const blockActorsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.blockData,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.blockData),\r\n projectItem\r\n );\r\n items.push(blockActorsPi);\r\n\r\n const commandsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.command,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.command),\r\n projectItem\r\n );\r\n items.push(commandsPi);\r\n\r\n const subCommandsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.executeSubCommand,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.executeSubCommand),\r\n projectItem\r\n );\r\n items.push(subCommandsPi);\r\n\r\n const nbtPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.levelDat,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.levelDat),\r\n projectItem\r\n );\r\n items.push(nbtPi);\r\n\r\n const nbtExperimentsPi = new ProjectInfoItem(\r\n InfoItemType.featureAggregate,\r\n this.id,\r\n WorldDataInfoGeneratorTest.levelDatExperiments,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.levelDatExperiments),\r\n projectItem\r\n );\r\n items.push(nbtExperimentsPi);\r\n\r\n if (projectItem.itemType === ProjectItemType.dialogueBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.primaryFile) {\r\n const diaManifest = await Dialogue.ensureOnFile(projectItem.primaryFile);\r\n\r\n if (diaManifest && diaManifest.definition && diaManifest.definition[\"minecraft:npc_dialogue\"]) {\r\n let scenes = diaManifest.definition[\"minecraft:npc_dialogue\"].scenes;\r\n\r\n for (const scene of scenes) {\r\n if (scene.on_open_commands) {\r\n this.processListOfCommands(scene.on_open_commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n if (scene.on_close_commands) {\r\n this.processListOfCommands(scene.on_close_commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n let buttons = diaManifest.getAllButtons();\r\n\r\n for (const button of buttons) {\r\n if (button.commands) {\r\n this.processListOfCommands(button.commands, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.animationControllerBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.primaryFile) {\r\n const acManifest = await AnimationControllerBehaviorDefinition.ensureOnFile(projectItem.primaryFile);\r\n\r\n if (acManifest && acManifest.data && acManifest.data.animation_controllers) {\r\n let states = acManifest.getAllStates();\r\n\r\n for (const state of states) {\r\n if (state.state.on_entry) {\r\n this.processListOfCommands(state.state.on_entry, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n\r\n if (state.state.on_exit) {\r\n this.processListOfCommands(state.state.on_exit, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.animationBehaviorJson) {\r\n await projectItem.ensureFileStorage();\r\n\r\n if (projectItem.primaryFile) {\r\n const animManifest = await AnimationBehaviorDefinition.ensureOnFile(projectItem.primaryFile);\r\n\r\n if (animManifest && animManifest.data && animManifest.data.animations) {\r\n let timelines = animManifest.getAllTimeline();\r\n\r\n for (const timeline of timelines) {\r\n if (timeline.timeline) {\r\n this.processListOfCommands(timeline.timeline, items, projectItem, commandsPi, subCommandsPi, true);\r\n }\r\n }\r\n }\r\n }\r\n } else if (projectItem.itemType === ProjectItemType.MCFunction) {\r\n let content = await projectItem.getStringContent();\r\n\r\n if (content !== undefined) {\r\n let contentLines = content.split(\"\\n\");\r\n\r\n this.processListOfCommands(contentLines, items, projectItem, commandsPi, subCommandsPi, false);\r\n }\r\n }\r\n\r\n if (\r\n projectItem.itemType === ProjectItemType.MCWorld ||\r\n projectItem.itemType === ProjectItemType.MCTemplate ||\r\n projectItem.itemType === ProjectItemType.worldFolder\r\n ) {\r\n let mcworld: MCWorld | undefined = await MCWorld.ensureOnItem(projectItem);\r\n\r\n if (!mcworld) {\r\n Log.debugAlert(\"Could not find respective world.\");\r\n return items;\r\n }\r\n\r\n await mcworld.load(false);\r\n\r\n await mcworld.loadData(false);\r\n\r\n if (\r\n mcworld.isInErrorState &&\r\n mcworld.errorMessages &&\r\n !this.performAddOnValidations &&\r\n !this.performPlatformVersionValidations\r\n ) {\r\n for (const err of mcworld.errorMessages) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n WorldDataInfoGeneratorTest.errorProcessingWorld,\r\n ProjectInfoUtilities.getTitleFromEnum(\r\n WorldDataInfoGeneratorTest,\r\n WorldDataInfoGeneratorTest.errorProcessingWorld\r\n ),\r\n projectItem,\r\n err.message + (err.context ? \" - \" + err.context : \"\"),\r\n mcworld.name\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (\r\n projectItem.projectPath &&\r\n contentIndex &&\r\n mcworld.levelData &&\r\n mcworld.levelData.nbt &&\r\n mcworld.levelData.nbt.singleRoot\r\n ) {\r\n const children = mcworld.levelData.nbt.singleRoot.getTagChildren();\r\n\r\n for (const child of children) {\r\n if (child.name === \"experiments\") {\r\n for (const experimentChild of child.getTagChildren()) {\r\n if (\r\n experimentChild.type === NbtTagType.int ||\r\n experimentChild.type === NbtTagType.byte ||\r\n experimentChild.type === NbtTagType.string\r\n ) {\r\n nbtExperimentsPi.incrementFeature(experimentChild.name, experimentChild.valueAsString);\r\n\r\n contentIndex.insert(\r\n experimentChild.name + \"==\" + experimentChild.valueAsString,\r\n projectItem.projectPath,\r\n AnnotationCategory.experiment\r\n );\r\n }\r\n }\r\n } else if (\r\n child.type === NbtTagType.int ||\r\n child.type === NbtTagType.byte ||\r\n child.type === NbtTagType.string\r\n ) {\r\n if (\r\n child.name !== \"LevelName\" &&\r\n child.name !== \"FlatWorldLayers\" &&\r\n child.name !== \"lightningTime\" &&\r\n child.name !== \"EducationOid\" &&\r\n child.name !== \"EducationProductId\" &&\r\n child.name !== \"rainTime\" &&\r\n child.name !== \"worldTemplateUUID\" &&\r\n !child.name.startsWith(\"LimitedWorld\") &&\r\n !child.name.startsWith(\"SpawnX\") &&\r\n !child.name.startsWith(\"SpawnY\") &&\r\n !child.name.startsWith(\"SpawnZ\")\r\n ) {\r\n if (child.name.indexOf(\"ersion\") >= 0 && !child.valueAsString.startsWith(\"1.\")) {\r\n nbtPi.incrementFeature(child.name, \"(unknown version)\");\r\n } else {\r\n nbtPi.incrementFeature(child.name, child.valueAsString);\r\n }\r\n\r\n contentIndex.insert(\r\n child.name + \"==\" + child.valueAsString,\r\n projectItem.projectPath,\r\n AnnotationCategory.worldProperty\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.chunks,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.chunks),\r\n projectItem,\r\n mcworld.chunkCount,\r\n mcworld.name\r\n )\r\n );\r\n\r\n let blockCount = 0;\r\n let chunkCount = 0;\r\n let subchunkLessChunkCount = 0;\r\n\r\n for (const dimIndex in mcworld.chunks) {\r\n let dim = mcworld.chunks[dimIndex];\r\n\r\n for (const chunkSliverIndex in dim) {\r\n const chunkSliver = dim[chunkSliverIndex];\r\n\r\n if (chunkSliver) {\r\n for (const chunkId in chunkSliver) {\r\n const chunk = chunkSliver[chunkId];\r\n\r\n if (chunk) {\r\n chunkCount++;\r\n\r\n if (chunk.subChunks.length <= 0) {\r\n subchunkLessChunkCount++;\r\n }\r\n\r\n if (chunkCount % 1000 === 0) {\r\n await projectItem.project.carto.notifyStatusUpdate(\r\n \"World data validation: scanned \" +\r\n chunkCount / 1000 +\r\n \"K of \" +\r\n Math.floor(mcworld.chunkCount / 1000) +\r\n \"K chunks in \" +\r\n mcworld.name,\r\n StatusTopic.validation\r\n );\r\n }\r\n\r\n const blockActors = chunk.blockActors;\r\n\r\n for (let i = 0; i < blockActors.length; i++) {\r\n const blockActor = blockActors[i];\r\n\r\n if (blockActor.id) {\r\n blockActorsPi.incrementFeature(blockActor.id);\r\n }\r\n\r\n if (blockActor instanceof CommandBlockActor) {\r\n let cba = blockActor as CommandBlockActor;\r\n if (cba.version) {\r\n blockActorsPi.spectrumIntFeature(\"Command Version\", cba.version);\r\n }\r\n\r\n if (cba.version && cba.version < this.modernCommandVersion) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.recommendation,\r\n this.id,\r\n WorldDataInfoGeneratorTest.commandIsFromOlderMinecraftVersion,\r\n \"Command '\" + cba.command + \"' is from an older Minecraft version (\" + cba.version + \") \",\r\n projectItem,\r\n \"(Command at location \" + cba.x + \", \" + cba.y + \", \" + cba.z + \")\",\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n\r\n if (cba.command && cba.command.trim().length > 2) {\r\n let command = CommandStructure.parse(cba.command);\r\n\r\n if (CommandRegistry.isMinecraftBuiltInCommand(command.name)) {\r\n if (this.performAddOnValidations && CommandRegistry.isAddOnBlockedCommand(command.name)) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.warning,\r\n this.id,\r\n WorldDataInfoGeneratorTest.containsWorldImpactingCommand,\r\n \"Contains command '\" +\r\n command.name +\r\n \"' which is impacts the state of the entire world, and generally shouldn't be used in an add-on\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n\r\n commandsPi.incrementFeature(command.name);\r\n\r\n if (command.name === \"execute\") {\r\n let foundRun = false;\r\n for (const arg of command.commandArguments) {\r\n if (arg === \"run\") {\r\n foundRun = true;\r\n } else if (foundRun && CommandRegistry.isMinecraftBuiltInCommand(arg)) {\r\n subCommandsPi.incrementFeature(arg);\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!this.performAddOnValidations && !this.performPlatformVersionValidations) {\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.error,\r\n this.id,\r\n WorldDataInfoGeneratorTest.unexpectedCommandInCommandBlock,\r\n \"Unexpected command '\" + command.name + \"'\",\r\n projectItem,\r\n command.name,\r\n undefined,\r\n cba.command\r\n )\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n const blockList = chunk.getBlockList();\r\n\r\n for (let i = 0; i < blockList.length; i++) {\r\n const block = blockList[i];\r\n\r\n if (block) {\r\n blockCount++;\r\n if (block.typeName) {\r\n let type = block.typeName;\r\n\r\n if (type.indexOf(\":\") >= 0 && type.indexOf(\"minecraft:\") < 0) {\r\n type = \"(custom)\";\r\n }\r\n\r\n blocksPi.incrementFeature(type);\r\n }\r\n }\r\n }\r\n\r\n chunk.clearCachedData();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n blocksPi.data = blockCount;\r\n\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.minX,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.minX),\r\n projectItem,\r\n mcworld.minX,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.minZ,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.minZ),\r\n projectItem,\r\n mcworld.minZ,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.maxX,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.maxX),\r\n projectItem,\r\n mcworld.maxX,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.maxZ,\r\n ProjectInfoUtilities.getTitleFromEnum(WorldDataInfoGeneratorTest, WorldDataInfoGeneratorTest.maxZ),\r\n projectItem,\r\n mcworld.maxZ,\r\n mcworld.name\r\n )\r\n );\r\n items.push(\r\n new ProjectInfoItem(\r\n InfoItemType.info,\r\n this.id,\r\n WorldDataInfoGeneratorTest.subchunklessChunks,\r\n \"Subchunkless Chunks\",\r\n projectItem,\r\n subchunkLessChunkCount,\r\n mcworld.name\r\n )\r\n );\r\n }\r\n\r\n return items;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/info/fileGenerators/CheckNoBOMGenerator.ts"],"names":[],"mappings":";;AAEA,qEAA8D;AAC9D,oDAAgD;AAGhD,wDAAiD;AACjD,kEAA2D;AAE3D,IAAK,uBAEJ;AAFD,WAAK,uBAAuB;IAC1B,+HAAsC,CAAA;AACxC,CAAC,EAFI,uBAAuB,KAAvB,uBAAuB,QAE3B;AAED;;;WAGW;AACX,MAAqB,mBAAmB;IAAxC;QACE,OAAE,GAAW,OAAO,CAAC;QACrB,UAAK,GAAW,0CAA0C,CAAC;QAC3D,qBAAgB,GAAG,IAAI,CAAC;QAEhB,aAAQ,GAAG,4BAAY,CAAC,KAAK,CAAC;IAmCxC,CAAC;IAjCC,QAAQ,CAAC,QAAiB,EAAE,WAAkB;QAC5C,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,IAAI,0BAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;YAClF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;SACjD;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO;YACL,KAAK,EAAE,8BAAoB,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,OAAO,CAAC;SAC/E,CAAC;IACJ,CAAC;IAED,SAAS,KAAU,CAAC;IAEZ,gBAAgB,CAAC,IAAW;QAClC,MAAM,KAAK,GAAG,0BAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,0BAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,IAAW;QACjC,OAAO,IAAI,yBAAe,CACxB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,EAAE,EACP,uBAAuB,CAAC,gCAAgC,EACxD,mCAAmC,IAAI,CAAC,IAAI,EAAE,CAC/C,CAAC;IACJ,CAAC;CACF;AAxCD,sCAwCC","file":"../../../info/fileGenerators/CheckNoBOMGenerator.js","sourcesContent":["import Project from \"../../app/Project\";\r\nimport IFile from \"../../storage/IFile\";\r\nimport StorageUtilities from \"../../storage/StorageUtilities\";\r\nimport { InfoItemType } from \"../IInfoItemData\";\r\nimport IProjectFileInfoGenerator from \"../IProjectFileInfoGenerator\";\r\nimport { IProjectInfoTopicData } from \"../IProjectInfoGeneratorBase\";\r\nimport ProjectInfoItem from \"../ProjectInfoItem\";\r\nimport ProjectInfoUtilities from \"../ProjectInfoUtilities\";\r\n\r\nenum CheckNoBOMGeneratorTest {\r\n NoByteOrderMarkAllowedInJsonFile = 101,\r\n}\r\n\r\n/**********\r\n * Generator that generates error results if Byte Order Marks are found within .json files\r\n *\r\n *********/\r\nexport default class CheckNoBOMGenerator implements IProjectFileInfoGenerator {\r\n id: string = \"NOBOM\";\r\n title: string = \"No Byte Order Mark allowed in json file.\";\r\n canAlwaysProcess = true;\r\n\r\n private severity = InfoItemType.error;\r\n\r\n generate(_project: Project, projectFile: IFile): Promise<ProjectInfoItem[]> {\r\n const results: ProjectInfoItem[] = [];\r\n\r\n if (StorageUtilities.isJsonFile(projectFile) && this.hasByteOrderMark(projectFile)) {\r\n results.push(this.getNewBOMResult(projectFile));\r\n }\r\n\r\n return Promise.resolve(results);\r\n }\r\n\r\n getTopicData(topicId: number): IProjectInfoTopicData | undefined {\r\n return {\r\n title: ProjectInfoUtilities.getTitleFromEnum(CheckNoBOMGeneratorTest, topicId),\r\n };\r\n }\r\n\r\n summarize(): void {}\r\n\r\n private hasByteOrderMark(file: IFile) {\r\n const bytes = StorageUtilities.getContentsAsBinary(file);\r\n const hasBOM = StorageUtilities.hasUTF8ByteOrderMark(bytes);\r\n\r\n return hasBOM;\r\n }\r\n\r\n private getNewBOMResult(file: IFile) {\r\n return new ProjectInfoItem(\r\n this.severity,\r\n this.id,\r\n CheckNoBOMGeneratorTest.NoByteOrderMarkAllowedInJsonFile,\r\n `Byte Order Marks found in file: ${file.name}`\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/info/projectGenerators/CheckPackIconsGenerator.ts"],"names":[],"mappings":"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","file":"../../../info/projectGenerators/CheckPackIconsGenerator.js","sourcesContent":["import Project from \"../../app/Project\";\r\nimport IProjectInfoGenerator from \"../IProjectInfoGenerator\";\r\nimport { IProjectInfoTopicData } from \"../IProjectInfoGeneratorBase\";\r\nimport ProjectInfoItem from \"../ProjectInfoItem\";\r\nimport Pack, { PackType } from \"../../minecraft/Pack\";\r\nimport { InfoItemType } from \"../IInfoItemData\";\r\nimport ProjectInfoUtilities from \"../ProjectInfoUtilities\";\r\nimport { isPackIcon, parseImageData } from \"../../storage/ImageUtilites\";\r\n\r\nenum CheckPacksIconsGeneratorTest {\r\n NoIconFound = 101,\r\n MultipleIconsFound = 102,\r\n IconNotValidImage = 103,\r\n IconNotValidSize = 104,\r\n}\r\n\r\nconst IconMaxWidth = 256;\r\nconst IconMinWidth = 2;\r\n\r\n/***********\r\n * Generator for validating Pack Icons\r\n *\r\n * Will ensure:\r\n * * exactly 1 icon per pack\r\n * * icon is a valid .png\r\n * * icon is square\r\n * * icon is within size limits\r\n *\r\n */\r\nexport default class CheckPackIconsGenerator implements IProjectInfoGenerator {\r\n id: string = \"CPI\";\r\n title: string = \"Check Pack Icon Generator\";\r\n canAlwaysProcess = true;\r\n\r\n private severity = InfoItemType.error;\r\n\r\n async generate(project: Project): Promise<ProjectInfoItem[]> {\r\n const results: ProjectInfoItem[] = [];\r\n\r\n for (const pack of project.packs) {\r\n if (pack.type !== PackType.skin) {\r\n const result = await this.getResultForPack(pack);\r\n if (result) {\r\n results.push(result);\r\n }\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n getTopicData(topicId: number): IProjectInfoTopicData | undefined {\r\n return {\r\n title: ProjectInfoUtilities.getTitleFromEnum(CheckPacksIconsGeneratorTest, topicId),\r\n };\r\n }\r\n summarize(): void {}\r\n\r\n private async getResultForPack(pack: Pack): Promise<ProjectInfoItem | null> {\r\n const icons = await pack.getFiles(isPackIcon);\r\n\r\n if (icons.length === 0) {\r\n const message = `pack_icon image file not found for ${pack.name}. It must use the .png extension.`;\r\n return this.createResult(CheckPacksIconsGeneratorTest.NoIconFound, message);\r\n } else if (icons.length > 1) {\r\n const message = `Found multiple pack icon files for ${pack.name}, there should be only one.`;\r\n return this.createResult(CheckPacksIconsGeneratorTest.MultipleIconsFound, message);\r\n }\r\n\r\n const file = icons[0];\r\n const image = await parseImageData(file);\r\n\r\n if (!image?.ImageWidth || !image?.ImageHeight) {\r\n const message = `Pack Image (${file.name}) is not valid`;\r\n return this.createResult(CheckPacksIconsGeneratorTest.IconNotValidImage, message);\r\n }\r\n\r\n if (this.isValidSize(image.ImageWidth, image.ImageHeight)) {\r\n const message = `pack_icon must be square with size 2, 4, 8, 16, 32, 64, 128, or 256. Found [${image.ImageWidth} x ${image.ImageHeight}] on ${file.name}`;\r\n return this.createResult(CheckPacksIconsGeneratorTest.IconNotValidSize, message);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private createResult(test: CheckPacksIconsGeneratorTest, message: string) {\r\n return new ProjectInfoItem(this.severity, this.id, test, message);\r\n }\r\n\r\n private isValidSize(width: number, height: number) {\r\n return width !== height || width < IconMinWidth || width > IconMaxWidth || (width & (width - 1)) !== 0;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/info/projectGenerators/CheckWorldIconsGenerator.ts"],"names":[],"mappings":"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","file":"../../../info/projectGenerators/CheckWorldIconsGenerator.js","sourcesContent":["import { ProjectItemType } from \"../../app/IProjectItemData\";\r\nimport Project from \"../../app/Project\";\r\nimport Pack from \"../../minecraft/Pack\";\r\nimport { isWorldIcon, parseImageData } from \"../../storage/ImageUtilites\";\r\nimport { InfoItemType } from \"../IInfoItemData\";\r\nimport IProjectInfoGenerator from \"../IProjectInfoGenerator\";\r\nimport { IProjectInfoTopicData } from \"../IProjectInfoGeneratorBase\";\r\nimport ProjectInfoItem from \"../ProjectInfoItem\";\r\nimport ProjectInfoUtilities from \"../ProjectInfoUtilities\";\r\n\r\nconst DefaultEduImageWidth = 480;\r\nconst DefaultEduImageHeight = 270;\r\nconst DefaultBedrockImageWidth = 800;\r\nconst DefaultBedrockImageHeight = 450;\r\n\r\nenum CheckWorldIconsGeneratorTest {\r\n NoIconFound = 101,\r\n MultipleIconsFound = 102,\r\n IconNotValidImage = 103,\r\n IconNotValidSize = 104,\r\n}\r\n\r\n/*\r\n * Generator for validating World Icons\r\n *\r\n * Will ensure:\r\n * * exactly 1 icon per pack\r\n * * icon is a valid .jpeg\r\n * * icon is the correct size\r\n */\r\nexport default class CheckWorldIconsGenerator implements IProjectInfoGenerator {\r\n id: string = \"CWI\";\r\n title: string = \"Check World Icon Generator\";\r\n canAlwaysProcess = true;\r\n\r\n private severity = InfoItemType.error;\r\n\r\n async generate(project: Project): Promise<ProjectInfoItem[]> {\r\n if (!shouldHaveWorldIcon(project)) {\r\n return [];\r\n }\r\n\r\n const results: ProjectInfoItem[] = [];\r\n /*\r\n for (const pack of project.packs) {\r\n const result = await this.getResultForPack(pack);\r\n if (result) {\r\n results.push(result);\r\n }\r\n }\r\n */\r\n\r\n return results;\r\n }\r\n\r\n private async getResultForPack(pack: Pack) {\r\n const files = await pack.getFiles(isWorldIcon);\r\n\r\n if (files.length === 0) {\r\n return this.createResult(CheckWorldIconsGeneratorTest.NoIconFound, `No World Icon found for ${pack.name}.`);\r\n } else if (files.length > 1) {\r\n const message = `Too many World Icons found for ${pack.name}. ${files.length} icons found, expected: 1`;\r\n return this.createResult(CheckWorldIconsGeneratorTest.MultipleIconsFound, message);\r\n }\r\n\r\n const file = files[0];\r\n const image = await parseImageData(file);\r\n\r\n if (!image) {\r\n const message = `Image (${file.name}) is not valid.`;\r\n return this.createResult(CheckWorldIconsGeneratorTest.IconNotValidImage, message);\r\n }\r\n\r\n const isEDUOffer = await pack.isEDUOffer();\r\n const isSizeCorrect = isEDUOffer ? isSizeCorrectForEDU : isSizeCorrectForBedrock;\r\n\r\n if (!isSizeCorrect({ width: image.ImageWidth, height: image.ImageHeight })) {\r\n return this.createResult(CheckWorldIconsGeneratorTest.IconNotValidSize, `Image (${file.name}) is not valid.`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private createResult(test: CheckWorldIconsGeneratorTest, message: string) {\r\n return new ProjectInfoItem(this.severity, this.id, test, message);\r\n }\r\n\r\n getTopicData(topicId: number): IProjectInfoTopicData | undefined {\r\n return {\r\n title: ProjectInfoUtilities.getTitleFromEnum(CheckWorldIconsGeneratorTest, topicId),\r\n };\r\n }\r\n\r\n summarize(): void {}\r\n}\r\n\r\nfunction isSizeCorrectForBedrock(size: { width: number; height: number }) {\r\n return size.width === DefaultBedrockImageWidth && size.height === DefaultBedrockImageHeight;\r\n}\r\n\r\nfunction isSizeCorrectForEDU(size: { width: number; height: number }) {\r\n const isEDUSize = size.width === DefaultEduImageWidth && size.height === DefaultEduImageHeight;\r\n return isEDUSize || isSizeCorrectForBedrock(size);\r\n}\r\n\r\nfunction shouldHaveWorldIcon(project: Project) {\r\n return !!project.items.find((item) => item.itemType === ProjectItemType.worldTemplateManifestJson);\r\n}\r\n"]}
|