@minecraft/creator-tools 0.9.1 → 0.10.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 +2 -1
- package/app/IProjectItemVariant.js +10 -0
- package/app/IProjectVariant.js +4 -0
- package/app/Project.js +183 -139
- package/app/ProjectAutogeneration.js +35 -33
- package/app/ProjectExporter.js +16 -16
- package/app/ProjectItem.js +178 -194
- package/app/ProjectItemManager.js +22 -21
- package/app/ProjectItemRelations.js +30 -30
- package/app/ProjectItemUtilities.js +94 -0
- package/app/ProjectItemVariant.js +254 -0
- package/app/ProjectStandard.js +8 -7
- package/app/ProjectUtilities.js +73 -39
- package/app/ProjectVariant.js +12 -0
- package/cli/TaskWorker.js +19 -0
- package/cli/index.js +1 -1
- package/core/Constants.js +1 -1
- package/core/Utilities.js +1 -0
- package/data/forms/biome/biome_definition.form.json +1887 -0
- package/data/forms/biome/biome_description.form.json +1 -1
- package/data/forms/biome/biome_json_file.form.json +233 -205
- package/data/forms/biome/biome_replacement.form.json +43 -0
- package/data/forms/biome/index.json +1 -1
- package/data/forms/biome/minecraft_capped_surface.form.json +16 -22
- package/data/forms/biome/minecraft_climate.form.json +8 -9
- package/data/forms/biome/minecraft_creature_spawn_probability.form.json +2 -3
- package/data/forms/biome/minecraft_frozen_ocean_surface.form.json +17 -23
- package/data/forms/biome/minecraft_mesa_surface.form.json +25 -33
- package/data/forms/biome/minecraft_mountain_parameters.form.json +11 -13
- package/data/forms/biome/minecraft_mountain_parameters_-_steep_material_adjustment_settings.form.json +70 -0
- package/data/forms/biome/minecraft_mountain_parameters_-_top_slide_settings.form.json +12 -0
- package/data/forms/biome/minecraft_multinoise_generation_rules.form.json +6 -7
- package/data/forms/biome/minecraft_overworld_generation_rules.form.json +6 -7
- package/data/forms/biome/minecraft_overworld_height.form.json +2 -3
- package/data/forms/biome/minecraft_replace_biomes.form.json +55 -0
- package/data/forms/biome/minecraft_surface_material_adjustments.form.json +21 -27
- package/data/forms/biome/minecraft_surface_material_adjustments_-_surface_adjustment_materials_settings.form.json +206 -0
- package/data/forms/biome/minecraft_surface_material_adjustments_-_surface_adjustment_settings.form.json +250 -0
- package/data/forms/biome/minecraft_surface_parameters.form.json +17 -23
- package/data/forms/biome/minecraft_swamp_surface.form.json +17 -23
- package/data/forms/biome/minecraft_tags.form.json +2 -3
- package/data/forms/block/culling_layer.form.json +11 -0
- package/data/forms/block/index.json +1 -1
- package/data/forms/block/minecraft_breathability.form.json +1 -0
- package/data/forms/block/minecraft_collision_box.form.json +19 -2
- package/data/forms/block/minecraft_crafting_table.form.json +14 -2
- package/data/forms/block/minecraft_custom_components.form.json +1 -0
- package/data/forms/block/minecraft_destructible_by_explosion.form.json +8 -2
- package/data/forms/block/minecraft_destructible_by_mining.form.json +34 -2
- package/data/forms/block/minecraft_geometry.form.json +40 -30
- package/data/forms/block/minecraft_item_visual.form.json +18 -2
- package/data/forms/block/minecraft_material_instances.form.json +1 -0
- package/data/forms/camera/index.json +1 -1
- package/data/forms/camera/v1_21_70_camerapresetfile.form.json +1 -1
- package/data/forms/camera/v1_21_80_camerapresetfile.form.json +282 -0
- package/data/forms/client_biome/client_biome_definition.form.json +300 -0
- package/data/forms/client_biome/client_biome_description.form.json +1 -1
- package/data/forms/client_biome/client_biome_json_file.form.json +33 -33
- package/data/forms/client_biome/foliage_color_map.form.json +12 -0
- package/data/forms/client_biome/grass_color_map.form.json +12 -0
- package/data/forms/client_biome/index.json +1 -1
- package/data/forms/client_biome/minecraft_ambient_sounds.form.json +3 -3
- package/data/forms/client_biome/minecraft_atmosphere_identifier.form.json +2 -3
- package/data/forms/client_biome/minecraft_biome_music.form.json +3 -4
- package/data/forms/client_biome/minecraft_color_grading_identifier.form.json +2 -3
- package/data/forms/client_biome/minecraft_dry_foliage_color.form.json +2 -3
- package/data/forms/client_biome/minecraft_fog_appearance.form.json +2 -3
- package/data/forms/client_biome/minecraft_foliage_appearance.form.json +2 -3
- package/data/forms/client_biome/minecraft_grass_appearance.form.json +2 -3
- package/data/forms/client_biome/minecraft_lighting_identifier.form.json +2 -3
- package/data/forms/client_biome/minecraft_sky_color.form.json +2 -3
- package/data/forms/client_biome/minecraft_water_appearance.form.json +3 -4
- package/data/forms/client_biome/minecraft_water_identifier.form.json +2 -3
- package/data/forms/client_block/block_culling.form.json +65 -0
- package/data/forms/client_block/index.json +1 -1
- package/data/forms/config/commands.form.json +2 -4
- package/data/forms/entity/filter_test.form.json +35 -0
- package/data/forms/entity/index.json +1 -1
- package/data/forms/entity/minecraft_interact.form.json +7 -0
- package/data/forms/entity/minecraft_leashable.form.json +7 -0
- package/data/forms/entityfilters/has_equipment_tag.form.json +173 -0
- package/data/forms/entityfilters/index.json +1 -1
- package/data/forms/index.json +1 -1
- package/data/forms/item/80.form.json +1428 -0
- package/data/forms/item/description.form.json +48 -0
- package/data/forms/item/index.json +1 -1
- package/data/forms/item/menu_category.form.json +30 -0
- package/data/forms/item/minecraft_block_placer.form.json +13 -11
- package/data/forms/item/minecraft_bundle_interaction.form.json +1 -1
- package/data/forms/item/minecraft_compostable.form.json +1 -1
- package/data/forms/item/minecraft_cooldown.form.json +2 -2
- package/data/forms/item/minecraft_damage_absorption.form.json +1 -1
- package/data/forms/item/minecraft_digger.form.json +7 -12
- package/data/forms/item/minecraft_display_name.form.json +1 -1
- package/data/forms/item/minecraft_durability.form.json +4 -7
- package/data/forms/item/minecraft_durability_sensor.form.json +4 -4
- package/data/forms/item/minecraft_durability_sensor_durability_threshold.form.json +4 -4
- package/data/forms/item/minecraft_dyeable.form.json +3 -3
- package/data/forms/item/minecraft_enchantable.form.json +2 -2
- package/data/forms/item/minecraft_entity_placer.form.json +16 -18
- package/data/forms/item/minecraft_food.form.json +58 -58
- package/data/forms/item/minecraft_icon.form.json +69 -7
- package/data/forms/item/minecraft_projectile.form.json +9 -3
- package/data/forms/item/minecraft_record.form.json +3 -3
- package/data/forms/item/minecraft_repairable.form.json +5 -9
- package/data/forms/item/minecraft_shooter.form.json +8 -9
- package/data/forms/item/minecraft_storage_item.form.json +4 -4
- package/data/forms/item/minecraft_storage_weight_limit.form.json +155 -3
- package/data/forms/item/minecraft_storage_weight_modifier.form.json +155 -3
- package/data/forms/item/minecraft_tags.form.json +1 -1
- package/data/forms/item/minecraft_throwable.form.json +6 -6
- package/data/forms/item/minecraft_use_modifiers.form.json +2 -2
- package/data/forms/item/minecraft_wearable.form.json +2 -2
- package/data/forms/misc/biome_replacement.form.json +43 -0
- package/data/forms/misc/bounds.form.json +35 -0
- package/data/forms/misc/class_v1_21_80_jigsawblockmetadata.form.json +59 -0
- package/data/forms/misc/crafting_catalog_category.form.json +8 -10
- package/data/forms/misc/crafting_catalog_document.form.json +9 -11
- package/data/forms/misc/crafting_catalog_group.form.json +90 -0
- package/data/forms/misc/crafting_catalog_group_icon.form.json +48 -0
- package/data/forms/misc/description.form.json +10 -0
- package/data/forms/misc/dimension.form.json +85 -0
- package/data/forms/misc/dimensiondocument.form.json +9 -24
- package/data/forms/misc/emitter_initialization.form.json +6 -15
- package/data/forms/misc/emitter_lifetime_events_proxy.form.json +95 -0
- package/data/forms/misc/emitter_lifetime_events_travel_distance_events.form.json +25 -0
- package/data/forms/misc/emitter_lifetime_expression.form.json +6 -15
- package/data/forms/misc/emitter_lifetime_looping.form.json +6 -15
- package/data/forms/misc/emitter_lifetime_once.form.json +3 -8
- package/data/forms/misc/emitter_local_space_proxy.form.json +20 -0
- package/data/forms/misc/emitter_rate_instant.form.json +3 -8
- package/data/forms/misc/emitter_rate_manual.form.json +3 -8
- package/data/forms/misc/emitter_rate_steady.form.json +6 -15
- package/data/forms/misc/emitter_shape_box.form.json +10 -24
- package/data/forms/misc/emitter_shape_custom.form.json +6 -15
- package/data/forms/misc/emitter_shape_disc.form.json +13 -31
- package/data/forms/misc/emitter_shape_entity_aabb.form.json +4 -10
- package/data/forms/misc/emitter_shape_point.form.json +6 -15
- package/data/forms/misc/emitter_shape_sphere.form.json +10 -24
- package/data/forms/misc/generation.form.json +10 -0
- package/data/forms/misc/index.json +1 -1
- package/data/forms/misc/minecraft_aim_assist_categories.form.json +9 -13
- package/data/forms/misc/minecraft_aim_assist_preset.form.json +8 -10
- package/data/forms/misc/minecraft_dimension_bounds.form.json +36 -0
- package/data/forms/misc/minecraft_generation.form.json +11 -0
- package/data/forms/misc/minecraft_jigsaw_structure_metadata.form.json +3 -5
- package/data/forms/misc/particle_appearance_billboard.form.json +6 -14
- package/data/forms/misc/particle_appearance_billboard_flipbook_data.form.json +11 -25
- package/data/forms/misc/particle_appearance_tinting.form.json +9 -23
- package/data/forms/misc/particle_curve_bezier_chain.form.json +5 -12
- package/data/forms/misc/particle_curve_bezier_chain_node_proxy.form.json +35 -0
- package/data/forms/misc/particle_curve_linear.form.json +10 -24
- package/data/forms/misc/particle_effect.form.json +274 -648
- package/data/forms/misc/particle_effect_basic_render_parameters.form.json +2 -4
- package/data/forms/misc/particle_effect_component.form.json +179 -428
- package/data/forms/misc/particle_effect_description.form.json +33 -0
- package/data/forms/misc/particle_event_node.form.json +72 -169
- package/data/forms/misc/particle_event_random_node.form.json +600 -0
- package/data/forms/misc/particle_initial_spin.form.json +6 -15
- package/data/forms/misc/particle_initialization.form.json +6 -15
- package/data/forms/misc/particle_lifetime_expression.form.json +6 -15
- package/data/forms/misc/particle_motion_collision.form.json +12 -28
- package/data/forms/misc/particle_motion_collision_event.form.json +15 -0
- package/data/forms/misc/particle_motion_dynamic.form.json +12 -29
- package/data/forms/misc/particle_motion_parametric.form.json +9 -22
- package/data/forms/misc/particle_sound_effect_event.form.json +10 -0
- package/data/forms/misc/particle_visual_effect_event.form.json +46 -0
- package/data/forms/molang/index.json +1 -0
- package/data/forms/molang/query_above_top_solid.form.json +6 -0
- package/data/forms/molang/query_actor_count.form.json +6 -0
- package/data/forms/molang/query_all.form.json +6 -0
- package/data/forms/molang/query_all_animations_finished.form.json +6 -0
- package/data/forms/molang/query_all_tags.form.json +6 -0
- package/data/forms/molang/query_anger_level.form.json +6 -0
- package/data/forms/molang/query_anim_time.form.json +6 -0
- package/data/forms/molang/query_any.form.json +6 -0
- package/data/forms/molang/query_any_animation_finished.form.json +6 -0
- package/data/forms/molang/query_any_tag.form.json +6 -0
- package/data/forms/molang/query_approx_eq.form.json +6 -0
- package/data/forms/molang/query_armor_color_slot.form.json +6 -0
- package/data/forms/molang/query_armor_damage_slot.form.json +6 -0
- package/data/forms/molang/query_armor_material_slot.form.json +6 -0
- package/data/forms/molang/query_armor_texture_slot.form.json +6 -0
- package/data/forms/molang/query_average_frame_time.form.json +6 -0
- package/data/forms/molang/query_block_face.form.json +6 -0
- package/data/forms/molang/query_block_has_all_tags.form.json +6 -0
- package/data/forms/molang/query_block_has_any_tag.form.json +6 -0
- package/data/forms/molang/query_block_neighbor_has_all_tags.form.json +6 -0
- package/data/forms/molang/query_block_neighbor_has_any_tag.form.json +6 -0
- package/data/forms/molang/query_block_property.form.json +6 -0
- package/data/forms/molang/query_block_state.form.json +6 -0
- package/data/forms/molang/query_blocking.form.json +6 -0
- package/data/forms/molang/query_body_x_rotation.form.json +6 -0
- package/data/forms/molang/query_body_y_rotation.form.json +6 -0
- package/data/forms/molang/query_bone_aabb.form.json +6 -0
- package/data/forms/molang/query_bone_orientation_matrix.form.json +6 -0
- package/data/forms/molang/query_bone_orientation_trs.form.json +6 -0
- package/data/forms/molang/query_bone_origin.form.json +6 -0
- package/data/forms/molang/query_bone_rotation.form.json +6 -0
- package/data/forms/molang/query_camera_distance_range_lerp.form.json +6 -0
- package/data/forms/molang/query_camera_rotation.form.json +6 -0
- package/data/forms/molang/query_can_climb.form.json +6 -0
- package/data/forms/molang/query_can_damage_nearby_mobs.form.json +6 -0
- package/data/forms/molang/query_can_dash.form.json +6 -0
- package/data/forms/molang/query_can_fly.form.json +6 -0
- package/data/forms/molang/query_can_power_jump.form.json +6 -0
- package/data/forms/molang/query_can_swim.form.json +6 -0
- package/data/forms/molang/query_can_walk.form.json +6 -0
- package/data/forms/molang/query_cape_flap_amount.form.json +6 -0
- package/data/forms/molang/query_cardinal_block_face_placed_on.form.json +6 -0
- package/data/forms/molang/query_cardinal_facing.form.json +6 -0
- package/data/forms/molang/query_cardinal_facing_2d.form.json +6 -0
- package/data/forms/molang/query_cardinal_player_facing.form.json +6 -0
- package/data/forms/molang/query_client_max_render_distance.form.json +6 -0
- package/data/forms/molang/query_client_memory_tier.form.json +6 -0
- package/data/forms/molang/query_combine_entities.form.json +6 -0
- package/data/forms/molang/query_cooldown_time.form.json +6 -0
- package/data/forms/molang/query_cooldown_time_remaining.form.json +6 -0
- package/data/forms/molang/query_count.form.json +6 -0
- package/data/forms/molang/query_current_squish_value.form.json +6 -0
- package/data/forms/molang/query_dash_cooldown_progress.form.json +6 -0
- package/data/forms/molang/query_day.form.json +6 -0
- package/data/forms/molang/query_death_ticks.form.json +6 -0
- package/data/forms/molang/query_debug_output.form.json +6 -0
- package/data/forms/molang/query_delta_time.form.json +6 -0
- package/data/forms/molang/query_distance_from_camera.form.json +6 -0
- package/data/forms/molang/query_effect_emitter_count.form.json +6 -0
- package/data/forms/molang/query_effect_particle_count.form.json +6 -0
- package/data/forms/molang/query_equipment_count.form.json +6 -0
- package/data/forms/molang/query_equipped_item_all_tags.form.json +6 -0
- package/data/forms/molang/query_equipped_item_any_tag.form.json +6 -0
- package/data/forms/molang/query_equipped_item_is_attachable.form.json +6 -0
- package/data/forms/molang/query_eye_target_x_rotation.form.json +6 -0
- package/data/forms/molang/query_eye_target_y_rotation.form.json +6 -0
- package/data/forms/molang/query_facing_target_to_range_attack.form.json +6 -0
- package/data/forms/molang/query_frame_alpha.form.json +6 -0
- package/data/forms/molang/query_get_actor_info_id.form.json +6 -0
- package/data/forms/molang/query_get_animation_frame.form.json +6 -0
- package/data/forms/molang/query_get_default_bone_pivot.form.json +6 -0
- package/data/forms/molang/query_get_equipped_item_name.form.json +6 -0
- package/data/forms/molang/query_get_locator_offset.form.json +6 -0
- package/data/forms/molang/query_get_name.form.json +6 -0
- package/data/forms/molang/query_get_root_locator_offset.form.json +6 -0
- package/data/forms/molang/query_graphics_mode_is_any.form.json +6 -0
- package/data/forms/molang/query_ground_speed.form.json +6 -0
- package/data/forms/molang/query_had_component_group.form.json +6 -0
- package/data/forms/molang/query_has_any_family.form.json +6 -0
- package/data/forms/molang/query_has_any_leashed_entity_of_type.form.json +6 -0
- package/data/forms/molang/query_has_armor_slot.form.json +6 -0
- package/data/forms/molang/query_has_biome_tag.form.json +6 -0
- package/data/forms/molang/query_has_block_property.form.json +6 -0
- package/data/forms/molang/query_has_block_state.form.json +6 -0
- package/data/forms/molang/query_has_cape.form.json +6 -0
- package/data/forms/molang/query_has_collision.form.json +6 -0
- package/data/forms/molang/query_has_dash_cooldown.form.json +6 -0
- package/data/forms/molang/query_has_gravity.form.json +6 -0
- package/data/forms/molang/query_has_head_gear.form.json +6 -0
- package/data/forms/molang/query_has_owner.form.json +6 -0
- package/data/forms/molang/query_has_player_rider.form.json +6 -0
- package/data/forms/molang/query_has_property.form.json +6 -0
- package/data/forms/molang/query_has_rider.form.json +6 -0
- package/data/forms/molang/query_has_target.form.json +6 -0
- package/data/forms/molang/query_head_roll_angle.form.json +6 -0
- package/data/forms/molang/query_head_x_rotation.form.json +6 -0
- package/data/forms/molang/query_head_y_rotation.form.json +6 -0
- package/data/forms/molang/query_health.form.json +6 -0
- package/data/forms/molang/query_heartbeat_interval.form.json +6 -0
- package/data/forms/molang/query_heartbeat_phase.form.json +6 -0
- package/data/forms/molang/query_heightmap.form.json +6 -0
- package/data/forms/molang/query_hurt_direction.form.json +6 -0
- package/data/forms/molang/query_hurt_time.form.json +6 -0
- package/data/forms/molang/query_in_range.form.json +6 -0
- package/data/forms/molang/query_invulnerable_ticks.form.json +6 -0
- package/data/forms/molang/query_is_admiring.form.json +6 -0
- package/data/forms/molang/query_is_alive.form.json +6 -0
- package/data/forms/molang/query_is_angry.form.json +6 -0
- package/data/forms/molang/query_is_attached.form.json +6 -0
- package/data/forms/molang/query_is_attached_to_entity.form.json +6 -0
- package/data/forms/molang/query_is_avoiding_block.form.json +6 -0
- package/data/forms/molang/query_is_avoiding_mobs.form.json +6 -0
- package/data/forms/molang/query_is_baby.form.json +6 -0
- package/data/forms/molang/query_is_breathing.form.json +6 -0
- package/data/forms/molang/query_is_bribed.form.json +6 -0
- package/data/forms/molang/query_is_carrying_block.form.json +6 -0
- package/data/forms/molang/query_is_casting.form.json +6 -0
- package/data/forms/molang/query_is_celebrating.form.json +6 -0
- package/data/forms/molang/query_is_celebrating_special.form.json +6 -0
- package/data/forms/molang/query_is_charged.form.json +6 -0
- package/data/forms/molang/query_is_charging.form.json +6 -0
- package/data/forms/molang/query_is_chested.form.json +6 -0
- package/data/forms/molang/query_is_cooldown_type.form.json +6 -0
- package/data/forms/molang/query_is_crawling.form.json +6 -0
- package/data/forms/molang/query_is_critical.form.json +6 -0
- package/data/forms/molang/query_is_croaking.form.json +6 -0
- package/data/forms/molang/query_is_dancing.form.json +6 -0
- package/data/forms/molang/query_is_delayed_attacking.form.json +6 -0
- package/data/forms/molang/query_is_digging.form.json +6 -0
- package/data/forms/molang/query_is_eating.form.json +6 -0
- package/data/forms/molang/query_is_eating_mob.form.json +6 -0
- package/data/forms/molang/query_is_elder.form.json +6 -0
- package/data/forms/molang/query_is_emerging.form.json +6 -0
- package/data/forms/molang/query_is_emoting.form.json +6 -0
- package/data/forms/molang/query_is_enchanted.form.json +6 -0
- package/data/forms/molang/query_is_feeling_happy.form.json +6 -0
- package/data/forms/molang/query_is_fire_immune.form.json +6 -0
- package/data/forms/molang/query_is_first_person.form.json +6 -0
- package/data/forms/molang/query_is_ghost.form.json +6 -0
- package/data/forms/molang/query_is_gliding.form.json +6 -0
- package/data/forms/molang/query_is_grazing.form.json +6 -0
- package/data/forms/molang/query_is_idling.form.json +6 -0
- package/data/forms/molang/query_is_ignited.form.json +6 -0
- package/data/forms/molang/query_is_illager_captain.form.json +6 -0
- package/data/forms/molang/query_is_in_contact_with_water.form.json +6 -0
- package/data/forms/molang/query_is_in_lava.form.json +6 -0
- package/data/forms/molang/query_is_in_love.form.json +6 -0
- package/data/forms/molang/query_is_in_ui.form.json +6 -0
- package/data/forms/molang/query_is_in_water.form.json +6 -0
- package/data/forms/molang/query_is_in_water_or_rain.form.json +6 -0
- package/data/forms/molang/query_is_interested.form.json +6 -0
- package/data/forms/molang/query_is_invisible.form.json +6 -0
- package/data/forms/molang/query_is_item_equipped.form.json +6 -0
- package/data/forms/molang/query_is_item_name_any.form.json +6 -0
- package/data/forms/molang/query_is_jump_goal_jumping.form.json +6 -0
- package/data/forms/molang/query_is_jumping.form.json +6 -0
- package/data/forms/molang/query_is_laying_down.form.json +6 -0
- package/data/forms/molang/query_is_laying_egg.form.json +6 -0
- package/data/forms/molang/query_is_leashed.form.json +6 -0
- package/data/forms/molang/query_is_levitating.form.json +6 -0
- package/data/forms/molang/query_is_lingering.form.json +6 -0
- package/data/forms/molang/query_is_local_player.form.json +6 -0
- package/data/forms/molang/query_is_moving.form.json +6 -0
- package/data/forms/molang/query_is_name_any.form.json +6 -0
- package/data/forms/molang/query_is_on_fire.form.json +6 -0
- package/data/forms/molang/query_is_on_ground.form.json +6 -0
- package/data/forms/molang/query_is_on_screen.form.json +6 -0
- package/data/forms/molang/query_is_onfire.form.json +6 -0
- package/data/forms/molang/query_is_orphaned.form.json +6 -0
- package/data/forms/molang/query_is_owner_identifier_any.form.json +6 -0
- package/data/forms/molang/query_is_persona_or_premium_skin.form.json +6 -0
- package/data/forms/molang/query_is_playing_dead.form.json +6 -0
- package/data/forms/molang/query_is_powered.form.json +6 -0
- package/data/forms/molang/query_is_pregnant.form.json +6 -0
- package/data/forms/molang/query_is_ram_attacking.form.json +6 -0
- package/data/forms/molang/query_is_resting.form.json +6 -0
- package/data/forms/molang/query_is_riding.form.json +6 -0
- package/data/forms/molang/query_is_rising.form.json +6 -0
- package/data/forms/molang/query_is_roaring.form.json +6 -0
- package/data/forms/molang/query_is_rolling.form.json +6 -0
- package/data/forms/molang/query_is_saddled.form.json +6 -0
- package/data/forms/molang/query_is_scared.form.json +6 -0
- package/data/forms/molang/query_is_scenting.form.json +6 -0
- package/data/forms/molang/query_is_searching.form.json +6 -0
- package/data/forms/molang/query_is_selected_item.form.json +6 -0
- package/data/forms/molang/query_is_shaking.form.json +6 -0
- package/data/forms/molang/query_is_shaking_wetness.form.json +6 -0
- package/data/forms/molang/query_is_sheared.form.json +6 -0
- package/data/forms/molang/query_is_shield_powered.form.json +6 -0
- package/data/forms/molang/query_is_silent.form.json +6 -0
- package/data/forms/molang/query_is_sitting.form.json +6 -0
- package/data/forms/molang/query_is_sleeping.form.json +6 -0
- package/data/forms/molang/query_is_sneaking.form.json +6 -0
- package/data/forms/molang/query_is_sneezing.form.json +6 -0
- package/data/forms/molang/query_is_sniffing.form.json +6 -0
- package/data/forms/molang/query_is_sonic_boom.form.json +6 -0
- package/data/forms/molang/query_is_spectator.form.json +6 -0
- package/data/forms/molang/query_is_sprinting.form.json +6 -0
- package/data/forms/molang/query_is_stackable.form.json +6 -0
- package/data/forms/molang/query_is_stalking.form.json +6 -0
- package/data/forms/molang/query_is_standing.form.json +6 -0
- package/data/forms/molang/query_is_stunned.form.json +6 -0
- package/data/forms/molang/query_is_swimming.form.json +6 -0
- package/data/forms/molang/query_is_tamed.form.json +6 -0
- package/data/forms/molang/query_is_transforming.form.json +6 -0
- package/data/forms/molang/query_is_using_item.form.json +6 -0
- package/data/forms/molang/query_is_wall_climbing.form.json +6 -0
- package/data/forms/molang/query_item_in_use_duration.form.json +6 -0
- package/data/forms/molang/query_item_is_charged.form.json +6 -0
- package/data/forms/molang/query_item_max_use_duration.form.json +6 -0
- package/data/forms/molang/query_item_remaining_use_duration.form.json +6 -0
- package/data/forms/molang/query_item_slot_to_bone_name.form.json +6 -0
- package/data/forms/molang/query_key_frame_lerp_time.form.json +6 -0
- package/data/forms/molang/query_last_frame_time.form.json +6 -0
- package/data/forms/molang/query_last_hit_by_player.form.json +6 -0
- package/data/forms/molang/query_last_input_mode_is_any.form.json +6 -0
- package/data/forms/molang/query_leashed_entity_count.form.json +6 -0
- package/data/forms/molang/query_lie_amount.form.json +6 -0
- package/data/forms/molang/query_life_span.form.json +6 -0
- package/data/forms/molang/query_life_time.form.json +6 -0
- package/data/forms/molang/query_lod_index.form.json +6 -0
- package/data/forms/molang/query_log.form.json +6 -0
- package/data/forms/molang/query_main_hand_item_max_duration.form.json +6 -0
- package/data/forms/molang/query_main_hand_item_use_duration.form.json +6 -0
- package/data/forms/molang/query_mark_variant.form.json +6 -0
- package/data/forms/molang/query_max_durability.form.json +6 -0
- package/data/forms/molang/query_max_health.form.json +6 -0
- package/data/forms/molang/query_max_trade_tier.form.json +6 -0
- package/data/forms/molang/query_maximum_frame_time.form.json +6 -0
- package/data/forms/molang/query_minimum_frame_time.form.json +6 -0
- package/data/forms/molang/query_model_scale.form.json +6 -0
- package/data/forms/molang/query_modified_distance_moved.form.json +6 -0
- package/data/forms/molang/query_modified_move_speed.form.json +6 -0
- package/data/forms/molang/query_moon_brightness.form.json +6 -0
- package/data/forms/molang/query_moon_phase.form.json +6 -0
- package/data/forms/molang/query_movement_direction.form.json +6 -0
- package/data/forms/molang/query_noise.form.json +6 -0
- package/data/forms/molang/query_on_fire_time.form.json +6 -0
- package/data/forms/molang/query_out_of_control.form.json +6 -0
- package/data/forms/molang/query_overlay_alpha.form.json +6 -0
- package/data/forms/molang/query_owner_identifier.form.json +6 -0
- package/data/forms/molang/query_player_level.form.json +6 -0
- package/data/forms/molang/query_position.form.json +6 -0
- package/data/forms/molang/query_position_delta.form.json +6 -0
- package/data/forms/molang/query_previous_squish_value.form.json +6 -0
- package/data/forms/molang/query_property.form.json +6 -0
- package/data/forms/molang/query_relative_block_has_all_tags.form.json +6 -0
- package/data/forms/molang/query_relative_block_has_any_tag.form.json +6 -0
- package/data/forms/molang/query_remaining_durability.form.json +6 -0
- package/data/forms/molang/query_ride_body_x_rotation.form.json +6 -0
- package/data/forms/molang/query_ride_body_y_rotation.form.json +6 -0
- package/data/forms/molang/query_ride_head_x_rotation.form.json +6 -0
- package/data/forms/molang/query_ride_head_y_rotation.form.json +6 -0
- package/data/forms/molang/query_rider_body_x_rotation.form.json +6 -0
- package/data/forms/molang/query_rider_body_y_rotation.form.json +6 -0
- package/data/forms/molang/query_rider_head_x_rotation.form.json +6 -0
- package/data/forms/molang/query_rider_head_y_rotation.form.json +6 -0
- package/data/forms/molang/query_roll_counter.form.json +6 -0
- package/data/forms/molang/query_rotation_to_camera.form.json +6 -0
- package/data/forms/molang/query_scoreboard.form.json +6 -0
- package/data/forms/molang/query_server_memory_tier.form.json +6 -0
- package/data/forms/molang/query_shake_angle.form.json +6 -0
- package/data/forms/molang/query_shake_time.form.json +6 -0
- package/data/forms/molang/query_shield_blocking_bob.form.json +6 -0
- package/data/forms/molang/query_show_bottom.form.json +6 -0
- package/data/forms/molang/query_sit_amount.form.json +6 -0
- package/data/forms/molang/query_skin_id.form.json +6 -0
- package/data/forms/molang/query_sleep_rotation.form.json +6 -0
- package/data/forms/molang/query_sneeze_counter.form.json +6 -0
- package/data/forms/molang/query_spellcolor.form.json +6 -0
- package/data/forms/molang/query_standing_scale.form.json +6 -0
- package/data/forms/molang/query_state_time.form.json +6 -0
- package/data/forms/molang/query_structural_integrity.form.json +6 -0
- package/data/forms/molang/query_surface_particle_color.form.json +6 -0
- package/data/forms/molang/query_surface_particle_texture_coordinate.form.json +6 -0
- package/data/forms/molang/query_surface_particle_texture_size.form.json +6 -0
- package/data/forms/molang/query_swell_amount.form.json +6 -0
- package/data/forms/molang/query_swelling_dir.form.json +6 -0
- package/data/forms/molang/query_swim_amount.form.json +6 -0
- package/data/forms/molang/query_tail_angle.form.json +6 -0
- package/data/forms/molang/query_target_x_rotation.form.json +6 -0
- package/data/forms/molang/query_target_y_rotation.form.json +6 -0
- package/data/forms/molang/query_texture_frame_index.form.json +6 -0
- package/data/forms/molang/query_time_of_day.form.json +6 -0
- package/data/forms/molang/query_time_since_last_vibration_detection.form.json +6 -0
- package/data/forms/molang/query_time_stamp.form.json +6 -0
- package/data/forms/molang/query_timer_flag_1.form.json +6 -0
- package/data/forms/molang/query_timer_flag_2.form.json +6 -0
- package/data/forms/molang/query_timer_flag_3.form.json +6 -0
- package/data/forms/molang/query_total_emitter_count.form.json +6 -0
- package/data/forms/molang/query_total_particle_count.form.json +6 -0
- package/data/forms/molang/query_touch_only_affects_hotbar.form.json +6 -0
- package/data/forms/molang/query_trade_tier.form.json +6 -0
- package/data/forms/molang/query_unhappy_counter.form.json +6 -0
- package/data/forms/molang/query_variant.form.json +6 -0
- package/data/forms/molang/query_vertical_speed.form.json +6 -0
- package/data/forms/molang/query_walk_distance.form.json +6 -0
- package/data/forms/molang/query_wing_flap_position.form.json +6 -0
- package/data/forms/molang/query_wing_flap_speed.form.json +6 -0
- package/data/forms/molang/query_yaw_speed.form.json +6 -0
- package/data/forms/spawn/filter_test.form.json +35 -0
- package/data/forms/spawn/index.json +1 -1
- package/data/forms/world/feature_rule_conditions.form.json +115 -0
- package/data/forms/world/feature_rule_definition.form.json +35 -47
- package/data/forms/world/feature_rule_description.form.json +17 -0
- package/data/forms/world/filter_test.form.json +35 -0
- package/data/forms/world/index.json +1 -1
- package/data/forms/world/jigsawstructure.form.json +22 -25
- package/data/forms/world/scatter_params.form.json +18 -25
- package/data/mci/release.mci.json +1 -1
- package/docgen/FormJsonDocumentationGenerator.js +20 -10
- package/docgen/FormMarkdownDocumentationGenerator.js +13 -3
- package/info/AnimationResourceInfoGenerator.js +2 -2
- package/info/CooperativeAddOnItemRequirementsGenerator.js +17 -17
- package/info/CooperativeAddOnRequirementsGenerator.js +3 -3
- package/info/GeneratorRegistrations.js +2 -0
- package/info/GeometryInfoGenerator.js +3 -3
- package/info/IProjectInfoData.js +1 -0
- package/info/PackInfoGenerator.js +11 -11
- package/info/ProjectInfoSet.js +10 -1
- package/info/ProjectInfoUtilities.js +11 -0
- package/info/SchemaItemInfoGenerator.js +4 -2
- package/info/SharingInfoGenerator.js +101 -0
- package/info/StrictPlatformInfoGenerator.js +4 -4
- package/info/TextureImageInfoGenerator.js +54 -26
- package/info/TextureInfoGenerator.js +19 -19
- package/info/TextureReferenceInfoGenerator.js +6 -6
- package/info/TypesInfoGenerator.js +8 -8
- package/info/WorldDataInfoGenerator.js +6 -6
- package/integrations/BlockbenchModel.js +33 -32
- package/local/HttpServer.js +8 -9
- 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/IProjectData.js.map +1 -1
- package/maps/app/IProjectItemData.js.map +1 -1
- package/maps/app/IProjectItemVariant.js.map +1 -0
- package/maps/app/IProjectVariant.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/ProjectItemManager.js.map +1 -1
- package/maps/app/ProjectItemRelations.js.map +1 -1
- package/maps/app/ProjectItemUtilities.js.map +1 -1
- package/maps/app/ProjectItemVariant.js.map +1 -0
- package/maps/app/ProjectStandard.js.map +1 -1
- package/maps/app/ProjectUtilities.js.map +1 -1
- package/maps/app/ProjectVariant.js.map +1 -0
- 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/Utilities.js.map +1 -1
- package/maps/docgen/FormJsonDocumentationGenerator.js.map +1 -1
- package/maps/docgen/FormMarkdownDocumentationGenerator.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/IProjectInfoData.js.map +1 -1
- package/maps/info/PackInfoGenerator.js.map +1 -1
- package/maps/info/ProjectInfoSet.js.map +1 -1
- package/maps/info/ProjectInfoUtilities.js.map +1 -1
- package/maps/info/SchemaItemInfoGenerator.js.map +1 -1
- package/maps/info/SharingInfoGenerator.js.map +1 -0
- 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/WorldDataInfoGenerator.js.map +1 -1
- package/maps/integrations/BlockbenchModel.js.map +1 -1
- package/maps/local/HttpServer.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/AttachableResourceDefinition.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/ItemTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/ItemTypeBehaviorDefinition.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/MinecraftDefinitions.js.map +1 -1
- package/maps/minecraft/MusicDefinitionCatalogDefinition.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/BasicValidators.js.map +1 -1
- package/maps/test/CartoTest.js.map +1 -1
- package/minecraft/AttachableResourceDefinition.js +10 -10
- package/minecraft/BehaviorManifestDefinition.js +6 -6
- package/minecraft/BlockTypeDefinition.js +10 -10
- package/minecraft/BlocksCatalogDefinition.js +2 -2
- package/minecraft/Database.js +1 -1
- package/minecraft/EntityTypeDefinition.js +4 -4
- package/minecraft/EntityTypeResourceDefinition.js +12 -12
- package/minecraft/FlipbookTextureCatalogDefinition.js +4 -4
- package/minecraft/ItemTextureCatalogDefinition.js +2 -2
- package/minecraft/ItemTypeBehaviorDefinition.js +7 -0
- package/minecraft/JsonUIResourceDefinition.js +2 -2
- package/minecraft/LocManager.js +2 -2
- package/minecraft/MCWorld.js +4 -4
- package/minecraft/MinecraftDefinitions.js +23 -21
- package/minecraft/MusicDefinitionCatalogDefinition.js +2 -2
- package/minecraft/ParticleEffectResourceDefinition.js +4 -4
- package/minecraft/ResourceManifestDefinition.js +17 -3
- package/minecraft/SoundCatalogDefinition.js +6 -5
- package/minecraft/SoundDefinitionCatalogDefinition.js +4 -4
- package/minecraft/TerrainTextureCatalogDefinition.js +2 -2
- package/package.json +1 -1
- package/storage/BasicValidators.js +20 -9
- package/data/forms/clientbiome/index.json +0 -1
package/maps/app/Carto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/app/Carto.ts"],"names":[],"mappings":"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","file":"../../app/Carto.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport IStorage from \"../storage/IStorage\";\r\nimport ICartoData, {\r\n CartoEditorViewMode,\r\n RemoteServerAccessLevel,\r\n MinecraftFlavor,\r\n DedicatedServerMode,\r\n MinecraftGameConnectionMode,\r\n MinecraftTrack,\r\n WindowState,\r\n} from \"./ICartoData\";\r\nimport Project from \"./Project\";\r\nimport { EventDispatcher } from \"ste-events\";\r\nimport { ProjectFocus, ProjectScriptLanguage } from \"./IProjectData\";\r\nimport IStatus, { StatusTopic, StatusType } from \"./Status\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport Utilities from \"../core/Utilities\";\r\nimport GitHubManager from \"../github/GitHubManager\";\r\nimport IGallery from \"./IGallery\";\r\nimport axios from \"axios\";\r\nimport Log from \"../core/Log\";\r\nimport AppServiceProxy, { AppServiceProxyCommands } from \"../core/AppServiceProxy\";\r\nimport CommandRunner from \"./CommandRunner\";\r\nimport ILocalUtilities from \"../local/ILocalUtilities\";\r\nimport IMinecraft from \"./IMinecraft\";\r\nimport CartoApp, { HostType } from \"./CartoApp\";\r\nimport MinecraftPush from \"./MinecraftPush\";\r\nimport { GameType, Generator } from \"../minecraft/WorldLevelDat\";\r\nimport { BackupType } from \"../minecraft/IWorldSettings\";\r\nimport Package from \"./Package\";\r\nimport CommandRegistry from \"./CommandRegistry\";\r\nimport ZipStorage from \"../storage/ZipStorage\";\r\nimport { MaxItemTypes, ProjectItemType } from \"./IProjectItemData\";\r\nimport DeploymentStorageMinecraft from \"./DeploymentStorageMinecraft\";\r\nimport MinecraftUtilities from \"../minecraft/MinecraftUtilities\";\r\nimport { GalleryItemType } from \"./IGalleryItem\";\r\nimport ProjectItemRelations from \"./ProjectItemRelations\";\r\n\r\nexport enum CartoMinecraftState {\r\n none = 0,\r\n initializing = 1, // for phserver, this is starting to auto-download\r\n // for remote server, this is authenticating\r\n // for web sockets, this is opening up the web socket to receive connections from a client\r\n initialized = 2,\r\n preparing = 3,\r\n prepared = 4,\r\n starting = 5, // for phserver, the server is starting\r\n // for remote server, this is creating a session on a socket\r\n // for web sockets, note you have to wait for external connections to come in.\r\n started = 6, // for phserver, the server is up and ready\r\n // for remote server, the session is ready and initial status has been established\r\n // for web sockets, an external client has connected in\r\n stopping = 7,\r\n stopped = 8,\r\n error = 9,\r\n newMinecraft = 10,\r\n disconnected = 11,\r\n}\r\n\r\nexport enum CartoMinecraftErrorStatus {\r\n none = 0,\r\n actionInProgress = 1,\r\n serverUnavailable = 2,\r\n serverError = 3,\r\n loginFailed = 4,\r\n generalError = 5,\r\n configuration = 6,\r\n}\r\n\r\nexport const CartoTargetStrings = [\r\n \"Latest Minecraft Bedrock\",\r\n \"Latest Minecraft Bedrock preview\",\r\n \"Latest Minecraft Education\",\r\n \"Latest Minecraft Education preview\",\r\n];\r\n\r\nexport const SidePaneMaxWidth = 880;\r\nexport const SidePaneMinWidth = 280;\r\n\r\nexport default class Carto {\r\n private _isLoaded: boolean;\r\n private _userGitHub: GitHubManager | undefined;\r\n private _anonGitHub: GitHubManager | undefined;\r\n\r\n contentRoot = \"\";\r\n\r\n processHostedMinecraft: IMinecraft | undefined;\r\n deploymentStorageMinecraft: IMinecraft | undefined;\r\n gameMinecraft: IMinecraft | undefined;\r\n remoteMinecraft: IMinecraft | undefined;\r\n activeMinecraft: IMinecraft | undefined;\r\n\r\n prefsStorage: IStorage;\r\n projectsStorage: IStorage;\r\n deploymentStorage: IStorage | null;\r\n previewDeploymentStorage: IStorage | null;\r\n worldStorage: IStorage | null;\r\n packStorage: IStorage | null;\r\n workingStorage: IStorage | null;\r\n\r\n localFolderExists: ((path: string) => Promise<boolean>) | undefined;\r\n localFileExists: ((path: string) => Promise<boolean>) | undefined;\r\n ensureLocalFolder: ((path: string) => IFolder) | undefined;\r\n createMinecraft: ((flavor: MinecraftFlavor, carto: Carto) => IMinecraft | undefined) | undefined;\r\n canCreateMinecraft: ((flavor: MinecraftFlavor) => boolean) | undefined;\r\n\r\n private _deployBehaviorPacksFolder: IFolder | null;\r\n private _deployResourcePacksFolder: IFolder | null;\r\n\r\n private _pendingPackLoadRequests: ((value: unknown) => void)[] = [];\r\n private _arePacksLoading: boolean = false;\r\n\r\n local: ILocalUtilities | undefined;\r\n #data: ICartoData;\r\n projects: Project[];\r\n status: IStatus[];\r\n activeOperations: IStatus[];\r\n\r\n packs?: Package[];\r\n\r\n mcLogs: { [name: string]: string[] | undefined } = {};\r\n\r\n _gallery?: IGallery;\r\n _galleryLoaded: boolean = false;\r\n isDeployingToComMojang: boolean = false;\r\n\r\n hasAttemptedPersistentBrowserStorageSwitch: boolean = false;\r\n\r\n private _onDeploymentStorageChanged = new EventDispatcher<Carto, IStorage | null>();\r\n private _onMinecraftStateChanged = new EventDispatcher<IMinecraft, CartoMinecraftState>();\r\n private _onMinecraftRefreshed = new EventDispatcher<IMinecraft, CartoMinecraftState>();\r\n private _onPropertyChanged = new EventDispatcher<Carto, string>();\r\n private _onLoaded = new EventDispatcher<Carto, Carto>();\r\n private _onStatusAdded = new EventDispatcher<Carto, IStatus>();\r\n private _onOperationCompleted = new EventDispatcher<Carto, number>();\r\n private _onStatusAddedAsync: ((carto: Carto, status: IStatus) => Promise<void>)[] = [];\r\n private _onGalleryLoaded = new EventDispatcher<Carto, IGallery | undefined>();\r\n\r\n public get isLoaded() {\r\n return this._isLoaded;\r\n }\r\n\r\n public get collapsedTypes() {\r\n if (!this.#data.collapsedTypes) {\r\n this.#data.collapsedTypes = [];\r\n }\r\n\r\n return this.#data.collapsedTypes;\r\n }\r\n\r\n public set collapsedTypes(newCollapsedTypes: number[]) {\r\n this.#data.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n public get worldSettings() {\r\n return this.#data.worldSettings;\r\n }\r\n\r\n public get editorWorldSettings() {\r\n return this.#data.editorWorldSettings;\r\n }\r\n\r\n public get activeMinecraftState() {\r\n if (this.activeMinecraft === undefined) {\r\n return CartoMinecraftState.none;\r\n }\r\n\r\n return this.activeMinecraft.state;\r\n }\r\n\r\n public get onMinecraftStateChanged() {\r\n return this._onMinecraftStateChanged.asEvent();\r\n }\r\n\r\n public get onDeploymentStorageChanged() {\r\n return this._onDeploymentStorageChanged.asEvent();\r\n }\r\n\r\n public get formatBeforeSave() {\r\n if (this.#data.formatBeforeSave === undefined) {\r\n return true;\r\n }\r\n\r\n return this.#data.formatBeforeSave;\r\n }\r\n\r\n public set formatBeforeSave(newValue: boolean) {\r\n this.#data.formatBeforeSave = newValue;\r\n }\r\n\r\n public get conversionJarPath() {\r\n return this.#data.conversionJarPath;\r\n }\r\n\r\n public set conversionJarPath(newValue: string | undefined) {\r\n this.#data.conversionJarPath = newValue;\r\n }\r\n\r\n public get preferredTextSize() {\r\n if (this.#data.preferredTextSize === undefined) {\r\n return 16;\r\n }\r\n\r\n return this.#data.preferredTextSize;\r\n }\r\n\r\n public set preferredTextSize(newValue: number) {\r\n this.#data.preferredTextSize = newValue;\r\n }\r\n\r\n public get itemSidePaneWidth() {\r\n if (this.#data.itemSidePaneWidth === undefined) {\r\n return 300;\r\n }\r\n\r\n if (this.#data.itemSidePaneWidth < SidePaneMinWidth) {\r\n return SidePaneMinWidth;\r\n }\r\n\r\n if (this.#data.itemSidePaneWidth > SidePaneMaxWidth) {\r\n return SidePaneMaxWidth;\r\n }\r\n\r\n return this.#data.itemSidePaneWidth;\r\n }\r\n\r\n public set itemSidePaneWidth(newValue: number) {\r\n this.#data.itemSidePaneWidth = newValue;\r\n }\r\n\r\n public get preferredSuite() {\r\n return this.#data.preferredSuite;\r\n }\r\n\r\n public set preferredSuite(newValue: number | undefined) {\r\n this.#data.preferredSuite = newValue;\r\n }\r\n\r\n get track(): MinecraftTrack | undefined {\r\n return this.#data.track;\r\n }\r\n\r\n set track(newTrack: MinecraftTrack | undefined) {\r\n if (newTrack !== this.#data.track) {\r\n this.#data.track = newTrack;\r\n this._onPropertyChanged.dispatch(this, \"track\");\r\n }\r\n }\r\n\r\n get effectiveTrack(): MinecraftTrack {\r\n if (this.#data.track !== undefined) {\r\n return this.#data.track;\r\n }\r\n\r\n return MinecraftTrack.main;\r\n }\r\n\r\n public get useEditor() {\r\n return this.#data.useEditor;\r\n }\r\n\r\n public set useEditor(newUseEditor: boolean | undefined) {\r\n if (newUseEditor !== this.#data.useEditor) {\r\n this.#data.useEditor = newUseEditor;\r\n }\r\n }\r\n\r\n public get windowX() {\r\n if (this.#data.windowX === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowX;\r\n }\r\n\r\n public set windowX(newVal: number | undefined) {\r\n this.#data.windowX = newVal;\r\n }\r\n public get windowY() {\r\n if (this.#data.windowY === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowY;\r\n }\r\n\r\n public set windowY(newVal: number | undefined) {\r\n this.#data.windowY = newVal;\r\n }\r\n\r\n public get windowWidth() {\r\n if (this.#data.windowWidth === undefined) {\r\n return 1200;\r\n }\r\n\r\n return this.#data.windowWidth;\r\n }\r\n\r\n public set windowWidth(newVal: number | undefined) {\r\n this.#data.windowWidth = newVal;\r\n }\r\n\r\n public get windowHeight() {\r\n if (this.#data.windowHeight === undefined) {\r\n return 900;\r\n }\r\n return this.#data.windowHeight;\r\n }\r\n\r\n public set windowHeight(newVal: number | undefined) {\r\n this.#data.windowHeight = newVal;\r\n }\r\n\r\n public get windowSlot() {\r\n if (this.#data.windowSlot === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowSlot;\r\n }\r\n\r\n public set windowSlot(newVal: number | undefined) {\r\n this.#data.windowSlot = newVal;\r\n }\r\n\r\n get creator(): string | undefined {\r\n return this.#data.creator;\r\n }\r\n\r\n set creator(newCreator: string | undefined) {\r\n if (this.#data.creator !== newCreator) {\r\n this.#data.creator = newCreator;\r\n\r\n this._onPropertyChanged.dispatch(this, \"creator\");\r\n }\r\n }\r\n\r\n public get windowState() {\r\n if (this.#data.windowState === undefined) {\r\n return WindowState.regular;\r\n }\r\n\r\n return this.#data.windowState;\r\n }\r\n\r\n public set windowState(newVal: number | undefined) {\r\n this.#data.windowState = newVal;\r\n }\r\n\r\n public get lastActiveMinecraftFlavor() {\r\n return this.#data.lastActiveMinecraftFlavor;\r\n }\r\n\r\n public set lastActiveMinecraftFlavor(lastActiveMinecraftFlavor: MinecraftFlavor | undefined) {\r\n if (lastActiveMinecraftFlavor !== this.#data.lastActiveMinecraftFlavor) {\r\n this.#data.lastActiveMinecraftFlavor = lastActiveMinecraftFlavor;\r\n }\r\n }\r\n\r\n public get remoteServerUrl() {\r\n if (this.#data.remoteServerUrl === undefined && CartoApp.baseUrl) {\r\n return Utilities.getBaseUrl(CartoApp.baseUrl);\r\n }\r\n\r\n return this.#data.remoteServerUrl;\r\n }\r\n\r\n public get fullRemoteServerUrl() {\r\n if (!this.remoteServerUrl) {\r\n return undefined;\r\n }\r\n\r\n let url = this.remoteServerUrl.toLowerCase();\r\n\r\n if (!url.startsWith(\"http\") && url.indexOf(\"//\") < 0) {\r\n if (url.indexOf(\"localhost\") >= 0) {\r\n url = \"http://\" + url;\r\n } else {\r\n url = \"https://\" + url;\r\n }\r\n }\r\n\r\n url = Utilities.ensureEndsWithSlash(url);\r\n\r\n return url;\r\n }\r\n\r\n public set remoteServerUrl(newPath: string | undefined) {\r\n if (newPath !== this.#data.remoteServerUrl) {\r\n this.#data.remoteServerUrl = newPath;\r\n }\r\n }\r\n\r\n public get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula() {\r\n return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula;\r\n }\r\n\r\n public set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula(\r\n newPort: boolean | undefined\r\n ) {\r\n this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula = newPort;\r\n }\r\n\r\n public get dedicatedServerSlotCount() {\r\n return this.#data.dedicatedServerSlotCount;\r\n }\r\n\r\n public set dedicatedServerSlotCount(newPort: number | undefined) {\r\n this.#data.dedicatedServerSlotCount = newPort;\r\n }\r\n\r\n public get dedicatedServerMode() {\r\n if (this.#data.dedicatedServerMode === undefined) {\r\n return DedicatedServerMode.auto;\r\n }\r\n\r\n return this.#data.dedicatedServerMode;\r\n }\r\n\r\n public set dedicatedServerMode(newMode: DedicatedServerMode | undefined) {\r\n this.#data.dedicatedServerMode = newMode;\r\n }\r\n\r\n public get dedicatedServerPath() {\r\n return this.#data.dedicatedServerPath;\r\n }\r\n\r\n public set minecraftGameMode(newMode: MinecraftGameConnectionMode | undefined) {\r\n this.#data.webSocketMode = newMode;\r\n }\r\n\r\n public get minecraftGameMode() {\r\n return this.#data.webSocketMode;\r\n }\r\n\r\n public set dedicatedServerPath(newPath: string | undefined) {\r\n this.#data.dedicatedServerPath = newPath;\r\n }\r\n\r\n public get remoteServerPort() {\r\n if (this.#data.remoteServerPort === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.remoteServerPort;\r\n }\r\n\r\n public set remoteServerPort(newPort: number | undefined) {\r\n this.#data.remoteServerPort = newPort;\r\n }\r\n\r\n public get remoteServerAccessLevel() {\r\n return this.#data.remoteServerAccessLevel;\r\n }\r\n\r\n public set remoteServerAccessLevel(newAccessLevel: RemoteServerAccessLevel | undefined) {\r\n this.#data.remoteServerAccessLevel = newAccessLevel;\r\n }\r\n\r\n public get remoteServerPasscode() {\r\n return this.#data.remoteServerPasscode;\r\n }\r\n\r\n public set remoteServerPasscode(newPath: string | undefined) {\r\n this.#data.remoteServerPasscode = newPath;\r\n }\r\n\r\n public get remoteServerAuthToken() {\r\n return this.#data.remoteServerAuthToken;\r\n }\r\n\r\n public set remoteServerAuthToken(newPath: string | undefined) {\r\n this.#data.remoteServerAuthToken = newPath;\r\n }\r\n\r\n public get editorViewMode() {\r\n if (this.#data.editorViewMode === undefined) {\r\n return CartoEditorViewMode.itemsOnLeft;\r\n }\r\n\r\n return this.#data.editorViewMode;\r\n }\r\n\r\n public set editorViewMode(newViewMode: CartoEditorViewMode) {\r\n this.#data.editorViewMode = newViewMode;\r\n }\r\n\r\n public get gallery() {\r\n return this._gallery;\r\n }\r\n\r\n public get galleryLoaded() {\r\n return this._galleryLoaded;\r\n }\r\n\r\n public get userGitHub(): GitHubManager {\r\n if (this._userGitHub === undefined) {\r\n this._userGitHub = new GitHubManager(this.prefsStorage.rootFolder.ensureFile(\"github.json\"));\r\n }\r\n\r\n return this._userGitHub;\r\n }\r\n\r\n public get anonGitHub(): GitHubManager {\r\n if (this._anonGitHub === undefined) {\r\n this._anonGitHub = new GitHubManager();\r\n }\r\n\r\n return this._anonGitHub;\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get onGalleryLoaded() {\r\n return this._onGalleryLoaded.asEvent();\r\n }\r\n\r\n public get onPropertyChanged() {\r\n return this._onPropertyChanged.asEvent();\r\n }\r\n\r\n public get onStatusAdded() {\r\n return this._onStatusAdded.asEvent();\r\n }\r\n\r\n public get onOperationCompleted() {\r\n return this._onOperationCompleted.asEvent();\r\n }\r\n\r\n public get successfullyConnectedWebSocketToMinecraft() {\r\n if (this.#data.successfullyConnectedWebSocketToMinecraft === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyConnectedWebSocketToMinecraft;\r\n }\r\n\r\n public set successfullyConnectedWebSocketToMinecraft(newValue: boolean) {\r\n this.#data.successfullyConnectedWebSocketToMinecraft = newValue;\r\n }\r\n\r\n public get successfullyStartedMinecraftServer() {\r\n if (this.#data.successfullyStartedMinecraftServer === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyStartedMinecraftServer;\r\n }\r\n\r\n public set successfullyStartedMinecraftServer(newValue: boolean) {\r\n this.#data.successfullyStartedMinecraftServer = newValue;\r\n }\r\n\r\n public get successfullyConnectedToRemoteMinecraft() {\r\n if (this.#data.successfullyConnectedToRemoteMinecraft === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyConnectedToRemoteMinecraft;\r\n }\r\n\r\n public set successfullyConnectedToRemoteMinecraft(newValue: boolean) {\r\n this.#data.successfullyConnectedToRemoteMinecraft = newValue;\r\n }\r\n\r\n public get defaultMinecraftFlavor() {\r\n if (this.#data.lastActiveMinecraftFlavor === undefined) {\r\n if (CartoApp.isAppServiceWeb) {\r\n return MinecraftFlavor.processHostedProxy;\r\n } else {\r\n return MinecraftFlavor.remote;\r\n }\r\n }\r\n\r\n return this.#data.lastActiveMinecraftFlavor;\r\n }\r\n\r\n public subscribeStatusAddedAsync(fn: (carto: Carto, status: IStatus) => Promise<void>) {\r\n this._onStatusAddedAsync.push(fn);\r\n }\r\n\r\n public unsubscribeStatusAddedAsync(fn: (carto: Carto, status: IStatus) => Promise<void>) {\r\n let newStatusAddedArr: ((carto: Carto, status: IStatus) => Promise<void>)[] = [];\r\n\r\n for (let i = 0; i < this._onStatusAddedAsync.length; i++) {\r\n if (this._onStatusAddedAsync[i] !== fn) {\r\n newStatusAddedArr.push(this._onStatusAddedAsync[i]);\r\n }\r\n }\r\n\r\n this._onStatusAddedAsync = newStatusAddedArr;\r\n }\r\n\r\n public setMinecraftFlavor(newValue: MinecraftFlavor) {\r\n this.ensureMinecraft(newValue);\r\n }\r\n\r\n public get autoStartMinecraft() {\r\n if (this.#data.autoStartMinecraft === undefined) {\r\n return true;\r\n }\r\n\r\n return this.#data.autoStartMinecraft;\r\n }\r\n\r\n public set autoStartMinecraft(newValue: boolean) {\r\n this.#data.autoStartMinecraft = newValue;\r\n }\r\n\r\n get file(): IFile {\r\n return this.prefsStorage.rootFolder.ensureFile(\"mctools.json\");\r\n }\r\n\r\n get prefsProjectsFolder(): IFolder {\r\n return this.prefsStorage.rootFolder.ensureFolder(\"projects\");\r\n }\r\n\r\n get deployBehaviorPacksFolder(): IFolder | null {\r\n return this._deployBehaviorPacksFolder;\r\n }\r\n\r\n get deployResourcePacksFolder(): IFolder | null {\r\n return this._deployResourcePacksFolder;\r\n }\r\n\r\n constructor(\r\n settingsStorage: IStorage,\r\n projectsStorage: IStorage,\r\n deploymentsStorage: IStorage | null,\r\n previewDeploymentsStorage: IStorage | null,\r\n worldStorage: IStorage | null,\r\n packStorage: IStorage | null,\r\n workingStorage: IStorage | null,\r\n contentRoot: string | null\r\n ) {\r\n this.prefsStorage = settingsStorage;\r\n this.projectsStorage = projectsStorage;\r\n this.deploymentStorage = deploymentsStorage;\r\n this.previewDeploymentStorage = previewDeploymentsStorage;\r\n this.packStorage = packStorage;\r\n this.worldStorage = worldStorage;\r\n this.workingStorage = workingStorage;\r\n\r\n this._deployBehaviorPacksFolder = null;\r\n this._deployResourcePacksFolder = null;\r\n\r\n if (contentRoot) {\r\n this.contentRoot = contentRoot;\r\n }\r\n\r\n this._handleMessageFromAppService = this._handleMessageFromAppService.bind(this);\r\n this._bubbleMinecraftStateChanged = this._bubbleMinecraftStateChanged.bind(this);\r\n this._bubbleMinecraftRefreshed = this._bubbleMinecraftRefreshed.bind(this);\r\n\r\n AppServiceProxy.onMessage.subscribe(this._handleMessageFromAppService);\r\n\r\n this.#data = {\r\n successfullyConnectedWebSocketToMinecraft: false,\r\n successfullyStartedMinecraftServer: false,\r\n successfullyConnectedToRemoteMinecraft: false,\r\n autoStartMinecraft: true,\r\n showScreenOnConnect: true,\r\n customTools: [],\r\n };\r\n\r\n // in the case of a Minecraft Http Server self-hosted web page, assume all we want to do is connect back to our server\r\n if (CartoApp.baseUrl) {\r\n this.setMinecraftFlavor(MinecraftFlavor.remote);\r\n this.successfullyConnectedWebSocketToMinecraft = true;\r\n }\r\n\r\n this._isLoaded = false;\r\n this.projects = [];\r\n this.status = [];\r\n this.activeOperations = [];\r\n\r\n this.updateDeploymentStorage(deploymentsStorage);\r\n }\r\n\r\n public updateDeploymentStorage(deploymentStorage: IStorage | null) {\r\n this.deploymentStorage = deploymentStorage;\r\n\r\n if (this.deploymentStorage != null) {\r\n this._deployBehaviorPacksFolder = this.deploymentStorage.rootFolder.ensureFolder(\"development_behavior_packs\");\r\n this._deployResourcePacksFolder = this.deploymentStorage.rootFolder.ensureFolder(\"development_resource_packs\");\r\n } else {\r\n this._deployBehaviorPacksFolder = null;\r\n this._deployResourcePacksFolder = null;\r\n }\r\n\r\n this._onDeploymentStorageChanged.dispatch(this, deploymentStorage);\r\n }\r\n\r\n public initializeWorldSettings() {\r\n if (this.#data.worldSettings === undefined) {\r\n this.#data.worldSettings = {\r\n gameType: GameType.creative,\r\n generator: Generator.infinite,\r\n randomSeed: \"2000\",\r\n backupType: BackupType.every5Minutes,\r\n useCustomSettings: false,\r\n isEditor: false,\r\n packageReferences: [],\r\n };\r\n\r\n this.ensureDefaultWorldName();\r\n }\r\n }\r\n\r\n private ensureDefaultWorldName() {\r\n if (this.worldSettings && this.worldSettings.name === undefined) {\r\n this.worldSettings.name = \"world \" + Utilities.getDateStr(new Date());\r\n }\r\n }\r\n\r\n public initializeEditorWorldSettings() {\r\n if (this.#data.editorWorldSettings === undefined) {\r\n this.#data.editorWorldSettings = {\r\n gameType: GameType.creative,\r\n generator: Generator.infinite,\r\n backupType: BackupType.every5Minutes,\r\n useCustomSettings: false,\r\n isEditor: true,\r\n packageReferences: [],\r\n };\r\n\r\n this.ensureDefaultEditorWorldName();\r\n }\r\n }\r\n\r\n private ensureDefaultEditorWorldName() {\r\n if (this.editorWorldSettings && this.editorWorldSettings.name === undefined) {\r\n this.editorWorldSettings.name = \"editor project \" + Utilities.getDateStr(new Date());\r\n }\r\n }\r\n\r\n getCustomTool(index: number) {\r\n if (this.#data.customTools === undefined) {\r\n this.#data.customTools = [];\r\n }\r\n\r\n while (this.#data.customTools.length <= index) {\r\n this.#data.customTools.push({\r\n name: \"\",\r\n type: 0,\r\n text: undefined,\r\n lastRunResult: undefined,\r\n });\r\n }\r\n\r\n return this.#data.customTools[index];\r\n }\r\n\r\n get defaultFunction() {\r\n if (this.#data === undefined || this.#data.defaultFunction === undefined) {\r\n return \"\";\r\n }\r\n\r\n return this.#data.defaultFunction;\r\n }\r\n\r\n set defaultFunction(newFunction: string) {\r\n if (this.#data === undefined) {\r\n return;\r\n }\r\n\r\n this.#data.defaultFunction = Utilities.makeSafeForJson(newFunction);\r\n }\r\n\r\n async runCommand(command: string, project?: Project) {\r\n return await CommandRegistry.main.runCommand(\r\n {\r\n carto: this,\r\n project: project,\r\n minecraft: this.activeMinecraft,\r\n host: CartoApp.hostManager,\r\n },\r\n command\r\n );\r\n }\r\n\r\n async runMinecraftCommand(command: string) {\r\n if (this.activeMinecraft === undefined) {\r\n throw new Error(\"No minecraft active.\");\r\n }\r\n\r\n const result = await this.activeMinecraft.runCommand(command);\r\n\r\n return result;\r\n }\r\n\r\n async loadPacks() {\r\n if (!this.packStorage) {\r\n throw new Error(\"Could not find pack storage\");\r\n }\r\n\r\n if (this._arePacksLoading) {\r\n const pendingLoad = this._pendingPackLoadRequests;\r\n\r\n const prom = (resolve: (value: unknown) => void, reject: (reason?: any) => void) => {\r\n pendingLoad.push(resolve);\r\n };\r\n\r\n await new Promise(prom);\r\n } else {\r\n this._arePacksLoading = true;\r\n\r\n this.packs = [];\r\n\r\n // console.log(\"Loading packs from '\" + this.packStorage.rootFolder.fullPath + \"'\");\r\n await this.loadPacksFromFolder(this.packStorage.rootFolder);\r\n\r\n this._arePacksLoading = false;\r\n\r\n const pendingLoad = this._pendingPackLoadRequests;\r\n this._pendingPackLoadRequests = [];\r\n\r\n for (const prom of pendingLoad) {\r\n prom(undefined);\r\n }\r\n }\r\n }\r\n\r\n ensureAllTypesCollapsedExcept(itemType: ProjectItemType) {\r\n const newCollapsedTypes: number[] = [];\r\n\r\n for (let i = 0; i < MaxItemTypes; i++) {\r\n if (i !== itemType) {\r\n newCollapsedTypes.push(i);\r\n }\r\n }\r\n\r\n this.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n ensureTypeIsCollapsed(itemType: ProjectItemType) {\r\n for (const itemTypeCollapsed of this.collapsedTypes) {\r\n if (itemTypeCollapsed === itemType) {\r\n return;\r\n }\r\n }\r\n\r\n this.collapsedTypes.push(itemType);\r\n }\r\n\r\n ensureTypeIsNotCollapsed(itemType: ProjectItemType) {\r\n const newCollapsedTypes: number[] = [];\r\n\r\n for (const itemTypeCollapsed of this.collapsedTypes) {\r\n if (itemTypeCollapsed !== itemType) {\r\n newCollapsedTypes.push(itemTypeCollapsed);\r\n }\r\n }\r\n\r\n this.#data.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n async loadPacksFromFolder(folder: IFolder) {\r\n await folder.load();\r\n\r\n for (let fileName in folder.files) {\r\n const file = folder.files[fileName];\r\n\r\n if (file && StorageUtilities.isContainerFile(file.storageRelativePath)) {\r\n await this.ensurePackForFile(file);\r\n }\r\n }\r\n }\r\n\r\n getPackByName(packName: string, isWorldFocused?: boolean) {\r\n if (!this.packs) {\r\n Log.unexpectedUndefined(\"GPN\");\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].matches(packName, isWorldFocused)) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getPackageByNameAndHash(packName: string, hash?: string) {\r\n if (!this.packs) {\r\n Log.unexpectedUndefined(\"GPNH\");\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].matches(packName, false) && (hash === undefined || hash === this.packs[i].data?.sourceHash)) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n return this.getPackByName(packName);\r\n }\r\n\r\n async ensurePackForFile(file: IFile) {\r\n const pack = this._ensurePack(file.storageRelativePath);\r\n\r\n await pack.ensureData(this, file);\r\n\r\n return pack;\r\n }\r\n\r\n _ensurePack(storagePath: string) {\r\n if (this.packs === undefined) {\r\n this.packs = [];\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].storagePath === storagePath) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n const pack = new Package(StorageUtilities.getLeafName(storagePath), storagePath);\r\n\r\n this.packs.push(pack);\r\n\r\n return pack;\r\n }\r\n\r\n _handleMessageFromAppService(command: string, data: string) {\r\n switch (command) {\r\n case \"externalKeyPress\":\r\n if (data.startsWith(\"command\")) {\r\n const commandIndex = parseInt(data.substring(7, data.length));\r\n\r\n CommandRunner.runCustomTool(this, commandIndex);\r\n }\r\n break;\r\n\r\n case \"statusMessage\":\r\n const firstPipe = data.indexOf(\"|\");\r\n const content = data.substring(firstPipe + 1, data.length);\r\n\r\n try {\r\n const contentO = JSON.parse(content) as IStatus;\r\n\r\n this.notifyExternalStatus(contentO);\r\n } catch (e) {}\r\n\r\n break;\r\n\r\n case \"mctSavedInAppService\":\r\n this.load(true);\r\n break;\r\n\r\n case \"logFileUpdated\":\r\n try {\r\n if (data) {\r\n const firstPipe = data.indexOf(\"|\");\r\n\r\n if (firstPipe > 0) {\r\n const fileName = data.substring(0, firstPipe);\r\n const content = data.substring(firstPipe + 1, data.length);\r\n\r\n this._handleLogFileUpdated(fileName, content);\r\n }\r\n }\r\n } catch (e) {\r\n Log.fail(\"Error parsing inbound log: \" + e);\r\n }\r\n break;\r\n\r\n default:\r\n if (this.deploymentStorageMinecraft) {\r\n this.deploymentStorageMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.processHostedMinecraft) {\r\n this.processHostedMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.gameMinecraft) {\r\n this.gameMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.remoteMinecraft) {\r\n this.remoteMinecraft.processExternalMessage(command, data);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n _handleLogFileUpdated(fileName: string, contents: string) {\r\n if (contents === null || contents === undefined || fileName === null || fileName === undefined) {\r\n return;\r\n }\r\n\r\n let arr: string[] | undefined = this.mcLogs[fileName];\r\n\r\n if (arr === undefined) {\r\n arr = [];\r\n this.mcLogs[fileName] = arr;\r\n }\r\n\r\n const logItems = contents.split(\"\\r\");\r\n\r\n for (let i = logItems.length - 1; i >= 0; i--) {\r\n const logItem = logItems[i];\r\n\r\n if (logItem !== undefined && logItem.length > 3) {\r\n if (!arr.includes(logItem)) {\r\n arr.push(logItem);\r\n this.notifyStatusUpdate(logItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async notifyStatusUpdate(message: string, topic?: StatusTopic) {\r\n const messageCanon = message.trim().toLowerCase();\r\n\r\n if (messageCanon.length > 1) {\r\n const status = {\r\n time: new Date(),\r\n message: message,\r\n topic: topic,\r\n type: StatusType.message,\r\n };\r\n\r\n this.status.push(status);\r\n await this.callStatusAddedListeners(status);\r\n\r\n this.ensureStatusArrayIsTrimmed();\r\n }\r\n }\r\n\r\n private ensureStatusArrayIsTrimmed() {\r\n if (this.status.length > 10000) {\r\n const newStatusArr: IStatus[] = [];\r\n\r\n for (let i = this.status.length - 9000; i < this.status.length; i++) {\r\n newStatusArr.push(this.status[i]);\r\n }\r\n\r\n this.status = newStatusArr;\r\n }\r\n }\r\n\r\n async callStatusAddedListeners(status: IStatus) {\r\n this._onStatusAdded.dispatch(this, status);\r\n\r\n if (this._onStatusAddedAsync.length > 0) {\r\n let promises: Promise<void>[] = [];\r\n\r\n for (let i = 0; i < this._onStatusAddedAsync.length; i++) {\r\n promises.push(this._onStatusAddedAsync[i](this, status));\r\n }\r\n\r\n await Promise.all(promises);\r\n }\r\n }\r\n\r\n notifyExternalStatus(status: IStatus) {\r\n this.status.push(status);\r\n\r\n if (status.type === StatusType.operationStarted) {\r\n this.activeOperations.push(status);\r\n } else if (\r\n (status.type === StatusType.operationEndedComplete || status.type === StatusType.operationEndedErrors) &&\r\n status.operationId !== null &&\r\n status.operationId !== undefined\r\n ) {\r\n this.removeOperation(status.operationId);\r\n }\r\n\r\n this.callStatusAddedListeners(status);\r\n\r\n return status.operationId;\r\n }\r\n\r\n async notifyOperationStarted(message: string, topic?: StatusTopic): Promise<number> {\r\n const status: IStatus = {\r\n time: new Date(),\r\n message: message,\r\n type: StatusType.operationStarted,\r\n topic: topic,\r\n };\r\n\r\n status.operationId = status.time.getTime();\r\n\r\n this.status.push(status);\r\n this.activeOperations.push(status);\r\n\r\n this.ensureStatusArrayIsTrimmed();\r\n\r\n await this.callStatusAddedListeners(status);\r\n\r\n return status.operationId;\r\n }\r\n\r\n async notifyOperationEnded(\r\n endedOperationId: number,\r\n message?: string,\r\n topic?: StatusTopic,\r\n endedWithErrors?: boolean\r\n ) {\r\n this.ensureStatusArrayIsTrimmed();\r\n\r\n this.removeOperation(endedOperationId);\r\n\r\n this._onOperationCompleted.dispatch(this, endedOperationId);\r\n\r\n if (!message) {\r\n return;\r\n }\r\n\r\n const status = {\r\n message: message,\r\n operationId: endedOperationId,\r\n type: endedWithErrors ? StatusType.operationEndedErrors : StatusType.operationEndedComplete,\r\n time: new Date(),\r\n topic: topic,\r\n };\r\n\r\n this.status.push(status);\r\n\r\n await this.callStatusAddedListeners(status);\r\n }\r\n\r\n removeOperation(id: number) {\r\n // remove operation from list of active operations.\r\n const newActiveOperations: IStatus[] = [];\r\n\r\n for (let i = 0; i < this.activeOperations.length; i++) {\r\n const oper = this.activeOperations[i];\r\n\r\n if (oper.operationId !== id) {\r\n newActiveOperations.push(oper);\r\n }\r\n }\r\n\r\n this.activeOperations = newActiveOperations;\r\n }\r\n\r\n async save() {\r\n const configFile = this.file;\r\n\r\n configFile.setContent(JSON.stringify(this.#data, null, 2));\r\n\r\n await configFile.saveContent();\r\n\r\n if (AppServiceProxy.hasAppService) {\r\n AppServiceProxy.sendAsync(AppServiceProxyCommands.reloadMct, \"\");\r\n }\r\n }\r\n\r\n async loadGallery() {\r\n let result = null;\r\n\r\n // @ts-ignore\r\n if (typeof window !== \"undefined\") {\r\n const url = this.contentRoot + \"data/gallery.json\";\r\n\r\n try {\r\n result = await axios.get(url);\r\n\r\n if (result) {\r\n this._gallery = result.data;\r\n }\r\n } catch (e) {\r\n Log.fail(\"Could not load gallery: \" + e + \" from '\" + url + \"'\");\r\n }\r\n } else if (this.local) {\r\n try {\r\n result = await this.local.readJsonFile(\"data/gallery.json\");\r\n } catch (e) {\r\n Log.fail(\"Could not load local file: \" + e + \" from 'data/gallery.json'\");\r\n }\r\n\r\n if (result !== null) {\r\n this._gallery = result as IGallery;\r\n }\r\n }\r\n\r\n if (this._gallery) {\r\n for (const item of this._gallery.items) {\r\n if (item.sampleSet) {\r\n item.gitHubOwner = \"microsoft\";\r\n item.gitHubRepoName = \"minecraft-scripting-samples\";\r\n\r\n if (item.type === GalleryItemType.editorCodeSample) {\r\n item.gitHubFolder = \"/editor-script-box\";\r\n\r\n if (!item.tags) {\r\n item.tags = [\"editor\"];\r\n }\r\n } else {\r\n item.gitHubFolder = \"/script-box\";\r\n }\r\n }\r\n\r\n if (item.fileList) {\r\n const newFileList = [];\r\n\r\n for (const fileItem of item.fileList) {\r\n newFileList.push(MinecraftUtilities.replaceMinecraftPathTokens(fileItem));\r\n }\r\n\r\n item.fileList = newFileList;\r\n }\r\n }\r\n }\r\n\r\n this._galleryLoaded = true;\r\n\r\n this._onGalleryLoaded.dispatch(this, this._gallery);\r\n\r\n return this._gallery;\r\n }\r\n\r\n async getGalleryProjectByGitHub(\r\n repoName: string,\r\n owner: string,\r\n branch?: string,\r\n folder?: string,\r\n withFiles?: boolean\r\n ) {\r\n if (!this._galleryLoaded) {\r\n await this.loadGallery();\r\n }\r\n\r\n if (this._galleryLoaded === false || this._gallery === undefined || this._gallery.items === undefined) {\r\n return undefined;\r\n }\r\n\r\n repoName = repoName.toLowerCase();\r\n owner = owner.toLowerCase();\r\n\r\n for (const galProj of this._gallery.items) {\r\n if (\r\n galProj.gitHubRepoName.toLowerCase() === repoName &&\r\n galProj.gitHubOwner.toLowerCase() === owner &&\r\n branch === galProj.gitHubBranch &&\r\n folder === galProj.gitHubFolder &&\r\n (!withFiles || galProj.fileList)\r\n ) {\r\n return galProj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async getGalleryProjectById(galleryProjectId: string) {\r\n if (!this._galleryLoaded) {\r\n await this.loadGallery();\r\n }\r\n\r\n if (this._galleryLoaded === false || this._gallery === undefined || this._gallery.items === undefined) {\r\n return undefined;\r\n }\r\n\r\n galleryProjectId = galleryProjectId.toLowerCase();\r\n galleryProjectId = galleryProjectId.replace(/-/gi, \"\");\r\n\r\n for (const galProj of this._gallery.items) {\r\n if (galProj.id.toLowerCase() === galleryProjectId) {\r\n return galProj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async getNewProjectName(seedName: string) {\r\n await this.load();\r\n\r\n let newProjectName = seedName;\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(newProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(newProjectName)\r\n ) {\r\n counter++;\r\n newProjectName = seedName + \" \" + counter;\r\n }\r\n\r\n return newProjectName;\r\n }\r\n\r\n async createNewProject(\r\n newProjectName: string,\r\n newProjectPath: string | undefined,\r\n newProjectFolder: IFolder | undefined,\r\n newProjectFolderTitle: string | undefined,\r\n focus: ProjectFocus,\r\n includeDefaultItems: boolean,\r\n projectLanguage?: ProjectScriptLanguage\r\n ) {\r\n await this.load();\r\n\r\n const targetProjectName = await this.getNewProjectName(newProjectName);\r\n\r\n let projectPrefs;\r\n\r\n if (newProjectFolder) {\r\n projectPrefs = await newProjectFolder.ensureFileFromRelativePath(\"/.mct/prefs.mctp.json\");\r\n } else {\r\n projectPrefs = await this.prefsProjectsFolder.createFile(targetProjectName + \".json\");\r\n }\r\n\r\n const newProject = new Project(this, targetProjectName, projectPrefs);\r\n\r\n if (newProjectPath && !newProjectFolder) {\r\n newProject.mainDeployFolderPath = newProjectPath;\r\n }\r\n\r\n if (projectLanguage) {\r\n newProject.preferredScriptLanguage = projectLanguage;\r\n }\r\n\r\n if (newProjectFolder) {\r\n newProject.setProjectFolder(newProjectFolder);\r\n newProject.projectFolderTitle = newProjectFolderTitle;\r\n } else {\r\n await newProject.ensureProjectFolder();\r\n }\r\n\r\n newProject.focus = focus;\r\n\r\n if (includeDefaultItems) {\r\n await newProject.ensureDefaultItems();\r\n }\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async createNewProjectFromFolder(path: string) {\r\n await this.load();\r\n\r\n let newProjectName = StorageUtilities.getLeafName(path);\r\n\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(newProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(newProjectName)\r\n ) {\r\n counter++;\r\n newProjectName = StorageUtilities.getLeafName(path) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(newProjectName + \".json\");\r\n\r\n const newProject = new Project(this, newProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = path;\r\n\r\n await newProject.ensureProjectFolder();\r\n\r\n await newProject.ensureInflated();\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async deleteProjectByName(projectName: string) {\r\n let projectToDelete: Project | undefined;\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.name === projectName) {\r\n if (projectToDelete !== undefined) {\r\n Log.fail(\"Encountered multiple projects with the same name.\");\r\n return;\r\n }\r\n\r\n projectToDelete = proj;\r\n }\r\n }\r\n\r\n if (projectToDelete) {\r\n await projectToDelete.deleteThisProject();\r\n\r\n this.removeProject(projectToDelete);\r\n\r\n projectToDelete.dispose();\r\n }\r\n }\r\n\r\n removeProject(project: Project) {\r\n const newProjects: Project[] = [];\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj !== project) {\r\n newProjects.push(proj);\r\n }\r\n }\r\n this.projects = newProjects;\r\n }\r\n\r\n getProjectByName(projectName: string) {\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.name === projectName) {\r\n return proj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getProjectByMainLocalFolderPath(localPath: string) {\r\n localPath = StorageUtilities.canonicalizePath(localPath);\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.mainDeployFolderPath && StorageUtilities.canonicalizePath(proj.mainDeployFolderPath) === localPath) {\r\n return proj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async ensureProjectFromLocalStoragePath(messageProjectPath: string) {\r\n if (!this.local) {\r\n Log.fail(\"Could not find local utilities.\");\r\n return;\r\n }\r\n\r\n await this.load();\r\n\r\n let desiredProjectName = StorageUtilities.canonicalizePathAsFileName(messageProjectPath);\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n const project = this.getProjectByName(desiredProjectName);\r\n const canonPath = StorageUtilities.canonicalizePath(messageProjectPath);\r\n\r\n if (project !== undefined) {\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n }\r\n\r\n // OK, a project doesn't exist, let's create one.\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(desiredProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(desiredProjectName)\r\n ) {\r\n counter++;\r\n desiredProjectName = StorageUtilities.canonicalizePathAsFileName(messageProjectPath) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(desiredProjectName + \".json\");\r\n\r\n const newProject = new Project(this, desiredProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = messageProjectPath;\r\n newProject.originalFullPath = messageProjectPath;\r\n\r\n const localStorage = await this.local.createStorage(messageProjectPath);\r\n\r\n if (localStorage === null) {\r\n Log.fail(\"Could not create local storage.\");\r\n return;\r\n }\r\n\r\n newProject.setProjectFolder(localStorage.rootFolder);\r\n\r\n await newProject.ensureProjectFolder();\r\n\r\n await ProjectItemRelations.calculate(newProject);\r\n\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async ensureProjectForFolder(folderPath: string, newProjectName?: string, openDirect?: boolean) {\r\n await this.load();\r\n\r\n let desiredProjectName = \"\";\r\n\r\n if (newProjectName !== undefined) {\r\n desiredProjectName = newProjectName;\r\n } else {\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath);\r\n }\r\n\r\n let canonPath = StorageUtilities.canonicalizePath(folderPath);\r\n\r\n let project = this.getProjectByMainLocalFolderPath(folderPath);\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n if (!project) {\r\n project = this.getProjectByName(desiredProjectName);\r\n }\r\n\r\n if (project !== undefined && !openDirect) {\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n } else if (project && openDirect) {\r\n for (let i = 1; i < 99; i++) {\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath) + \" \" + i;\r\n canonPath = StorageUtilities.canonicalizePath(folderPath) + \" \" + i;\r\n\r\n if (newProjectName !== undefined) {\r\n desiredProjectName = newProjectName;\r\n }\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n let project = this.getProjectByName(desiredProjectName);\r\n\r\n if (!project) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // now check all other projects to see if one exists.\r\n for (let i = 0; i < this.projects.length; i++) {\r\n project = this.projects[i];\r\n\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n }\r\n\r\n // OK, a project doesn't exist, let's create one.\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(desiredProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(desiredProjectName)\r\n ) {\r\n counter++;\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(desiredProjectName + \".json\");\r\n\r\n const newProject = new Project(this, desiredProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = folderPath;\r\n newProject.originalFullPath = folderPath;\r\n\r\n await newProject.ensureProjectFolder();\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async getExportZip() {\r\n const zs = new ZipStorage();\r\n\r\n const zipRoot = zs.rootFolder;\r\n\r\n await this.load();\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const project = this.projects[i];\r\n\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n await project.ensureProjectFolder();\r\n\r\n if (project.projectFolder) {\r\n const projectTargetFolder = zipRoot.ensureFolder(project.name);\r\n\r\n await StorageUtilities.syncFolderTo(project.projectFolder, projectTargetFolder, true, true, false);\r\n }\r\n }\r\n\r\n await zipRoot.saveAll();\r\n\r\n return zs;\r\n }\r\n\r\n async load(force?: boolean) {\r\n if (this._isLoaded && !force) {\r\n return;\r\n }\r\n\r\n const configFile = this.file;\r\n\r\n await configFile.loadContent(false);\r\n\r\n if (configFile.content !== null && configFile.content !== undefined && typeof configFile.content === \"string\") {\r\n this.#data = JSON.parse(configFile.content as string);\r\n }\r\n\r\n const projectsFolder = this.prefsProjectsFolder;\r\n\r\n await projectsFolder.load();\r\n\r\n await this.projectsStorage.rootFolder.load();\r\n\r\n this.projects = [];\r\n\r\n for (const fileName in projectsFolder.files) {\r\n const projectName = StorageUtilities.getBaseFromName(fileName);\r\n\r\n const projectFile = projectsFolder.files[fileName];\r\n\r\n if (projectFile !== undefined) {\r\n const project = new Project(this, projectName, projectFile);\r\n\r\n this.projects.push(project);\r\n }\r\n }\r\n\r\n this.considerStartingMinecraft(); // explicitly not awaiting this since this might take a while and is not strictly necessary.\r\n\r\n this.initializeWorldSettings();\r\n\r\n this.ensureDefaultWorldName();\r\n\r\n this._onLoaded.dispatch(this, this);\r\n\r\n this._isLoaded = true;\r\n }\r\n\r\n public async considerStartingMinecraft() {\r\n if (CartoApp.hostType === HostType.webPlusServices || CartoApp.hostType === HostType.web) {\r\n if (\r\n this.successfullyConnectedWebSocketToMinecraft &&\r\n (this.autoStartMinecraft || this.lastActiveMinecraftFlavor === MinecraftFlavor.remote)\r\n ) {\r\n this.ensureRemoteMinecraft();\r\n\r\n if (\r\n this.remoteMinecraft &&\r\n CartoApp.hostType === HostType.web &&\r\n CartoApp.carto &&\r\n CartoApp.carto.remoteServerUrl &&\r\n CartoApp.carto.remoteServerUrl.length > 4\r\n ) {\r\n this.remoteMinecraft.initialize();\r\n\r\n if (!this.activeMinecraft && this.lastActiveMinecraftFlavor === MinecraftFlavor.remote) {\r\n this.activeMinecraft = this.remoteMinecraft;\r\n\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.remote;\r\n }\r\n }\r\n\r\n if (CartoApp.isAppServiceWeb) {\r\n this.ensureGameMinecraft();\r\n\r\n if (this.gameMinecraft) {\r\n this.gameMinecraft.initialize();\r\n }\r\n\r\n if (!this.activeMinecraft && this.lastActiveMinecraftFlavor === MinecraftFlavor.minecraftGameProxy) {\r\n this.activeMinecraft = this.gameMinecraft;\r\n\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.minecraftGameProxy;\r\n }\r\n }\r\n }\r\n\r\n if (\r\n this.successfullyStartedMinecraftServer &&\r\n this.lastActiveMinecraftFlavor === MinecraftFlavor.processHostedProxy &&\r\n this.autoStartMinecraft\r\n ) {\r\n await this.connectToMinecraft();\r\n }\r\n }\r\n }\r\n\r\n public async connectToMinecraft() {\r\n if (!this.lastActiveMinecraftFlavor) {\r\n return;\r\n }\r\n\r\n this.ensureMinecraft(this.lastActiveMinecraftFlavor);\r\n\r\n if (this.activeMinecraft) {\r\n const status = await this.activeMinecraft.updateStatus();\r\n\r\n if (\r\n status === CartoMinecraftState.disconnected ||\r\n status === CartoMinecraftState.error ||\r\n status === CartoMinecraftState.none ||\r\n status === CartoMinecraftState.stopped ||\r\n status === CartoMinecraftState.stopping ||\r\n status === CartoMinecraftState.newMinecraft\r\n ) {\r\n await this.activeMinecraft.initialize();\r\n }\r\n }\r\n }\r\n\r\n public canPrepareAndStartMinecraft() {\r\n if (!this.activeMinecraft) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.activeMinecraftState !== CartoMinecraftState.initialized &&\r\n this.activeMinecraftState !== CartoMinecraftState.preparing &&\r\n this.activeMinecraftState !== CartoMinecraftState.prepared &&\r\n this.activeMinecraftState !== CartoMinecraftState.starting &&\r\n this.activeMinecraftState !== CartoMinecraftState.started\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async prepareAndStartToMinecraft(push: MinecraftPush) {\r\n if (!this.canPrepareAndStartMinecraft || !this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n await this.activeMinecraft.prepareAndStart(push);\r\n }\r\n private _bubbleMinecraftRefreshed(minecraft: IMinecraft, newState: CartoMinecraftState) {\r\n if (minecraft !== this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n this._onMinecraftRefreshed.dispatch(minecraft, newState);\r\n }\r\n\r\n private _bubbleMinecraftStateChanged(minecraft: IMinecraft, newState: CartoMinecraftState) {\r\n if (minecraft !== this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n if (!this.successfullyConnectedWebSocketToMinecraft && newState === CartoMinecraftState.initialized) {\r\n this.successfullyConnectedWebSocketToMinecraft = true;\r\n this.save();\r\n }\r\n\r\n if (newState === CartoMinecraftState.prepared) {\r\n Log.message(\"Minecraft is ready.\");\r\n } else if (newState === CartoMinecraftState.started) {\r\n // Log.message(\"Connected to Minecraft.\");\r\n } else if (newState === CartoMinecraftState.stopping) {\r\n Log.message(\"Disconnecting from Minecraft.\");\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(minecraft, newState);\r\n }\r\n\r\n public ensureRemoteMinecraft() {\r\n return this.remoteMinecraft;\r\n }\r\n\r\n public ensureProcessHostedMinecraft() {\r\n return this.processHostedMinecraft;\r\n }\r\n\r\n public ensureDeploymentStorageMinecraft() {\r\n if (this.deploymentStorageMinecraft === undefined) {\r\n this.deploymentStorageMinecraft = new DeploymentStorageMinecraft(this);\r\n }\r\n\r\n return this.deploymentStorageMinecraft;\r\n }\r\n\r\n public ensureGameMinecraft() {\r\n return this.gameMinecraft;\r\n }\r\n\r\n public ensureMinecraft(flavor: MinecraftFlavor) {\r\n if (flavor === MinecraftFlavor.none) {\r\n return undefined;\r\n }\r\n\r\n if (this.activeMinecraft && this.lastActiveMinecraftFlavor === flavor) {\r\n return this.activeMinecraft;\r\n }\r\n\r\n this.ensureRemoteMinecraft();\r\n\r\n if (flavor === MinecraftFlavor.processHostedProxy) {\r\n this.ensureProcessHostedMinecraft();\r\n } else if (flavor === MinecraftFlavor.deploymentStorage) {\r\n this.ensureDeploymentStorageMinecraft();\r\n } else if (flavor === MinecraftFlavor.minecraftGameProxy) {\r\n this.ensureGameMinecraft();\r\n }\r\n\r\n if (this.activeMinecraft) {\r\n this.activeMinecraft.onStateChanged.unsubscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.unsubscribe(this._bubbleMinecraftRefreshed);\r\n }\r\n\r\n if (flavor === MinecraftFlavor.remote) {\r\n if (!this.remoteMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMR\");\r\n return;\r\n }\r\n\r\n this.activeMinecraft = this.remoteMinecraft;\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.remote) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.remote;\r\n this.save();\r\n }\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMA\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.minecraftGameProxy) {\r\n if (!this.gameMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMG\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.gameMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.minecraftGameProxy) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.minecraftGameProxy;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMB\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.processHostedProxy) {\r\n if (!this.processHostedMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMC\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.processHostedMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.processHostedProxy) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.processHostedProxy;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.deploymentStorage) {\r\n if (!this.deploymentStorageMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMCD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.deploymentStorageMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.deploymentStorage) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.deploymentStorage;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMDD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (\r\n this.createMinecraft === undefined ||\r\n this.canCreateMinecraft === undefined ||\r\n !this.canCreateMinecraft(flavor)\r\n ) {\r\n Log.debugAlert(\"Requested creation of an unavailable Minecraft.\");\r\n flavor = MinecraftFlavor.none;\r\n } else {\r\n const newMinecraft = this.createMinecraft(flavor, this);\r\n\r\n if (!newMinecraft) {\r\n Log.debugAlert(\"Could not create a requested Minecraft.\");\r\n flavor = MinecraftFlavor.none;\r\n } else {\r\n this.activeMinecraft = newMinecraft;\r\n this.lastActiveMinecraftFlavor = flavor;\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n }\r\n }\r\n\r\n this.lastActiveMinecraftFlavor = flavor;\r\n\r\n this.save();\r\n return this.activeMinecraft;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/app/Carto.ts"],"names":[],"mappings":"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","file":"../../app/Carto.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport IStorage from \"../storage/IStorage\";\r\nimport ICartoData, {\r\n CartoEditorViewMode,\r\n RemoteServerAccessLevel,\r\n MinecraftFlavor,\r\n DedicatedServerMode,\r\n MinecraftGameConnectionMode,\r\n MinecraftTrack,\r\n WindowState,\r\n} from \"./ICartoData\";\r\nimport Project from \"./Project\";\r\nimport { EventDispatcher } from \"ste-events\";\r\nimport { ProjectFocus, ProjectScriptLanguage } from \"./IProjectData\";\r\nimport IStatus, { StatusTopic, StatusType } from \"./Status\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport Utilities from \"../core/Utilities\";\r\nimport GitHubManager from \"../github/GitHubManager\";\r\nimport IGallery from \"./IGallery\";\r\nimport axios from \"axios\";\r\nimport Log from \"../core/Log\";\r\nimport AppServiceProxy, { AppServiceProxyCommands } from \"../core/AppServiceProxy\";\r\nimport CommandRunner from \"./CommandRunner\";\r\nimport ILocalUtilities from \"../local/ILocalUtilities\";\r\nimport IMinecraft from \"./IMinecraft\";\r\nimport CartoApp, { HostType } from \"./CartoApp\";\r\nimport MinecraftPush from \"./MinecraftPush\";\r\nimport { GameType, Generator } from \"../minecraft/WorldLevelDat\";\r\nimport { BackupType } from \"../minecraft/IWorldSettings\";\r\nimport Package from \"./Package\";\r\nimport CommandRegistry from \"./CommandRegistry\";\r\nimport ZipStorage from \"../storage/ZipStorage\";\r\nimport { MaxItemTypes, ProjectItemType } from \"./IProjectItemData\";\r\nimport DeploymentStorageMinecraft from \"./DeploymentStorageMinecraft\";\r\nimport MinecraftUtilities from \"../minecraft/MinecraftUtilities\";\r\nimport { GalleryItemType } from \"./IGalleryItem\";\r\nimport ProjectItemRelations from \"./ProjectItemRelations\";\r\nimport ProjectUtilities from \"./ProjectUtilities\";\r\n\r\nexport enum CartoMinecraftState {\r\n none = 0,\r\n initializing = 1, // for phserver, this is starting to auto-download\r\n // for remote server, this is authenticating\r\n // for web sockets, this is opening up the web socket to receive connections from a client\r\n initialized = 2,\r\n preparing = 3,\r\n prepared = 4,\r\n starting = 5, // for phserver, the server is starting\r\n // for remote server, this is creating a session on a socket\r\n // for web sockets, note you have to wait for external connections to come in.\r\n started = 6, // for phserver, the server is up and ready\r\n // for remote server, the session is ready and initial status has been established\r\n // for web sockets, an external client has connected in\r\n stopping = 7,\r\n stopped = 8,\r\n error = 9,\r\n newMinecraft = 10,\r\n disconnected = 11,\r\n}\r\n\r\nexport enum CartoMinecraftErrorStatus {\r\n none = 0,\r\n actionInProgress = 1,\r\n serverUnavailable = 2,\r\n serverError = 3,\r\n loginFailed = 4,\r\n generalError = 5,\r\n configuration = 6,\r\n}\r\n\r\nexport const CartoTargetStrings = [\r\n \"Latest Minecraft Bedrock\",\r\n \"Latest Minecraft Bedrock preview\",\r\n \"Latest Minecraft Education\",\r\n \"Latest Minecraft Education preview\",\r\n];\r\n\r\nexport const SidePaneMaxWidth = 880;\r\nexport const SidePaneMinWidth = 280;\r\n\r\nexport default class Carto {\r\n private _isLoaded: boolean;\r\n private _userGitHub: GitHubManager | undefined;\r\n private _anonGitHub: GitHubManager | undefined;\r\n\r\n contentRoot = \"\";\r\n\r\n processHostedMinecraft: IMinecraft | undefined;\r\n deploymentStorageMinecraft: IMinecraft | undefined;\r\n gameMinecraft: IMinecraft | undefined;\r\n remoteMinecraft: IMinecraft | undefined;\r\n activeMinecraft: IMinecraft | undefined;\r\n\r\n prefsStorage: IStorage;\r\n projectsStorage: IStorage;\r\n deploymentStorage: IStorage | null;\r\n previewDeploymentStorage: IStorage | null;\r\n worldStorage: IStorage | null;\r\n packStorage: IStorage | null;\r\n workingStorage: IStorage | null;\r\n\r\n localFolderExists: ((path: string) => Promise<boolean>) | undefined;\r\n localFileExists: ((path: string) => Promise<boolean>) | undefined;\r\n ensureLocalFolder: ((path: string) => IFolder) | undefined;\r\n createMinecraft: ((flavor: MinecraftFlavor, carto: Carto) => IMinecraft | undefined) | undefined;\r\n canCreateMinecraft: ((flavor: MinecraftFlavor) => boolean) | undefined;\r\n\r\n private _deployBehaviorPacksFolder: IFolder | null;\r\n private _deployResourcePacksFolder: IFolder | null;\r\n\r\n private _pendingPackLoadRequests: ((value: unknown) => void)[] = [];\r\n private _arePacksLoading: boolean = false;\r\n\r\n local: ILocalUtilities | undefined;\r\n #data: ICartoData;\r\n projects: Project[];\r\n status: IStatus[];\r\n activeOperations: IStatus[];\r\n\r\n packs?: Package[];\r\n\r\n mcLogs: { [name: string]: string[] | undefined } = {};\r\n\r\n _gallery?: IGallery;\r\n _galleryLoaded: boolean = false;\r\n isDeployingToComMojang: boolean = false;\r\n\r\n hasAttemptedPersistentBrowserStorageSwitch: boolean = false;\r\n\r\n private _onDeploymentStorageChanged = new EventDispatcher<Carto, IStorage | null>();\r\n private _onMinecraftStateChanged = new EventDispatcher<IMinecraft, CartoMinecraftState>();\r\n private _onMinecraftRefreshed = new EventDispatcher<IMinecraft, CartoMinecraftState>();\r\n private _onPropertyChanged = new EventDispatcher<Carto, string>();\r\n private _onLoaded = new EventDispatcher<Carto, Carto>();\r\n private _onStatusAdded = new EventDispatcher<Carto, IStatus>();\r\n private _onOperationCompleted = new EventDispatcher<Carto, number>();\r\n private _onStatusAddedAsync: ((carto: Carto, status: IStatus) => Promise<void>)[] = [];\r\n private _onGalleryLoaded = new EventDispatcher<Carto, IGallery | undefined>();\r\n\r\n public get isLoaded() {\r\n return this._isLoaded;\r\n }\r\n\r\n public get collapsedTypes() {\r\n if (!this.#data.collapsedTypes) {\r\n this.#data.collapsedTypes = [];\r\n }\r\n\r\n return this.#data.collapsedTypes;\r\n }\r\n\r\n public set collapsedTypes(newCollapsedTypes: number[]) {\r\n this.#data.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n public get worldSettings() {\r\n return this.#data.worldSettings;\r\n }\r\n\r\n public get editorWorldSettings() {\r\n return this.#data.editorWorldSettings;\r\n }\r\n\r\n public get activeMinecraftState() {\r\n if (this.activeMinecraft === undefined) {\r\n return CartoMinecraftState.none;\r\n }\r\n\r\n return this.activeMinecraft.state;\r\n }\r\n\r\n public get onMinecraftStateChanged() {\r\n return this._onMinecraftStateChanged.asEvent();\r\n }\r\n\r\n public get onDeploymentStorageChanged() {\r\n return this._onDeploymentStorageChanged.asEvent();\r\n }\r\n\r\n public get formatBeforeSave() {\r\n if (this.#data.formatBeforeSave === undefined) {\r\n return true;\r\n }\r\n\r\n return this.#data.formatBeforeSave;\r\n }\r\n\r\n public set formatBeforeSave(newValue: boolean) {\r\n this.#data.formatBeforeSave = newValue;\r\n }\r\n\r\n public get conversionJarPath() {\r\n return this.#data.conversionJarPath;\r\n }\r\n\r\n public set conversionJarPath(newValue: string | undefined) {\r\n this.#data.conversionJarPath = newValue;\r\n }\r\n\r\n public get preferredTextSize() {\r\n if (this.#data.preferredTextSize === undefined) {\r\n return 16;\r\n }\r\n\r\n return this.#data.preferredTextSize;\r\n }\r\n\r\n public set preferredTextSize(newValue: number) {\r\n this.#data.preferredTextSize = newValue;\r\n }\r\n\r\n public get itemSidePaneWidth() {\r\n if (this.#data.itemSidePaneWidth === undefined) {\r\n return 300;\r\n }\r\n\r\n if (this.#data.itemSidePaneWidth < SidePaneMinWidth) {\r\n return SidePaneMinWidth;\r\n }\r\n\r\n if (this.#data.itemSidePaneWidth > SidePaneMaxWidth) {\r\n return SidePaneMaxWidth;\r\n }\r\n\r\n return this.#data.itemSidePaneWidth;\r\n }\r\n\r\n public set itemSidePaneWidth(newValue: number) {\r\n this.#data.itemSidePaneWidth = newValue;\r\n }\r\n\r\n public get preferredSuite() {\r\n return this.#data.preferredSuite;\r\n }\r\n\r\n public set preferredSuite(newValue: number | undefined) {\r\n this.#data.preferredSuite = newValue;\r\n }\r\n\r\n get track(): MinecraftTrack | undefined {\r\n return this.#data.track;\r\n }\r\n\r\n set track(newTrack: MinecraftTrack | undefined) {\r\n if (newTrack !== this.#data.track) {\r\n this.#data.track = newTrack;\r\n this._onPropertyChanged.dispatch(this, \"track\");\r\n }\r\n }\r\n\r\n get effectiveTrack(): MinecraftTrack {\r\n if (this.#data.track !== undefined) {\r\n return this.#data.track;\r\n }\r\n\r\n return MinecraftTrack.main;\r\n }\r\n\r\n public get useEditor() {\r\n return this.#data.useEditor;\r\n }\r\n\r\n public set useEditor(newUseEditor: boolean | undefined) {\r\n if (newUseEditor !== this.#data.useEditor) {\r\n this.#data.useEditor = newUseEditor;\r\n }\r\n }\r\n\r\n public get windowX() {\r\n if (this.#data.windowX === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowX;\r\n }\r\n\r\n public set windowX(newVal: number | undefined) {\r\n this.#data.windowX = newVal;\r\n }\r\n public get windowY() {\r\n if (this.#data.windowY === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowY;\r\n }\r\n\r\n public set windowY(newVal: number | undefined) {\r\n this.#data.windowY = newVal;\r\n }\r\n\r\n public get windowWidth() {\r\n if (this.#data.windowWidth === undefined) {\r\n return 1200;\r\n }\r\n\r\n return this.#data.windowWidth;\r\n }\r\n\r\n public set windowWidth(newVal: number | undefined) {\r\n this.#data.windowWidth = newVal;\r\n }\r\n\r\n public get windowHeight() {\r\n if (this.#data.windowHeight === undefined) {\r\n return 900;\r\n }\r\n return this.#data.windowHeight;\r\n }\r\n\r\n public set windowHeight(newVal: number | undefined) {\r\n this.#data.windowHeight = newVal;\r\n }\r\n\r\n public get windowSlot() {\r\n if (this.#data.windowSlot === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.windowSlot;\r\n }\r\n\r\n public set windowSlot(newVal: number | undefined) {\r\n this.#data.windowSlot = newVal;\r\n }\r\n\r\n get creator(): string | undefined {\r\n return this.#data.creator;\r\n }\r\n\r\n set creator(newCreator: string | undefined) {\r\n if (this.#data.creator !== newCreator) {\r\n this.#data.creator = newCreator;\r\n\r\n this._onPropertyChanged.dispatch(this, \"creator\");\r\n }\r\n }\r\n\r\n public get windowState() {\r\n if (this.#data.windowState === undefined) {\r\n return WindowState.regular;\r\n }\r\n\r\n return this.#data.windowState;\r\n }\r\n\r\n public set windowState(newVal: number | undefined) {\r\n this.#data.windowState = newVal;\r\n }\r\n\r\n public get lastActiveMinecraftFlavor() {\r\n return this.#data.lastActiveMinecraftFlavor;\r\n }\r\n\r\n public set lastActiveMinecraftFlavor(lastActiveMinecraftFlavor: MinecraftFlavor | undefined) {\r\n if (lastActiveMinecraftFlavor !== this.#data.lastActiveMinecraftFlavor) {\r\n this.#data.lastActiveMinecraftFlavor = lastActiveMinecraftFlavor;\r\n }\r\n }\r\n\r\n public get remoteServerUrl() {\r\n if (this.#data.remoteServerUrl === undefined && CartoApp.baseUrl) {\r\n return Utilities.getBaseUrl(CartoApp.baseUrl);\r\n }\r\n\r\n return this.#data.remoteServerUrl;\r\n }\r\n\r\n public get fullRemoteServerUrl() {\r\n if (!this.remoteServerUrl) {\r\n return undefined;\r\n }\r\n\r\n let url = this.remoteServerUrl.toLowerCase();\r\n\r\n if (!url.startsWith(\"http\") && url.indexOf(\"//\") < 0) {\r\n if (url.indexOf(\"localhost\") >= 0) {\r\n url = \"http://\" + url;\r\n } else {\r\n url = \"https://\" + url;\r\n }\r\n }\r\n\r\n url = Utilities.ensureEndsWithSlash(url);\r\n\r\n return url;\r\n }\r\n\r\n public set remoteServerUrl(newPath: string | undefined) {\r\n if (newPath !== this.#data.remoteServerUrl) {\r\n this.#data.remoteServerUrl = newPath;\r\n }\r\n }\r\n\r\n public get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula() {\r\n return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula;\r\n }\r\n\r\n public set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula(\r\n newPort: boolean | undefined\r\n ) {\r\n this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula = newPort;\r\n }\r\n\r\n public get dedicatedServerSlotCount() {\r\n return this.#data.dedicatedServerSlotCount;\r\n }\r\n\r\n public set dedicatedServerSlotCount(newPort: number | undefined) {\r\n this.#data.dedicatedServerSlotCount = newPort;\r\n }\r\n\r\n public get dedicatedServerMode() {\r\n if (this.#data.dedicatedServerMode === undefined) {\r\n return DedicatedServerMode.auto;\r\n }\r\n\r\n return this.#data.dedicatedServerMode;\r\n }\r\n\r\n public set dedicatedServerMode(newMode: DedicatedServerMode | undefined) {\r\n this.#data.dedicatedServerMode = newMode;\r\n }\r\n\r\n public get dedicatedServerPath() {\r\n return this.#data.dedicatedServerPath;\r\n }\r\n\r\n public set minecraftGameMode(newMode: MinecraftGameConnectionMode | undefined) {\r\n this.#data.webSocketMode = newMode;\r\n }\r\n\r\n public get minecraftGameMode() {\r\n return this.#data.webSocketMode;\r\n }\r\n\r\n public set dedicatedServerPath(newPath: string | undefined) {\r\n this.#data.dedicatedServerPath = newPath;\r\n }\r\n\r\n public get remoteServerPort() {\r\n if (this.#data.remoteServerPort === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.#data.remoteServerPort;\r\n }\r\n\r\n public set remoteServerPort(newPort: number | undefined) {\r\n this.#data.remoteServerPort = newPort;\r\n }\r\n\r\n public get remoteServerAccessLevel() {\r\n return this.#data.remoteServerAccessLevel;\r\n }\r\n\r\n public set remoteServerAccessLevel(newAccessLevel: RemoteServerAccessLevel | undefined) {\r\n this.#data.remoteServerAccessLevel = newAccessLevel;\r\n }\r\n\r\n public get remoteServerPasscode() {\r\n return this.#data.remoteServerPasscode;\r\n }\r\n\r\n public set remoteServerPasscode(newPath: string | undefined) {\r\n this.#data.remoteServerPasscode = newPath;\r\n }\r\n\r\n public get remoteServerAuthToken() {\r\n return this.#data.remoteServerAuthToken;\r\n }\r\n\r\n public set remoteServerAuthToken(newPath: string | undefined) {\r\n this.#data.remoteServerAuthToken = newPath;\r\n }\r\n\r\n public get editorViewMode() {\r\n if (this.#data.editorViewMode === undefined) {\r\n return CartoEditorViewMode.itemsOnLeft;\r\n }\r\n\r\n return this.#data.editorViewMode;\r\n }\r\n\r\n public set editorViewMode(newViewMode: CartoEditorViewMode) {\r\n this.#data.editorViewMode = newViewMode;\r\n }\r\n\r\n public get gallery() {\r\n return this._gallery;\r\n }\r\n\r\n public get galleryLoaded() {\r\n return this._galleryLoaded;\r\n }\r\n\r\n public get userGitHub(): GitHubManager {\r\n if (this._userGitHub === undefined) {\r\n this._userGitHub = new GitHubManager(this.prefsStorage.rootFolder.ensureFile(\"github.json\"));\r\n }\r\n\r\n return this._userGitHub;\r\n }\r\n\r\n public get anonGitHub(): GitHubManager {\r\n if (this._anonGitHub === undefined) {\r\n this._anonGitHub = new GitHubManager();\r\n }\r\n\r\n return this._anonGitHub;\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get onGalleryLoaded() {\r\n return this._onGalleryLoaded.asEvent();\r\n }\r\n\r\n public get onPropertyChanged() {\r\n return this._onPropertyChanged.asEvent();\r\n }\r\n\r\n public get onStatusAdded() {\r\n return this._onStatusAdded.asEvent();\r\n }\r\n\r\n public get onOperationCompleted() {\r\n return this._onOperationCompleted.asEvent();\r\n }\r\n\r\n public get successfullyConnectedWebSocketToMinecraft() {\r\n if (this.#data.successfullyConnectedWebSocketToMinecraft === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyConnectedWebSocketToMinecraft;\r\n }\r\n\r\n public set successfullyConnectedWebSocketToMinecraft(newValue: boolean) {\r\n this.#data.successfullyConnectedWebSocketToMinecraft = newValue;\r\n }\r\n\r\n public get successfullyStartedMinecraftServer() {\r\n if (this.#data.successfullyStartedMinecraftServer === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyStartedMinecraftServer;\r\n }\r\n\r\n public set successfullyStartedMinecraftServer(newValue: boolean) {\r\n this.#data.successfullyStartedMinecraftServer = newValue;\r\n }\r\n\r\n public get successfullyConnectedToRemoteMinecraft() {\r\n if (this.#data.successfullyConnectedToRemoteMinecraft === undefined) {\r\n return false;\r\n }\r\n\r\n return this.#data.successfullyConnectedToRemoteMinecraft;\r\n }\r\n\r\n public set successfullyConnectedToRemoteMinecraft(newValue: boolean) {\r\n this.#data.successfullyConnectedToRemoteMinecraft = newValue;\r\n }\r\n\r\n public get defaultMinecraftFlavor() {\r\n if (this.#data.lastActiveMinecraftFlavor === undefined) {\r\n if (CartoApp.isAppServiceWeb) {\r\n return MinecraftFlavor.processHostedProxy;\r\n } else {\r\n return MinecraftFlavor.remote;\r\n }\r\n }\r\n\r\n return this.#data.lastActiveMinecraftFlavor;\r\n }\r\n\r\n public subscribeStatusAddedAsync(fn: (carto: Carto, status: IStatus) => Promise<void>) {\r\n this._onStatusAddedAsync.push(fn);\r\n }\r\n\r\n public unsubscribeStatusAddedAsync(fn: (carto: Carto, status: IStatus) => Promise<void>) {\r\n let newStatusAddedArr: ((carto: Carto, status: IStatus) => Promise<void>)[] = [];\r\n\r\n for (let i = 0; i < this._onStatusAddedAsync.length; i++) {\r\n if (this._onStatusAddedAsync[i] !== fn) {\r\n newStatusAddedArr.push(this._onStatusAddedAsync[i]);\r\n }\r\n }\r\n\r\n this._onStatusAddedAsync = newStatusAddedArr;\r\n }\r\n\r\n public setMinecraftFlavor(newValue: MinecraftFlavor) {\r\n this.ensureMinecraft(newValue);\r\n }\r\n\r\n public get autoStartMinecraft() {\r\n if (this.#data.autoStartMinecraft === undefined) {\r\n return true;\r\n }\r\n\r\n return this.#data.autoStartMinecraft;\r\n }\r\n\r\n public set autoStartMinecraft(newValue: boolean) {\r\n this.#data.autoStartMinecraft = newValue;\r\n }\r\n\r\n get file(): IFile {\r\n return this.prefsStorage.rootFolder.ensureFile(\"mctools.json\");\r\n }\r\n\r\n get prefsProjectsFolder(): IFolder {\r\n return this.prefsStorage.rootFolder.ensureFolder(\"projects\");\r\n }\r\n\r\n get deployBehaviorPacksFolder(): IFolder | null {\r\n return this._deployBehaviorPacksFolder;\r\n }\r\n\r\n get deployResourcePacksFolder(): IFolder | null {\r\n return this._deployResourcePacksFolder;\r\n }\r\n\r\n constructor(\r\n settingsStorage: IStorage,\r\n projectsStorage: IStorage,\r\n deploymentsStorage: IStorage | null,\r\n previewDeploymentsStorage: IStorage | null,\r\n worldStorage: IStorage | null,\r\n packStorage: IStorage | null,\r\n workingStorage: IStorage | null,\r\n contentRoot: string | null\r\n ) {\r\n this.prefsStorage = settingsStorage;\r\n this.projectsStorage = projectsStorage;\r\n this.deploymentStorage = deploymentsStorage;\r\n this.previewDeploymentStorage = previewDeploymentsStorage;\r\n this.packStorage = packStorage;\r\n this.worldStorage = worldStorage;\r\n this.workingStorage = workingStorage;\r\n\r\n this._deployBehaviorPacksFolder = null;\r\n this._deployResourcePacksFolder = null;\r\n\r\n if (contentRoot) {\r\n this.contentRoot = contentRoot;\r\n }\r\n\r\n this._handleMessageFromAppService = this._handleMessageFromAppService.bind(this);\r\n this._bubbleMinecraftStateChanged = this._bubbleMinecraftStateChanged.bind(this);\r\n this._bubbleMinecraftRefreshed = this._bubbleMinecraftRefreshed.bind(this);\r\n\r\n AppServiceProxy.onMessage.subscribe(this._handleMessageFromAppService);\r\n\r\n this.#data = {\r\n successfullyConnectedWebSocketToMinecraft: false,\r\n successfullyStartedMinecraftServer: false,\r\n successfullyConnectedToRemoteMinecraft: false,\r\n autoStartMinecraft: true,\r\n showScreenOnConnect: true,\r\n customTools: [],\r\n };\r\n\r\n // in the case of a Minecraft Http Server self-hosted web page, assume all we want to do is connect back to our server\r\n if (CartoApp.baseUrl) {\r\n this.setMinecraftFlavor(MinecraftFlavor.remote);\r\n this.successfullyConnectedWebSocketToMinecraft = true;\r\n }\r\n\r\n this._isLoaded = false;\r\n this.projects = [];\r\n this.status = [];\r\n this.activeOperations = [];\r\n\r\n this.updateDeploymentStorage(deploymentsStorage);\r\n }\r\n\r\n public updateDeploymentStorage(deploymentStorage: IStorage | null) {\r\n this.deploymentStorage = deploymentStorage;\r\n\r\n if (this.deploymentStorage != null) {\r\n this._deployBehaviorPacksFolder = this.deploymentStorage.rootFolder.ensureFolder(\"development_behavior_packs\");\r\n this._deployResourcePacksFolder = this.deploymentStorage.rootFolder.ensureFolder(\"development_resource_packs\");\r\n } else {\r\n this._deployBehaviorPacksFolder = null;\r\n this._deployResourcePacksFolder = null;\r\n }\r\n\r\n this._onDeploymentStorageChanged.dispatch(this, deploymentStorage);\r\n }\r\n\r\n public initializeWorldSettings() {\r\n if (this.#data.worldSettings === undefined) {\r\n this.#data.worldSettings = {\r\n gameType: GameType.creative,\r\n generator: Generator.infinite,\r\n randomSeed: \"2000\",\r\n backupType: BackupType.every5Minutes,\r\n useCustomSettings: false,\r\n isEditor: false,\r\n packageReferences: [],\r\n };\r\n\r\n this.ensureDefaultWorldName();\r\n }\r\n }\r\n\r\n private ensureDefaultWorldName() {\r\n if (this.worldSettings && this.worldSettings.name === undefined) {\r\n this.worldSettings.name = \"world \" + Utilities.getDateStr(new Date());\r\n }\r\n }\r\n\r\n public initializeEditorWorldSettings() {\r\n if (this.#data.editorWorldSettings === undefined) {\r\n this.#data.editorWorldSettings = {\r\n gameType: GameType.creative,\r\n generator: Generator.infinite,\r\n backupType: BackupType.every5Minutes,\r\n useCustomSettings: false,\r\n isEditor: true,\r\n packageReferences: [],\r\n };\r\n\r\n this.ensureDefaultEditorWorldName();\r\n }\r\n }\r\n\r\n private ensureDefaultEditorWorldName() {\r\n if (this.editorWorldSettings && this.editorWorldSettings.name === undefined) {\r\n this.editorWorldSettings.name = \"editor project \" + Utilities.getDateStr(new Date());\r\n }\r\n }\r\n\r\n getCustomTool(index: number) {\r\n if (this.#data.customTools === undefined) {\r\n this.#data.customTools = [];\r\n }\r\n\r\n while (this.#data.customTools.length <= index) {\r\n this.#data.customTools.push({\r\n name: \"\",\r\n type: 0,\r\n text: undefined,\r\n lastRunResult: undefined,\r\n });\r\n }\r\n\r\n return this.#data.customTools[index];\r\n }\r\n\r\n get defaultFunction() {\r\n if (this.#data === undefined || this.#data.defaultFunction === undefined) {\r\n return \"\";\r\n }\r\n\r\n return this.#data.defaultFunction;\r\n }\r\n\r\n set defaultFunction(newFunction: string) {\r\n if (this.#data === undefined) {\r\n return;\r\n }\r\n\r\n this.#data.defaultFunction = Utilities.makeSafeForJson(newFunction);\r\n }\r\n\r\n async runCommand(command: string, project?: Project) {\r\n return await CommandRegistry.main.runCommand(\r\n {\r\n carto: this,\r\n project: project,\r\n minecraft: this.activeMinecraft,\r\n host: CartoApp.hostManager,\r\n },\r\n command\r\n );\r\n }\r\n\r\n async runMinecraftCommand(command: string) {\r\n if (this.activeMinecraft === undefined) {\r\n throw new Error(\"No minecraft active.\");\r\n }\r\n\r\n const result = await this.activeMinecraft.runCommand(command);\r\n\r\n return result;\r\n }\r\n\r\n async loadPacks() {\r\n if (!this.packStorage) {\r\n throw new Error(\"Could not find pack storage\");\r\n }\r\n\r\n if (this._arePacksLoading) {\r\n const pendingLoad = this._pendingPackLoadRequests;\r\n\r\n const prom = (resolve: (value: unknown) => void, reject: (reason?: any) => void) => {\r\n pendingLoad.push(resolve);\r\n };\r\n\r\n await new Promise(prom);\r\n } else {\r\n this._arePacksLoading = true;\r\n\r\n this.packs = [];\r\n\r\n // console.log(\"Loading packs from '\" + this.packStorage.rootFolder.fullPath + \"'\");\r\n await this.loadPacksFromFolder(this.packStorage.rootFolder);\r\n\r\n this._arePacksLoading = false;\r\n\r\n const pendingLoad = this._pendingPackLoadRequests;\r\n this._pendingPackLoadRequests = [];\r\n\r\n for (const prom of pendingLoad) {\r\n prom(undefined);\r\n }\r\n }\r\n }\r\n\r\n ensureAllTypesCollapsedExcept(itemType: ProjectItemType) {\r\n const newCollapsedTypes: number[] = [];\r\n\r\n for (let i = 0; i < MaxItemTypes; i++) {\r\n if (i !== itemType) {\r\n newCollapsedTypes.push(i);\r\n }\r\n }\r\n\r\n this.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n ensureTypeIsCollapsed(itemType: ProjectItemType) {\r\n for (const itemTypeCollapsed of this.collapsedTypes) {\r\n if (itemTypeCollapsed === itemType) {\r\n return;\r\n }\r\n }\r\n\r\n this.collapsedTypes.push(itemType);\r\n }\r\n\r\n ensureTypeIsNotCollapsed(itemType: ProjectItemType) {\r\n const newCollapsedTypes: number[] = [];\r\n\r\n for (const itemTypeCollapsed of this.collapsedTypes) {\r\n if (itemTypeCollapsed !== itemType) {\r\n newCollapsedTypes.push(itemTypeCollapsed);\r\n }\r\n }\r\n\r\n this.#data.collapsedTypes = newCollapsedTypes;\r\n }\r\n\r\n async loadPacksFromFolder(folder: IFolder) {\r\n await folder.load();\r\n\r\n for (let fileName in folder.files) {\r\n const file = folder.files[fileName];\r\n\r\n if (file && StorageUtilities.isContainerFile(file.storageRelativePath)) {\r\n await this.ensurePackForFile(file);\r\n }\r\n }\r\n }\r\n\r\n getPackByName(packName: string, isWorldFocused?: boolean) {\r\n if (!this.packs) {\r\n Log.unexpectedUndefined(\"GPN\");\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].matches(packName, isWorldFocused)) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getPackageByNameAndHash(packName: string, hash?: string) {\r\n if (!this.packs) {\r\n Log.unexpectedUndefined(\"GPNH\");\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].matches(packName, false) && (hash === undefined || hash === this.packs[i].data?.sourceHash)) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n return this.getPackByName(packName);\r\n }\r\n\r\n async ensurePackForFile(file: IFile) {\r\n const pack = this._ensurePack(file.storageRelativePath);\r\n\r\n await pack.ensureData(this, file);\r\n\r\n return pack;\r\n }\r\n\r\n _ensurePack(storagePath: string) {\r\n if (this.packs === undefined) {\r\n this.packs = [];\r\n }\r\n\r\n for (let i = 0; i < this.packs.length; i++) {\r\n if (this.packs[i].storagePath === storagePath) {\r\n return this.packs[i];\r\n }\r\n }\r\n\r\n const pack = new Package(StorageUtilities.getLeafName(storagePath), storagePath);\r\n\r\n this.packs.push(pack);\r\n\r\n return pack;\r\n }\r\n\r\n _handleMessageFromAppService(command: string, data: string) {\r\n switch (command) {\r\n case \"externalKeyPress\":\r\n if (data.startsWith(\"command\")) {\r\n const commandIndex = parseInt(data.substring(7, data.length));\r\n\r\n CommandRunner.runCustomTool(this, commandIndex);\r\n }\r\n break;\r\n\r\n case \"statusMessage\":\r\n const firstPipe = data.indexOf(\"|\");\r\n const content = data.substring(firstPipe + 1, data.length);\r\n\r\n try {\r\n const contentO = JSON.parse(content) as IStatus;\r\n\r\n this.notifyExternalStatus(contentO);\r\n } catch (e) {}\r\n\r\n break;\r\n\r\n case \"mctSavedInAppService\":\r\n this.load(true);\r\n break;\r\n\r\n case \"logFileUpdated\":\r\n try {\r\n if (data) {\r\n const firstPipe = data.indexOf(\"|\");\r\n\r\n if (firstPipe > 0) {\r\n const fileName = data.substring(0, firstPipe);\r\n const content = data.substring(firstPipe + 1, data.length);\r\n\r\n this._handleLogFileUpdated(fileName, content);\r\n }\r\n }\r\n } catch (e) {\r\n Log.fail(\"Error parsing inbound log: \" + e);\r\n }\r\n break;\r\n\r\n default:\r\n if (this.deploymentStorageMinecraft) {\r\n this.deploymentStorageMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.processHostedMinecraft) {\r\n this.processHostedMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.gameMinecraft) {\r\n this.gameMinecraft.processExternalMessage(command, data);\r\n }\r\n if (this.remoteMinecraft) {\r\n this.remoteMinecraft.processExternalMessage(command, data);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n _handleLogFileUpdated(fileName: string, contents: string) {\r\n if (contents === null || contents === undefined || fileName === null || fileName === undefined) {\r\n return;\r\n }\r\n\r\n let arr: string[] | undefined = this.mcLogs[fileName];\r\n\r\n if (arr === undefined) {\r\n arr = [];\r\n this.mcLogs[fileName] = arr;\r\n }\r\n\r\n const logItems = contents.split(\"\\r\");\r\n\r\n for (let i = logItems.length - 1; i >= 0; i--) {\r\n const logItem = logItems[i];\r\n\r\n if (logItem !== undefined && logItem.length > 3) {\r\n if (!arr.includes(logItem)) {\r\n arr.push(logItem);\r\n this.notifyStatusUpdate(logItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async notifyStatusUpdate(message: string, topic?: StatusTopic) {\r\n const messageCanon = message.trim().toLowerCase();\r\n\r\n if (messageCanon.length > 1) {\r\n const status = {\r\n time: new Date(),\r\n message: message,\r\n topic: topic,\r\n type: StatusType.message,\r\n };\r\n\r\n this.status.push(status);\r\n await this.callStatusAddedListeners(status);\r\n\r\n this.ensureStatusArrayIsTrimmed();\r\n }\r\n }\r\n\r\n private ensureStatusArrayIsTrimmed() {\r\n if (this.status.length > 10000) {\r\n const newStatusArr: IStatus[] = [];\r\n\r\n for (let i = this.status.length - 9000; i < this.status.length; i++) {\r\n newStatusArr.push(this.status[i]);\r\n }\r\n\r\n this.status = newStatusArr;\r\n }\r\n }\r\n\r\n async callStatusAddedListeners(status: IStatus) {\r\n this._onStatusAdded.dispatch(this, status);\r\n\r\n if (this._onStatusAddedAsync.length > 0) {\r\n let promises: Promise<void>[] = [];\r\n\r\n for (let i = 0; i < this._onStatusAddedAsync.length; i++) {\r\n promises.push(this._onStatusAddedAsync[i](this, status));\r\n }\r\n\r\n await Promise.all(promises);\r\n }\r\n }\r\n\r\n notifyExternalStatus(status: IStatus) {\r\n this.status.push(status);\r\n\r\n if (status.type === StatusType.operationStarted) {\r\n this.activeOperations.push(status);\r\n } else if (\r\n (status.type === StatusType.operationEndedComplete || status.type === StatusType.operationEndedErrors) &&\r\n status.operationId !== null &&\r\n status.operationId !== undefined\r\n ) {\r\n this.removeOperation(status.operationId);\r\n }\r\n\r\n this.callStatusAddedListeners(status);\r\n\r\n return status.operationId;\r\n }\r\n\r\n async notifyOperationStarted(message: string, topic?: StatusTopic): Promise<number> {\r\n const status: IStatus = {\r\n time: new Date(),\r\n message: message,\r\n type: StatusType.operationStarted,\r\n topic: topic,\r\n };\r\n\r\n status.operationId = status.time.getTime();\r\n\r\n this.status.push(status);\r\n this.activeOperations.push(status);\r\n\r\n this.ensureStatusArrayIsTrimmed();\r\n\r\n await this.callStatusAddedListeners(status);\r\n\r\n return status.operationId;\r\n }\r\n\r\n async notifyOperationEnded(\r\n endedOperationId: number,\r\n message?: string,\r\n topic?: StatusTopic,\r\n endedWithErrors?: boolean\r\n ) {\r\n this.ensureStatusArrayIsTrimmed();\r\n\r\n this.removeOperation(endedOperationId);\r\n\r\n this._onOperationCompleted.dispatch(this, endedOperationId);\r\n\r\n if (!message) {\r\n return;\r\n }\r\n\r\n const status = {\r\n message: message,\r\n operationId: endedOperationId,\r\n type: endedWithErrors ? StatusType.operationEndedErrors : StatusType.operationEndedComplete,\r\n time: new Date(),\r\n topic: topic,\r\n };\r\n\r\n this.status.push(status);\r\n\r\n await this.callStatusAddedListeners(status);\r\n }\r\n\r\n removeOperation(id: number) {\r\n // remove operation from list of active operations.\r\n const newActiveOperations: IStatus[] = [];\r\n\r\n for (let i = 0; i < this.activeOperations.length; i++) {\r\n const oper = this.activeOperations[i];\r\n\r\n if (oper.operationId !== id) {\r\n newActiveOperations.push(oper);\r\n }\r\n }\r\n\r\n this.activeOperations = newActiveOperations;\r\n }\r\n\r\n async save() {\r\n const configFile = this.file;\r\n\r\n configFile.setContent(JSON.stringify(this.#data, null, 2));\r\n\r\n await configFile.saveContent();\r\n\r\n if (AppServiceProxy.hasAppService) {\r\n AppServiceProxy.sendAsync(AppServiceProxyCommands.reloadMct, \"\");\r\n }\r\n }\r\n\r\n async loadGallery() {\r\n let result = null;\r\n\r\n // @ts-ignore\r\n if (typeof window !== \"undefined\") {\r\n const url = this.contentRoot + \"data/gallery.json\";\r\n\r\n try {\r\n result = await axios.get(url);\r\n\r\n if (result) {\r\n this._gallery = result.data;\r\n }\r\n } catch (e) {\r\n Log.fail(\"Could not load gallery: \" + e + \" from '\" + url + \"'\");\r\n }\r\n } else if (this.local) {\r\n try {\r\n result = await this.local.readJsonFile(\"data/gallery.json\");\r\n } catch (e) {\r\n Log.fail(\"Could not load local file: \" + e + \" from 'data/gallery.json'\");\r\n }\r\n\r\n if (result !== null) {\r\n this._gallery = result as IGallery;\r\n }\r\n }\r\n\r\n if (this._gallery) {\r\n for (const item of this._gallery.items) {\r\n if (item.sampleSet) {\r\n item.gitHubOwner = \"microsoft\";\r\n item.gitHubRepoName = \"minecraft-scripting-samples\";\r\n\r\n if (item.type === GalleryItemType.editorCodeSample) {\r\n item.gitHubFolder = \"/editor-script-box\";\r\n\r\n if (!item.tags) {\r\n item.tags = [\"editor\"];\r\n }\r\n } else {\r\n item.gitHubFolder = \"/script-box\";\r\n }\r\n }\r\n\r\n if (item.fileList) {\r\n const newFileList = [];\r\n\r\n for (const fileItem of item.fileList) {\r\n newFileList.push(MinecraftUtilities.replaceMinecraftPathTokens(fileItem));\r\n }\r\n\r\n item.fileList = newFileList;\r\n }\r\n }\r\n }\r\n\r\n this._galleryLoaded = true;\r\n\r\n this._onGalleryLoaded.dispatch(this, this._gallery);\r\n\r\n return this._gallery;\r\n }\r\n\r\n async getGalleryProjectByGitHub(\r\n repoName: string,\r\n owner: string,\r\n branch?: string,\r\n folder?: string,\r\n withFiles?: boolean\r\n ) {\r\n if (!this._galleryLoaded) {\r\n await this.loadGallery();\r\n }\r\n\r\n if (this._galleryLoaded === false || this._gallery === undefined || this._gallery.items === undefined) {\r\n return undefined;\r\n }\r\n\r\n repoName = repoName.toLowerCase();\r\n owner = owner.toLowerCase();\r\n\r\n for (const galProj of this._gallery.items) {\r\n if (\r\n galProj.gitHubRepoName.toLowerCase() === repoName &&\r\n galProj.gitHubOwner.toLowerCase() === owner &&\r\n branch === galProj.gitHubBranch &&\r\n folder === galProj.gitHubFolder &&\r\n (!withFiles || galProj.fileList)\r\n ) {\r\n return galProj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async getGalleryProjectById(galleryProjectId: string) {\r\n if (!this._galleryLoaded) {\r\n await this.loadGallery();\r\n }\r\n\r\n if (this._galleryLoaded === false || this._gallery === undefined || this._gallery.items === undefined) {\r\n return undefined;\r\n }\r\n\r\n galleryProjectId = galleryProjectId.toLowerCase();\r\n galleryProjectId = galleryProjectId.replace(/-/gi, \"\");\r\n\r\n for (const galProj of this._gallery.items) {\r\n if (galProj.id.toLowerCase() === galleryProjectId) {\r\n return galProj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async getNewProjectName(seedName: string) {\r\n await this.load();\r\n\r\n let newProjectName = seedName;\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(newProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(newProjectName)\r\n ) {\r\n counter++;\r\n newProjectName = seedName + \" \" + counter;\r\n }\r\n\r\n return newProjectName;\r\n }\r\n\r\n async createNewProject(\r\n newProjectName: string,\r\n newProjectPath: string | undefined,\r\n newProjectFolder: IFolder | undefined,\r\n newProjectFolderTitle: string | undefined,\r\n focus: ProjectFocus,\r\n includeDefaultItems: boolean,\r\n projectLanguage?: ProjectScriptLanguage\r\n ) {\r\n await this.load();\r\n\r\n const targetProjectName = await this.getNewProjectName(newProjectName);\r\n\r\n let projectPrefs;\r\n\r\n if (newProjectFolder) {\r\n projectPrefs = await newProjectFolder.ensureFileFromRelativePath(\"/.mct/prefs.mctp.json\");\r\n } else {\r\n projectPrefs = await this.prefsProjectsFolder.createFile(targetProjectName + \".json\");\r\n }\r\n\r\n const newProject = new Project(this, targetProjectName, projectPrefs);\r\n\r\n if (newProjectPath && !newProjectFolder) {\r\n newProject.mainDeployFolderPath = newProjectPath;\r\n }\r\n\r\n if (projectLanguage) {\r\n newProject.preferredScriptLanguage = projectLanguage;\r\n }\r\n\r\n if (newProjectFolder) {\r\n newProject.setProjectFolder(newProjectFolder);\r\n newProject.projectFolderTitle = newProjectFolderTitle;\r\n } else {\r\n await newProject.ensureProjectFolder();\r\n }\r\n\r\n newProject.focus = focus;\r\n\r\n if (includeDefaultItems) {\r\n await ProjectUtilities.ensureDefaultItems(newProject);\r\n }\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async createNewProjectFromFolder(path: string) {\r\n await this.load();\r\n\r\n let newProjectName = StorageUtilities.getLeafName(path);\r\n\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(newProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(newProjectName)\r\n ) {\r\n counter++;\r\n newProjectName = StorageUtilities.getLeafName(path) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(newProjectName + \".json\");\r\n\r\n const newProject = new Project(this, newProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = path;\r\n\r\n await newProject.ensureProjectFolder();\r\n\r\n await newProject.ensureInflated();\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async deleteProjectByName(projectName: string) {\r\n let projectToDelete: Project | undefined;\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.name === projectName) {\r\n if (projectToDelete !== undefined) {\r\n Log.fail(\"Encountered multiple projects with the same name.\");\r\n return;\r\n }\r\n\r\n projectToDelete = proj;\r\n }\r\n }\r\n\r\n if (projectToDelete) {\r\n await projectToDelete.deleteThisProject();\r\n\r\n this.removeProject(projectToDelete);\r\n\r\n projectToDelete.dispose();\r\n }\r\n }\r\n\r\n removeProject(project: Project) {\r\n const newProjects: Project[] = [];\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj !== project) {\r\n newProjects.push(proj);\r\n }\r\n }\r\n this.projects = newProjects;\r\n }\r\n\r\n getProjectByName(projectName: string) {\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.name === projectName) {\r\n return proj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getProjectByMainLocalFolderPath(localPath: string) {\r\n localPath = StorageUtilities.canonicalizePath(localPath);\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const proj = this.projects[i];\r\n\r\n if (proj.mainDeployFolderPath && StorageUtilities.canonicalizePath(proj.mainDeployFolderPath) === localPath) {\r\n return proj;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async ensureProjectFromLocalStoragePath(messageProjectPath: string) {\r\n if (!this.local) {\r\n Log.fail(\"Could not find local utilities.\");\r\n return;\r\n }\r\n\r\n await this.load();\r\n\r\n let desiredProjectName = StorageUtilities.canonicalizePathAsFileName(messageProjectPath);\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n const project = this.getProjectByName(desiredProjectName);\r\n const canonPath = StorageUtilities.canonicalizePath(messageProjectPath);\r\n\r\n if (project !== undefined) {\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n }\r\n\r\n // OK, a project doesn't exist, let's create one.\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(desiredProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(desiredProjectName)\r\n ) {\r\n counter++;\r\n desiredProjectName = StorageUtilities.canonicalizePathAsFileName(messageProjectPath) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(desiredProjectName + \".json\");\r\n\r\n const newProject = new Project(this, desiredProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = messageProjectPath;\r\n newProject.originalFullPath = messageProjectPath;\r\n\r\n const localStorage = await this.local.createStorage(messageProjectPath);\r\n\r\n if (localStorage === null) {\r\n Log.fail(\"Could not create local storage.\");\r\n return;\r\n }\r\n\r\n newProject.setProjectFolder(localStorage.rootFolder);\r\n\r\n await newProject.ensureProjectFolder();\r\n\r\n await ProjectItemRelations.calculate(newProject);\r\n\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async ensureProjectForFolder(folderPath: string, newProjectName?: string, openDirect?: boolean) {\r\n await this.load();\r\n\r\n let desiredProjectName = \"\";\r\n\r\n if (newProjectName !== undefined) {\r\n desiredProjectName = newProjectName;\r\n } else {\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath);\r\n }\r\n\r\n let canonPath = StorageUtilities.canonicalizePath(folderPath);\r\n\r\n let project = this.getProjectByMainLocalFolderPath(folderPath);\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n if (!project) {\r\n project = this.getProjectByName(desiredProjectName);\r\n }\r\n\r\n if (project !== undefined && !openDirect) {\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n } else if (project && openDirect) {\r\n for (let i = 1; i < 99; i++) {\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath) + \" \" + i;\r\n canonPath = StorageUtilities.canonicalizePath(folderPath) + \" \" + i;\r\n\r\n if (newProjectName !== undefined) {\r\n desiredProjectName = newProjectName;\r\n }\r\n\r\n // check to see if the expected project with the expected name exists, and use that if possible.\r\n let project = this.getProjectByName(desiredProjectName);\r\n\r\n if (!project) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // now check all other projects to see if one exists.\r\n for (let i = 0; i < this.projects.length; i++) {\r\n project = this.projects[i];\r\n\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n if (project.mainDeployFolderPath !== undefined) {\r\n if (canonPath === StorageUtilities.canonicalizePath(project.mainDeployFolderPath)) {\r\n await project.ensureInflated();\r\n await project.inferProjectItemsFromFiles();\r\n\r\n return project;\r\n }\r\n }\r\n }\r\n\r\n // OK, a project doesn't exist, let's create one.\r\n let counter = 0;\r\n\r\n while (\r\n this.prefsProjectsFolder.fileExists(desiredProjectName + \".json\") ||\r\n this.projectsStorage.rootFolder.folderExists(desiredProjectName)\r\n ) {\r\n counter++;\r\n desiredProjectName = StorageUtilities.getLeafName(folderPath) + \" \" + counter;\r\n }\r\n\r\n const projectPrefs = await this.prefsProjectsFolder.createFile(desiredProjectName + \".json\");\r\n\r\n const newProject = new Project(this, desiredProjectName, projectPrefs);\r\n newProject.mainDeployFolderPath = folderPath;\r\n newProject.originalFullPath = folderPath;\r\n\r\n await newProject.ensureProjectFolder();\r\n await newProject.inferProjectItemsFromFiles();\r\n\r\n this.projects.push(newProject);\r\n\r\n return newProject;\r\n }\r\n\r\n async getExportZip() {\r\n const zs = new ZipStorage();\r\n\r\n const zipRoot = zs.rootFolder;\r\n\r\n await this.load();\r\n\r\n for (let i = 0; i < this.projects.length; i++) {\r\n const project = this.projects[i];\r\n\r\n await project.ensurePreferencesAndFolderLoadedFromFile();\r\n\r\n await project.ensureProjectFolder();\r\n\r\n if (project.projectFolder) {\r\n const projectTargetFolder = zipRoot.ensureFolder(project.name);\r\n\r\n await StorageUtilities.syncFolderTo(project.projectFolder, projectTargetFolder, true, true, false);\r\n }\r\n }\r\n\r\n await zipRoot.saveAll();\r\n\r\n return zs;\r\n }\r\n\r\n async load(force?: boolean) {\r\n if (this._isLoaded && !force) {\r\n return;\r\n }\r\n\r\n const configFile = this.file;\r\n\r\n await configFile.loadContent(false);\r\n\r\n if (configFile.content !== null && configFile.content !== undefined && typeof configFile.content === \"string\") {\r\n this.#data = JSON.parse(configFile.content as string);\r\n }\r\n\r\n const projectsFolder = this.prefsProjectsFolder;\r\n\r\n await projectsFolder.load();\r\n\r\n await this.projectsStorage.rootFolder.load();\r\n\r\n this.projects = [];\r\n\r\n for (const fileName in projectsFolder.files) {\r\n const projectName = StorageUtilities.getBaseFromName(fileName);\r\n\r\n const projectFile = projectsFolder.files[fileName];\r\n\r\n if (projectFile !== undefined) {\r\n const project = new Project(this, projectName, projectFile);\r\n\r\n this.projects.push(project);\r\n }\r\n }\r\n\r\n this.considerStartingMinecraft(); // explicitly not awaiting this since this might take a while and is not strictly necessary.\r\n\r\n this.initializeWorldSettings();\r\n\r\n this.ensureDefaultWorldName();\r\n\r\n this._onLoaded.dispatch(this, this);\r\n\r\n this._isLoaded = true;\r\n }\r\n\r\n public async considerStartingMinecraft() {\r\n if (CartoApp.hostType === HostType.webPlusServices || CartoApp.hostType === HostType.web) {\r\n if (\r\n this.successfullyConnectedWebSocketToMinecraft &&\r\n (this.autoStartMinecraft || this.lastActiveMinecraftFlavor === MinecraftFlavor.remote)\r\n ) {\r\n this.ensureRemoteMinecraft();\r\n\r\n if (\r\n this.remoteMinecraft &&\r\n CartoApp.hostType === HostType.web &&\r\n CartoApp.carto &&\r\n CartoApp.carto.remoteServerUrl &&\r\n CartoApp.carto.remoteServerUrl.length > 4\r\n ) {\r\n this.remoteMinecraft.initialize();\r\n\r\n if (!this.activeMinecraft && this.lastActiveMinecraftFlavor === MinecraftFlavor.remote) {\r\n this.activeMinecraft = this.remoteMinecraft;\r\n\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.remote;\r\n }\r\n }\r\n\r\n if (CartoApp.isAppServiceWeb) {\r\n this.ensureGameMinecraft();\r\n\r\n if (this.gameMinecraft) {\r\n this.gameMinecraft.initialize();\r\n }\r\n\r\n if (!this.activeMinecraft && this.lastActiveMinecraftFlavor === MinecraftFlavor.minecraftGameProxy) {\r\n this.activeMinecraft = this.gameMinecraft;\r\n\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.minecraftGameProxy;\r\n }\r\n }\r\n }\r\n\r\n if (\r\n this.successfullyStartedMinecraftServer &&\r\n this.lastActiveMinecraftFlavor === MinecraftFlavor.processHostedProxy &&\r\n this.autoStartMinecraft\r\n ) {\r\n await this.connectToMinecraft();\r\n }\r\n }\r\n }\r\n\r\n public async connectToMinecraft() {\r\n if (!this.lastActiveMinecraftFlavor) {\r\n return;\r\n }\r\n\r\n this.ensureMinecraft(this.lastActiveMinecraftFlavor);\r\n\r\n if (this.activeMinecraft) {\r\n const status = await this.activeMinecraft.updateStatus();\r\n\r\n if (\r\n status === CartoMinecraftState.disconnected ||\r\n status === CartoMinecraftState.error ||\r\n status === CartoMinecraftState.none ||\r\n status === CartoMinecraftState.stopped ||\r\n status === CartoMinecraftState.stopping ||\r\n status === CartoMinecraftState.newMinecraft\r\n ) {\r\n await this.activeMinecraft.initialize();\r\n }\r\n }\r\n }\r\n\r\n public canPrepareAndStartMinecraft() {\r\n if (!this.activeMinecraft) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.activeMinecraftState !== CartoMinecraftState.initialized &&\r\n this.activeMinecraftState !== CartoMinecraftState.preparing &&\r\n this.activeMinecraftState !== CartoMinecraftState.prepared &&\r\n this.activeMinecraftState !== CartoMinecraftState.starting &&\r\n this.activeMinecraftState !== CartoMinecraftState.started\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async prepareAndStartToMinecraft(push: MinecraftPush) {\r\n if (!this.canPrepareAndStartMinecraft || !this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n await this.activeMinecraft.prepareAndStart(push);\r\n }\r\n private _bubbleMinecraftRefreshed(minecraft: IMinecraft, newState: CartoMinecraftState) {\r\n if (minecraft !== this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n this._onMinecraftRefreshed.dispatch(minecraft, newState);\r\n }\r\n\r\n private _bubbleMinecraftStateChanged(minecraft: IMinecraft, newState: CartoMinecraftState) {\r\n if (minecraft !== this.activeMinecraft) {\r\n return;\r\n }\r\n\r\n if (!this.successfullyConnectedWebSocketToMinecraft && newState === CartoMinecraftState.initialized) {\r\n this.successfullyConnectedWebSocketToMinecraft = true;\r\n this.save();\r\n }\r\n\r\n if (newState === CartoMinecraftState.prepared) {\r\n Log.message(\"Minecraft is ready.\");\r\n } else if (newState === CartoMinecraftState.started) {\r\n // Log.message(\"Connected to Minecraft.\");\r\n } else if (newState === CartoMinecraftState.stopping) {\r\n Log.message(\"Disconnecting from Minecraft.\");\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(minecraft, newState);\r\n }\r\n\r\n public ensureRemoteMinecraft() {\r\n return this.remoteMinecraft;\r\n }\r\n\r\n public ensureProcessHostedMinecraft() {\r\n return this.processHostedMinecraft;\r\n }\r\n\r\n public ensureDeploymentStorageMinecraft() {\r\n if (this.deploymentStorageMinecraft === undefined) {\r\n this.deploymentStorageMinecraft = new DeploymentStorageMinecraft(this);\r\n }\r\n\r\n return this.deploymentStorageMinecraft;\r\n }\r\n\r\n public ensureGameMinecraft() {\r\n return this.gameMinecraft;\r\n }\r\n\r\n public ensureMinecraft(flavor: MinecraftFlavor) {\r\n if (flavor === MinecraftFlavor.none) {\r\n return undefined;\r\n }\r\n\r\n if (this.activeMinecraft && this.lastActiveMinecraftFlavor === flavor) {\r\n return this.activeMinecraft;\r\n }\r\n\r\n this.ensureRemoteMinecraft();\r\n\r\n if (flavor === MinecraftFlavor.processHostedProxy) {\r\n this.ensureProcessHostedMinecraft();\r\n } else if (flavor === MinecraftFlavor.deploymentStorage) {\r\n this.ensureDeploymentStorageMinecraft();\r\n } else if (flavor === MinecraftFlavor.minecraftGameProxy) {\r\n this.ensureGameMinecraft();\r\n }\r\n\r\n if (this.activeMinecraft) {\r\n this.activeMinecraft.onStateChanged.unsubscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.unsubscribe(this._bubbleMinecraftRefreshed);\r\n }\r\n\r\n if (flavor === MinecraftFlavor.remote) {\r\n if (!this.remoteMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMR\");\r\n return;\r\n }\r\n\r\n this.activeMinecraft = this.remoteMinecraft;\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.remote) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.remote;\r\n this.save();\r\n }\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMA\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.minecraftGameProxy) {\r\n if (!this.gameMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMG\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.gameMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.minecraftGameProxy) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.minecraftGameProxy;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMB\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.processHostedProxy) {\r\n if (!this.processHostedMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMC\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.processHostedMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.processHostedProxy) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.processHostedProxy;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (flavor === MinecraftFlavor.deploymentStorage) {\r\n if (!this.deploymentStorageMinecraft) {\r\n Log.throwUnexpectedUndefined(\"EMCD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft = this.deploymentStorageMinecraft;\r\n\r\n if (this.lastActiveMinecraftFlavor !== MinecraftFlavor.deploymentStorage) {\r\n this.lastActiveMinecraftFlavor = MinecraftFlavor.deploymentStorage;\r\n this.save();\r\n }\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n if (this.activeMinecraft === undefined) {\r\n Log.unexpectedUndefined(\"EMDD\");\r\n return undefined;\r\n }\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n } else if (\r\n this.createMinecraft === undefined ||\r\n this.canCreateMinecraft === undefined ||\r\n !this.canCreateMinecraft(flavor)\r\n ) {\r\n Log.debugAlert(\"Requested creation of an unavailable Minecraft.\");\r\n flavor = MinecraftFlavor.none;\r\n } else {\r\n const newMinecraft = this.createMinecraft(flavor, this);\r\n\r\n if (!newMinecraft) {\r\n Log.debugAlert(\"Could not create a requested Minecraft.\");\r\n flavor = MinecraftFlavor.none;\r\n } else {\r\n this.activeMinecraft = newMinecraft;\r\n this.lastActiveMinecraftFlavor = flavor;\r\n\r\n this._onMinecraftStateChanged.dispatch(this.activeMinecraft, CartoMinecraftState.newMinecraft);\r\n\r\n this.activeMinecraft.onStateChanged.subscribe(this._bubbleMinecraftStateChanged);\r\n this.activeMinecraft.onRefreshed.subscribe(this._bubbleMinecraftRefreshed);\r\n }\r\n }\r\n\r\n this.lastActiveMinecraftFlavor = flavor;\r\n\r\n this.save();\r\n return this.activeMinecraft;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/app/IProjectData.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/app/IProjectData.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAUlC,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,qEAAgB,CAAA;IAChB,uEAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;AAED,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,yDAAa,CAAA;IACb,iDAAS,CAAA;IACT,2EAAsB,CAAA;IACtB,qEAAmB,CAAA;AACrB,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB;AAED,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,6EAAc,CAAA;IACd,6EAAc,CAAA;AAChB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAED,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,2EAAc,CAAA;IACd,uEAAY,CAAA;AACd,CAAC,EAHW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAG/B;AAED,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,6EAAc,CAAA;IACd,uEAAW,CAAA;IACX,+DAAO,CAAA;AACT,CAAC,EAJW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAIhC;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,+DAAiB,CAAA;IACjB,6CAAQ,CAAA;IACR,qDAAY,CAAA;AACd,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB","file":"../../app/IProjectData.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IProjectItemData from \"./IProjectItemData\";\r\nimport IGitHubInfo from \"./IGitHubInfo\";\r\nimport ITool from \"./ITool\";\r\nimport { IWorldSettings } from \"../minecraft/IWorldSettings\";\r\nimport IStatus from \"./Status\";\r\nimport { MinecraftTrack } from \"./ICartoData\";\r\nimport IProjectVariant from \"./IProjectVariant\";\r\n\r\nexport enum ProjectDataType {\r\n localStorage = 0,\r\n clientStorage = 1,\r\n}\r\n\r\nexport enum ProjectFocus {\r\n general = 0,\r\n gameTests = 1,\r\n world = 2,\r\n focusedCodeSnippet = 3,\r\n editorExtension = 4,\r\n}\r\n\r\nexport enum ProjectScriptLanguage {\r\n javaScript = 0,\r\n typeScript = 1,\r\n}\r\n\r\nexport enum ProjectScriptVersion {\r\n latestBeta = 0,\r\n stable10 = 1,\r\n}\r\n\r\nexport enum ProjectEditPreference {\r\n summarized = 0,\r\n editors = 1,\r\n raw = 2,\r\n}\r\n\r\nexport enum ProjectRole {\r\n general = 0,\r\n documentation = 1,\r\n meta = 2,\r\n explorer = 3,\r\n}\r\n\r\nexport default interface IProjectData {\r\n dataType: ProjectDataType;\r\n storageBasePath: string;\r\n name: string;\r\n title: string;\r\n shortName?: string;\r\n creator?: string;\r\n defaultNamespace?: string;\r\n scriptEntryPoint?: string;\r\n description: string;\r\n focus: ProjectFocus;\r\n role?: ProjectRole;\r\n projectFolderTitle?: string;\r\n variants: { [variant: string]: IProjectVariant };\r\n\r\n track?: MinecraftTrack;\r\n\r\n editPreference: ProjectEditPreference;\r\n\r\n gitHubReferences?: IGitHubInfo[];\r\n\r\n collapsedStoragePaths?: string[];\r\n\r\n preferredTools?: ITool[];\r\n\r\n preferredScriptLanguage?: ProjectScriptLanguage;\r\n scriptVersion?: ProjectScriptVersion;\r\n\r\n versionMajor?: number;\r\n versionMinor?: number;\r\n versionPatch?: number;\r\n usesCustomWorldSettings?: boolean;\r\n worldSettings?: IWorldSettings;\r\n editorWorldSettings?: IWorldSettings;\r\n autoDeploymentMode?: number;\r\n\r\n lastMapDeployedDate?: Date;\r\n lastMapDeployedHash?: string;\r\n\r\n showHiddenItems?: boolean;\r\n showFunctions?: boolean;\r\n showAssets?: boolean;\r\n showTypes?: boolean;\r\n\r\n gitHubRepoName?: string;\r\n gitHubOwner?: string;\r\n gitHubFolder?: string;\r\n gitHubBranch?: string;\r\n\r\n originalGalleryId?: string;\r\n originalSampleId?: string;\r\n originalFullPath?: string;\r\n originalFileList?: string[];\r\n originalGitHubRepoName?: string;\r\n originalGitHubOwner?: string;\r\n originalGitHubBranch?: string;\r\n originalGitHubFolder?: string;\r\n\r\n defaultBehaviorPackUniqueId: string;\r\n defaultBehaviorPackVersion?: number[];\r\n defaultResourcePackUniqueId: string;\r\n defaultResourcePackVersion?: number[];\r\n defaultDataUniqueId: string;\r\n defaultScriptModuleUniqueId: string;\r\n contentsModified: Date | null;\r\n\r\n localFolderPath?: string;\r\n mainDeployFolderPath?: string;\r\n localFilePath?: string;\r\n dataStorageRelativePath: string;\r\n messages?: IStatus[];\r\n\r\n items: IProjectItemData[];\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/app/IProjectItemData.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/app/IProjectItemData.ts"],"names":[],"mappings":"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","file":"../../app/IProjectItemData.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IGitHubInfo from \"./IGitHubInfo\";\r\nimport IProjectItemVariant from \"./IProjectItemVariant\";\r\n\r\nexport const MaxItemTypes = 138;\r\n\r\nexport enum ProjectItemCategory {\r\n assets,\r\n logic,\r\n types,\r\n build,\r\n documentation,\r\n meta,\r\n package,\r\n unknown,\r\n mctools,\r\n}\r\n\r\nexport enum ProjectItemType {\r\n unknown = 0,\r\n testJs = 1,\r\n js = 2,\r\n catalogIndexJs = 3,\r\n structure = 4,\r\n behaviorPackManifestJson = 5,\r\n json = 6,\r\n MCWorld = 7,\r\n MCTemplate = 8,\r\n MCFunction = 9,\r\n entityTypeBehavior = 10,\r\n entityTypeBaseJs = 11,\r\n actionSet = 12,\r\n ts = 13,\r\n resourcePackManifestJson = 14,\r\n worldTest = 15,\r\n worldFolder = 16,\r\n behaviorPackListJson = 17,\r\n resourcePackListJson = 18,\r\n animationBehaviorJson = 19,\r\n animationControllerBehaviorJson = 20,\r\n blockTypeBehavior = 21,\r\n blockMaterialsBehaviorJson = 22,\r\n itemTypeBehavior = 23,\r\n lootTableBehavior = 24,\r\n biomeResourceJson = 25,\r\n blocksCatalogResourceJson = 26,\r\n soundCatalog = 27,\r\n animationResourceJson = 28,\r\n animationControllerResourceJson = 29,\r\n entityTypeResource = 30,\r\n fogResourceJson = 31,\r\n modelGeometryJson = 32,\r\n particleJson = 33,\r\n renderControllerJson = 34,\r\n ninesliceJson = 35,\r\n uiJson = 36,\r\n languagesCatalogResourceJson = 37,\r\n biomeBehaviorJson = 38,\r\n dialogueBehaviorJson = 39,\r\n featureRuleBehaviorJson = 40,\r\n featureBehavior = 41,\r\n functionEventJson = 42,\r\n recipeBehavior = 43,\r\n spawnRuleBehavior = 44,\r\n tradingBehaviorJson = 45,\r\n volumeBehaviorJson = 46,\r\n attachableResourceJson = 47,\r\n itemTypeResourceJson = 48, // note this is the 1.10 definition of item resources, more modern items use attachables?\r\n materialsResourceJson = 49,\r\n musicDefinitionJson = 50,\r\n soundDefinitionCatalog = 51,\r\n blockTypeResourceJsonDoNotUse = 52, // deprecated - Duplicate of blocksCatalogResourceJson\r\n MCAddon = 53,\r\n zip = 54,\r\n MCPack = 55,\r\n documentedTypeFolder = 56,\r\n documentedCommandFolder = 57,\r\n tsconfigJson = 58,\r\n packageJson = 59,\r\n packageLockJson = 60,\r\n docInfoJson = 61,\r\n scriptTypesJson = 62,\r\n commandSetDefinitionJson = 63,\r\n jsconfigJson = 64,\r\n docfxJson = 65,\r\n jsdocJson = 66,\r\n skinPackManifestJson = 67,\r\n worldTemplateManifestJson = 68,\r\n buildProcessedJs = 69,\r\n entityTypeBaseTs = 70,\r\n blockTypeBaseJs = 71,\r\n blockTypeBaseTs = 72,\r\n MCProject = 73,\r\n image = 74,\r\n vsCodeLaunchJson = 75,\r\n vsCodeTasksJson = 76,\r\n vsCodeSettingsJson = 77,\r\n vsCodeExtensionsJson = 78,\r\n lang = 79,\r\n projectSummaryMetadata = 80,\r\n tickJson = 81,\r\n cameraJson = 82,\r\n material = 83,\r\n materialSetJson = 84,\r\n materialVertex = 85,\r\n materialFragment = 86,\r\n materialGeometry = 87, // NOTE: this is a /materials specific .geometry file, and not a .geo.json type file (which is modelGeometryJson)\r\n lightingJson = 88,\r\n textureSetJson = 89,\r\n flipbookTexturesJson = 91,\r\n itemTextureJson = 92,\r\n terrainTextureCatalogResourceJson = 93,\r\n globalVariablesJson = 94,\r\n dataForm = 95,\r\n dimensionJson = 96,\r\n behaviorPackHistoryListJson = 97,\r\n resourcePackHistoryListJson = 98,\r\n texture = 99,\r\n marketingAssetImage = 100,\r\n storeAssetImage = 101,\r\n uiTexture = 102,\r\n iconImage = 103,\r\n textureListJson = 104,\r\n fileListArrayJson = 105,\r\n vanillaDataJson = 106,\r\n engineOrderingJson = 107,\r\n audio = 108,\r\n behaviorPackFolder = 109,\r\n resourcePackFolder = 110,\r\n skinPackFolder = 111,\r\n contentIndexJson = 112,\r\n contentReportJson = 113,\r\n levelDbLdb = 114,\r\n levelDbLog = 115,\r\n levelDbCurrent = 116,\r\n levelDbManifest = 117,\r\n levelDat = 118,\r\n justConfigTs = 119,\r\n esLintConfigMjs = 120,\r\n env = 121,\r\n prettierRcJson = 122,\r\n skinCatalogJson = 123,\r\n tagsMetadata = 124,\r\n personaManifestJson = 125,\r\n personaPackFolder = 126,\r\n blockCulling = 127,\r\n craftingItemCatalog = 128,\r\n mcToolsProjectPreferences = 129,\r\n educationJson = 130,\r\n aimAssistJson = 131,\r\n colorGradingJson = 132,\r\n atmosphericsJson = 133,\r\n pbrJson = 134,\r\n pointLightsJson = 135,\r\n waterJson = 136,\r\n shadowsJson = 137,\r\n}\r\n\r\nexport enum ProjectItemStorageType {\r\n singleFile = 0,\r\n folder = 1,\r\n}\r\n\r\nexport enum ProjectItemEditPreference {\r\n projectDefault = 0,\r\n forceEditor = 1,\r\n forceRaw = 2,\r\n}\r\n\r\nexport enum ProjectItemErrorStatus {\r\n none = 0,\r\n unprocessable = 1,\r\n}\r\n\r\nexport enum ProjectItemCreationType {\r\n normal = 0,\r\n generated = 1,\r\n build = 2,\r\n dist = 3,\r\n}\r\n\r\nexport default interface IProjectItemData {\r\n itemType: ProjectItemType;\r\n projectPath: string | null | undefined;\r\n storagePath?: string | null | undefined; // legacy name for projectPath, no longer used.\r\n variants: { [label: string]: IProjectItemVariant };\r\n tags: string[];\r\n name: string;\r\n source?: string;\r\n isInWorld?: boolean;\r\n storageType: ProjectItemStorageType | undefined;\r\n gitHubReference?: IGitHubInfo;\r\n creationType?: ProjectItemCreationType;\r\n editPreference?: ProjectItemEditPreference;\r\n errorMessage?: string;\r\n errorStatus?: ProjectItemErrorStatus;\r\n items?: IProjectItemData[];\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/app/IProjectItemVariant.ts"],"names":[],"mappings":";;;AAEA,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,yEAAW,CAAA;IACX,yEAAW,CAAA;AACb,CAAC,EAHW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAGjC","file":"../../app/IProjectItemVariant.js","sourcesContent":["import { ProjectItemCreationType, ProjectItemErrorStatus } from \"./IProjectItemData\";\r\n\r\nexport enum ProjectItemVariantType {\r\n general = 0,\r\n subPack = 1,\r\n}\r\n\r\nexport default interface IProjectItemVariant {\r\n label: string;\r\n variantType: ProjectItemVariantType;\r\n projectPath?: string;\r\n creationType?: ProjectItemCreationType;\r\n errorMessage?: string;\r\n errorStatus?: ProjectItemErrorStatus;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/app/IProjectVariant.ts"],"names":[],"mappings":"","file":"../../app/IProjectVariant.js","sourcesContent":["export default interface IProjectVariant {\r\n label: string;\r\n}\r\n"]}
|