From b5464c7d51fc81887067d0b6ad75a44c826a5837 Mon Sep 17 00:00:00 2001 From: misode Date: Sun, 28 Nov 2021 22:40:21 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20092df?= =?UTF-8?q?31944acdcc61c93ca8bf092ad4ed2f78055=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 +- advancement/index.html | 2 +- assets/blockstate/index.html | 2 +- assets/cs.37c115ad.js | 2 ++ assets/cs.37c115ad.js.map | 1 + assets/en.a5ec0fd2.js | 2 -- assets/en.a5ec0fd2.js.map | 1 - assets/en.e6e6bb17.js | 2 ++ assets/en.e6e6bb17.js.map | 1 + assets/index.4b6d67ca.js | 2 -- assets/index.e5f6d834.js | 2 ++ assets/{index.4b6d67ca.js.map => index.e5f6d834.js.map} | 2 +- assets/index.html | 2 +- assets/ja.3170354d.js | 2 ++ assets/ja.3170354d.js.map | 1 + assets/ja.49e40b08.js | 2 -- assets/ja.49e40b08.js.map | 1 - assets/model/index.html | 2 +- assets/sk.d4265232.js | 2 ++ assets/sk.d4265232.js.map | 1 + changelog/index.html | 2 +- dimension-type/index.html | 2 +- dimension/index.html | 2 +- index.html | 2 +- item-modifier/index.html | 2 +- loot-table/index.html | 2 +- predicate/index.html | 2 +- recipe/index.html | 2 +- sounds/index.html | 2 +- world/index.html | 2 +- worldgen/biome/index.html | 2 +- worldgen/carver/index.html | 2 +- worldgen/feature/index.html | 2 +- worldgen/index.html | 2 +- worldgen/noise-settings/index.html | 2 +- worldgen/noise/index.html | 2 +- worldgen/placed-feature/index.html | 2 +- worldgen/processor-list/index.html | 2 +- worldgen/structure-feature/index.html | 2 +- worldgen/surface-builder/index.html | 2 +- worldgen/template-pool/index.html | 2 +- 41 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 assets/cs.37c115ad.js create mode 100644 assets/cs.37c115ad.js.map delete mode 100644 assets/en.a5ec0fd2.js delete mode 100644 assets/en.a5ec0fd2.js.map create mode 100644 assets/en.e6e6bb17.js create mode 100644 assets/en.e6e6bb17.js.map delete mode 100644 assets/index.4b6d67ca.js create mode 100644 assets/index.e5f6d834.js rename assets/{index.4b6d67ca.js.map => index.e5f6d834.js.map} (99%) create mode 100644 assets/ja.3170354d.js create mode 100644 assets/ja.3170354d.js.map delete mode 100644 assets/ja.49e40b08.js delete mode 100644 assets/ja.49e40b08.js.map create mode 100644 assets/sk.d4265232.js create mode 100644 assets/sk.d4265232.js.map diff --git a/404.html b/404.html index 9efe417e..a7d9ad73 100644 --- a/404.html +++ b/404.html @@ -20,7 +20,7 @@ 404 - + diff --git a/advancement/index.html b/advancement/index.html index 0504bcf4..4da77cb4 100644 --- a/advancement/index.html +++ b/advancement/index.html @@ -20,7 +20,7 @@ Advancement Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/assets/blockstate/index.html b/assets/blockstate/index.html index eca973a8..7439fdcb 100644 --- a/assets/blockstate/index.html +++ b/assets/blockstate/index.html @@ -20,7 +20,7 @@ Blockstate Generator Minecraft 1.18 - + diff --git a/assets/cs.37c115ad.js b/assets/cs.37c115ad.js new file mode 100644 index 00000000..97cbe800 --- /dev/null +++ b/assets/cs.37c115ad.js @@ -0,0 +1,2 @@ +var e=JSON.parse('{"advancement.criteria":"Kritéria","advancement.display":"Zobrazit","advancement.display.announce_to_chat":"Oznámit do chatu","advancement.display.background":"Pozadí","advancement.display.description":"Popisek","advancement.display.frame":"Rám","advancement.display.frame.challenge":"Výzva","advancement.display.frame.goal":"Cíl","advancement.display.frame.task":"Úkol","advancement.display.help":"Pokud je k dispozici, pokrok bude viditelný na kartách pokroku.","advancement.display.hidden":"Skrytý","advancement.display.icon":"Ikona","advancement.display.icon.item":"Ikona itemu","advancement.display.icon.nbt":"Ikona NBT","advancement.display.show_toast":"Ukaž toast","advancement.display.title":"Titul","advancement.parent":"Pokrok rodičů","advancement.rewards":"Odměna","advancement.rewards.experience":"Zkušenosti","advancement.rewards.function":"Funkce","advancement.rewards.loot":"Loot tabulky","advancement.rewards.recipes":"Recepty","advancement_trigger.bee_nest_destroyed":"Včelí hnízdo zničeno","advancement_trigger.bred_animals":"Chovaná zvířata","advancement_trigger.brewed_potion":"Uvařený lektvar","advancement_trigger.changed_dimension":"Změněný rozměr","advancement_trigger.channeled_lightning":"Kanálový blesk","advancement_trigger.construct_beacon":"Vytvořte maják","advancement_trigger.consume_item":"Konzumujte položku","advancement_trigger.cured_zombie_villager":"Vyléčený zombie vesničan","advancement_trigger.effects_changed":"Efekty změněny","advancement_trigger.enchanted_item":"Okouzlený předmět","advancement_trigger.enter_block":"Zadejte blok","advancement_trigger.entity_hurt_player":"Entita zranila hráče","advancement_trigger.entity_killed_player":"Entita zabila hráče","advancement_trigger.fall_from_height":"Pád z výšky","advancement_trigger.filled_bucket":"Naplněný kbelík","advancement_trigger.fishing_rod_hooked":"Rybářský prut zaháknut","advancement_trigger.hero_of_the_village":"Hrdina vesnice","advancement_trigger.impossible":"Nemožné","advancement_trigger.inventory_changed":"Inventář se změnil","advancement_trigger.item_durability_changed":"Trvanlivost itemu se změnila","advancement_trigger.item_used_on_block":"Item použitý na bloku","advancement_trigger.killed_by_crossbow":"Zabit lukem","advancement_trigger.levitation":"Levitace","advancement_trigger.location":"Lokace","advancement_trigger.nether_travel":"Nether cestování","advancement_trigger.placed_block":"Položit block","advancement_trigger.player_generates_container_loot":"Hráč generuje kořist lootu","advancement_trigger.player_hurt_entity":"Hráč zranil entitu","advancement_trigger.player_killed_entity":"Hráč zabil entitu","advancement_trigger.recipe_unlocked":"Recept odemčen","advancement_trigger.ride_entity_in_lava":"Jízda na entitě v lávě","advancement_trigger.safely_harvest_honey":"Bezpečně sklízejte med","advancement_trigger.shot_crossbow":"Střílet z kuše","advancement_trigger.slept_in_bed":"Spát v posteli","advancement_trigger.slide_down_block":"Posuňte blok dolů","advancement_trigger.summoned_entity":"Přivolat entitu","advancement_trigger.tame_animal":"Zkrotit zvíře","advancement_trigger.target_hit":"Cílový zásah","advancement_trigger.thrown_item_picked_up_by_entity":"Vhozená položka sebrala entitou","advancement_trigger.tick":"Klíště","advancement_trigger.used_ender_eye":"Použité ender oko","advancement_trigger.used_totem":"Použít totem","advancement_trigger.villager_trade":"Obchod s vesničanem","advancement_trigger.voluntary_exile":"Dobrovolný exil","attribute.generic_armor":"Brnění","attribute.generic_armor_toughness":"Tuhost brnění","attribute.generic_attack_damage":"Poškození při útoku","attribute.generic_attack_knockback":"Zpětný úder útoku","attribute.generic_attack_speed":"Rychlost útoku","attribute.generic_flying_speed":"Rychlost létaní","attribute.generic_follow_range":"Sledujte rozsah","attribute.generic_knockback_resistance":"Odolnost proti zpětnému rázu","attribute.generic_luck":"Štěstí","attribute.generic_max_health":"Max zdraví","attribute.generic_movement_speed":"Rychlost pohybu","attribute.horse.jump_strength":"Síla skoku","attribute.zombie.spawn_reinforcements":"Spawn posily","attribute_modifier.amount":"Množství","attribute_modifier.attribute":"Vlastnost","attribute_modifier.name":"Jméno","attribute_modifier.operation":"Operace","attribute_modifier.operation.addition":"Přidání","attribute_modifier.operation.multiply_base":"Násobit základ","attribute_modifier.operation.multiply_total":"Vynásobte celkem","attribute_modifier.slot":"Sloty","attribute_modifier.slot.list":"Násobit","attribute_modifier.slot.string":"Jediný","axis.x":"X","axis.y":"Y","axis.z":"Z","badge.experimental":"Experimentální","badge.unstable":"Nestabilní","biome.carvers":"Řezbáři","biome.carvers.air":"Vzduch","biome.carvers.liquid":"Kapalina","biome.category":"Kategorie","biome.creature_spawn_probability":"Pravděpodobnost spawnování tvora","biome.depth":"Hloubka","biome.depth.help":"Zvyšuje nebo snižuje terén. Kladné hodnoty jsou považovány za pevninu a záporné za oceány.","biome.downfall":"Pád","biome.effects":"Efekt","biome.effects.additions_sound":"Zvuk dodatků","biome.effects.additions_sound.sound":"Zvuk","biome.effects.additions_sound.tick_chance":"Zaškrtněte šanci"}');export default e; +//# sourceMappingURL=cs.37c115ad.js.map diff --git a/assets/cs.37c115ad.js.map b/assets/cs.37c115ad.js.map new file mode 100644 index 00000000..d95c61f9 --- /dev/null +++ b/assets/cs.37c115ad.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cs.37c115ad.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/en.a5ec0fd2.js b/assets/en.a5ec0fd2.js deleted file mode 100644 index bda6a898..00000000 --- a/assets/en.a5ec0fd2.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=JSON.parse('{"advancement.criteria":"Criteria","advancement.display":"Display","advancement.display.announce_to_chat":"Announce to chat","advancement.display.background":"Background","advancement.display.description":"Description","advancement.display.frame":"Frame","advancement.display.frame.challenge":"Challenge","advancement.display.frame.goal":"Goal","advancement.display.frame.task":"Task","advancement.display.help":"If present, advancement will be visible in the advancement tabs.","advancement.display.hidden":"Hidden","advancement.display.icon":"Icon","advancement.display.icon.item":"Icon item","advancement.display.icon.nbt":"Icon NBT","advancement.display.show_toast":"Show toast","advancement.display.title":"Title","advancement.parent":"Parent advancement","advancement.rewards":"Rewards","advancement.rewards.experience":"Experience","advancement.rewards.function":"Function","advancement.rewards.loot":"Loot tables","advancement.rewards.recipes":"Recipes","advancement_trigger.bee_nest_destroyed":"Bee nest destroyed","advancement_trigger.bred_animals":"Bred animals","advancement_trigger.brewed_potion":"Brewed potion","advancement_trigger.changed_dimension":"Changed dimension","advancement_trigger.channeled_lightning":"Channeled lightning","advancement_trigger.construct_beacon":"Construct beacon","advancement_trigger.consume_item":"Consume item","advancement_trigger.cured_zombie_villager":"Cured zombie villager","advancement_trigger.effects_changed":"Effects changed","advancement_trigger.enchanted_item":"Enchanted item","advancement_trigger.enter_block":"Enter block","advancement_trigger.entity_hurt_player":"Entity hurt player","advancement_trigger.entity_killed_player":"Entity killed player","advancement_trigger.fall_from_height":"Fall from height","advancement_trigger.filled_bucket":"Filled bucket","advancement_trigger.fishing_rod_hooked":"Fishing rod hooked","advancement_trigger.hero_of_the_village":"Hero of the village","advancement_trigger.impossible":"Impossible","advancement_trigger.inventory_changed":"Inventory changed","advancement_trigger.item_durability_changed":"Item durability changed","advancement_trigger.item_used_on_block":"Item used on block","advancement_trigger.killed_by_crossbow":"Killed by crossbow","advancement_trigger.levitation":"Levitation","advancement_trigger.location":"Location","advancement_trigger.nether_travel":"Nether travel","advancement_trigger.placed_block":"Placed block","advancement_trigger.player_generates_container_loot":"Player generates container loot","advancement_trigger.player_hurt_entity":"Player hurt entity","advancement_trigger.player_killed_entity":"Player killed entity","advancement_trigger.recipe_unlocked":"Recipe unlocked","advancement_trigger.ride_entity_in_lava":"Ride entity in lava","advancement_trigger.safely_harvest_honey":"Safely harvest honey","advancement_trigger.shot_crossbow":"Shot crossbow","advancement_trigger.slept_in_bed":"Slept in bed","advancement_trigger.slide_down_block":"Slide down block","advancement_trigger.summoned_entity":"Summoned entity","advancement_trigger.tame_animal":"Tame animal","advancement_trigger.target_hit":"Target hit","advancement_trigger.thrown_item_picked_up_by_entity":"Thrown item picked up by entity","advancement_trigger.tick":"Tick","advancement_trigger.used_ender_eye":"Used ender eye","advancement_trigger.used_totem":"Used totem","advancement_trigger.villager_trade":"Villager trade","advancement_trigger.voluntary_exile":"Voluntary exile","attribute.generic_armor":"Armor","attribute.generic_armor_toughness":"Armor toughness","attribute.generic_attack_damage":"Attack damage","attribute.generic_attack_knockback":"Attack knockback","attribute.generic_attack_speed":"Attack speed","attribute.generic_flying_speed":"Flying speed","attribute.generic_follow_range":"Follow range","attribute.generic_knockback_resistance":"Knockback resistance","attribute.generic_luck":"Luck","attribute.generic_max_health":"Max health","attribute.generic_movement_speed":"Movement speed","attribute.horse.jump_strength":"Jump strength","attribute.zombie.spawn_reinforcements":"Spawn reinforcements","attribute_modifier.amount":"Amount","attribute_modifier.attribute":"Attribute","attribute_modifier.name":"Name","attribute_modifier.operation":"Operation","attribute_modifier.operation.addition":"Addition","attribute_modifier.operation.multiply_base":"Multiply base","attribute_modifier.operation.multiply_total":"Multiply total","attribute_modifier.slot":"Slots","attribute_modifier.slot.list":"Multiple","attribute_modifier.slot.string":"Single","axis.x":"X","axis.y":"Y","axis.z":"Z","badge.experimental":"Experimental","badge.unstable":"Unstable","biome.carvers":"Carvers","biome.carvers.air":"Air","biome.carvers.liquid":"Liquid","biome.category":"Category","biome.creature_spawn_probability":"Creature spawn probability","biome.depth":"Depth","biome.depth.help":"Raises or lowers the terrain. Positive values are considered land and negative are oceans.","biome.downfall":"Downfall","biome.effects":"Effects","biome.effects.additions_sound":"Additions sound","biome.effects.additions_sound.sound":"Sound","biome.effects.additions_sound.tick_chance":"Tick chance","biome.effects.ambient_sound":"Ambient sound","biome.effects.fog_color":"Fog color","biome.effects.foliage_color":"Foliage color","biome.effects.grass_color":"Grass color","biome.effects.grass_color_modifier":"Grass color modifier","biome.effects.grass_color_modifier.dark_forest":"Dark forest","biome.effects.grass_color_modifier.none":"None","biome.effects.grass_color_modifier.swamp":"Swamp","biome.effects.mood_sound":"Mood sound","biome.effects.mood_sound.block_search_extent":"Block search extent","biome.effects.mood_sound.offset":"Offset","biome.effects.mood_sound.sound":"Sound","biome.effects.mood_sound.tick_delay":"Tick delay","biome.effects.music":"Music","biome.effects.music.max_delay":"Max delay","biome.effects.music.min_delay":"Min delay","biome.effects.music.replace_current_music":"Replace current music","biome.effects.music.sound":"Sound","biome.effects.particle":"Particle","biome.effects.particle.options":"Options","biome.effects.particle.options.type":"Particle type","biome.effects.particle.probability":"Probability","biome.effects.sky_color":"Sky color","biome.effects.water_color":"Water color","biome.effects.water_fog_color":"Water fog color","biome.features":"Placed features","biome.features.entry":"Step %0%","biome.features.entry.entry":"Feature","biome.player_spawn_friendly":"Player spawn friendly","biome.player_spawn_friendly.help":"If true, the world spawn will be preferred in this biome.","biome.precipitation":"Precipitation","biome.precipitation.none":"None","biome.precipitation.rain":"Rain","biome.precipitation.snow":"Snow","biome.scale":"Scale","biome.scale.help":"Vertically stretches the terrain. Lower values produce flatter terrain.","biome.spawn_costs":"Spawn costs","biome.spawn_costs.charge":"Charge","biome.spawn_costs.energy_budget":"Energy budget","biome.spawners":"Spawners","biome.spawners.ambient":"Ambient","biome.spawners.creature":"Creature","biome.spawners.entry":"Spawn","biome.spawners.entry.maxCount":"Max count","biome.spawners.entry.minCount":"Min count","biome.spawners.entry.type":"Type","biome.spawners.entry.weight":"Weight","biome.spawners.misc":"Miscellaneous","biome.spawners.monster":"Monster","biome.spawners.water_ambient":"Water ambient","biome.spawners.water_creature":"Water creature","biome.starts":"Structure starts","biome.starts.entry":"Structure","biome.starts.help":"List of configured structure features.","biome.surface_builder":"Surface builder","biome.temperature":"Temperature","biome.temperature_modifier":"Temperature modifier","biome.temperature_modifier.frozen":"Frozen","biome.temperature_modifier.none":"None","block.block":"Block ID","block.nbt":"NBT","block.state":"Block state","block.tag":"Block tag","block_definition.multipart":"Multipart","block_definition.variants":"Variants","block_definition.multipart.entry":"Part","block_definition.multipart.entry.when":"When","block_definition.multipart.entry.apply":"Apply","block_placer.column_placer.extra_size":"Extra size","block_placer.column_placer.min_size":"Min size","block_placer.type":"Type","block_predicate.type":"Type","block_predicate.all_of.predicates":"Predicates","block_predicate.any_of.predicates":"Predicates","block_predicate.inside_world_bounds.offset":"Offset","block_predicate.matching_blocks.offset":"Offset","block_predicate.matching_blocks.blocks":"Blocks","block_predicate.matching_blocks.blocks.entry":"Block","block_predicate.matching_fluids.offset":"Offset","block_predicate.matching_fluids.fluids":"Fluids","block_predicate.matching_fluids.fluids.entry":"Fluid","block_predicate.would_survive.offset":"Offset","block_predicate.would_survive.state":"State","block_predicate_type.all_of":"All of","block_predicate_type.any_of":"Any of","block_predicate_type.inside_world_bounds":"Inside world bounds","block_predicate_type.matching_blocks":"Matching blocks","block_predicate_type.matching_fluids":"Matching fluids","block_predicate_type.not":"Not","block_predicate_type.replaceable":"Replaceable","block_predicate_type.solid":"Solid","block_predicate_type.true":"True","block_predicate_type.would_survive":"Would survive","block_predicate.not.predicate":"Predicate","block_state.Name":"Name","block_state.Properties":"Properties","block_state_provider.dual_noise_provider.seed":"Seed","block_state_provider.dual_noise_provider.noise":"Noise","block_state_provider.dual_noise_provider.scale":"Scale","block_state_provider.dual_noise_provider.variety":"Variety","block_state_provider.dual_noise_provider.slow_noise":"Slow noise","block_state_provider.dual_noise_provider.slow_scale":"Slow scale","block_state_provider.dual_noise_provider.states":"States","block_state_provider.noise_threshold_provider.seed":"Seed","block_state_provider.noise_threshold_provider.noise":"Noise","block_state_provider.noise_threshold_provider.scale":"Scale","block_state_provider.noise_threshold_provider.threshold":"Threshold","block_state_provider.noise_threshold_provider.high_chance":"High chance","block_state_provider.noise_threshold_provider.default_state":"Default state","block_state_provider.noise_threshold_provider.low_states":"Low states","block_state_provider.noise_threshold_provider.high_states":"High states","block_state_provider.noise_provider.seed":"Seed","block_state_provider.noise_provider.noise":"Noise","block_state_provider.noise_provider.scale":"Scale","block_state_provider.noise_provider.states":"States","block_state_provider.randomized_int_state_provider.property":"Property","block_state_provider.randomized_int_state_provider.values":"Values","block_state_provider.randomized_int_state_provider.source":"Source","block_state_provider.rotated_block_provider.state":"State","block_state_provider.simple_state_provider.state":"State","block_state_provider.type":"Type","block_state_provider.weighted_state_provider.entries":"Entries","block_state_provider.weighted_state_provider.entries.entry.data":"State","block_state_provider.weighted_state_provider.entries.entry.weight":"Weight","carver.config":"Config","carver.config.aquifers_enabled":"Aquifers enabled","carver.config.canyon.bottom_inclusive":"Bottom inclusive","carver.config.canyon.top_inclusive":"Top inclusive","carver.config.canyon.vertical_rotation":"Vertical rotation","carver.config.canyon.shape":"Shape","carver.config.canyon.shape.distance_factor":"Distance factor","carver.config.canyon.shape.thickness":"Thickness","carver.config.canyon.shape.width_smoothness":"Width smoothness","carver.config.canyon.shape.horizontal_radius_factor":"Horizontal radius factor","carver.config.canyon.shape.vertical_radius_default_factor":"Vertical radius default factor","carver.config.canyon.shape.vertical_radius_center_factor":"Vertical radius center factor","carver.config.cave.horizontal_radius_multiplier":"Horizontal radius multiplier","carver.config.cave.vertical_radius_multiplier":"Vertical radius multiplier","carver.config.cave.floor_level":"Floor level","carver.config.debug_settings":"Debug settings","carver.config.debug_settings.debug_mode":"Debug mode","carver.config.debug_settings.air_state":"Air state","carver.config.debug_settings.water_state":"Water state","carver.config.debug_settings.lava_state":"Lava state","carver.config.debug_settings.barrier_state":"Barrier state","carver.config.lava_level":"Lava level","carver.config.probability":"Probability","carver.config.y":"Y","carver.config.yScale":"Y scale","carver.type":"Type","cave_surface.ceiling":"Ceiling","cave_surface.floor":"Floor","children":"Children","children.entry":"Entry","condition.alternative.terms":"Terms","condition.block_state_property.block":"Block","condition.block_state_property.properties":"Block state","condition.condition":"Condition","condition.damage_source":"Damage source","condition.entity_properties.entity":"Entity","condition.entity_scores.entity":"Entity","condition.entity_scores.scores":"Scores","condition.entry":"Predicate","condition.inverted.term":"Term","condition.item":"Item","condition.killed_by_player.inverse":"Inverted","condition.list":"Multiple","condition.location":"Location","condition.location_check.offsetX":"X offset","condition.location_check.offsetY":"Y offset","condition.location_check.offsetZ":"Z offset","condition.object":"Single","condition.random_chance.chance":"Chance","condition.random_chance_with_looting.chance":"Chance","condition.random_chance_with_looting.looting_multiplier":"Looting multiplier","condition.reference.name":"Predicate name","condition.table_bonus.chances":"Chances","condition.table_bonus.chances.entry":"Chance","condition.table_bonus.enchantment":"Enchantment","condition.time_check.period":"Period","condition.time_check.period.help":"If present, time will be modulo-divided by this value. For example, if set to 24000, value will operate on a time period of days.","condition.time_check.value":"Value","condition.value_check.range":"Range","condition.value_check.value":"Value","condition.weather_check.raining":"Raining","condition.weather_check.thundering":"Thundering","conditions":"Conditions","conditions.entry":"Condition","conditions.list":"Conditions","conditions.object":"Legacy","copy_source.block_entity":"Block entity","copy_source.direct_killer":"Direct killer","copy_source.killer":"Killer","copy_source.killer_player":"Killer player","copy_source.this":"This","criterion.bee_nest_destroyed.block":"Block","criterion.bee_nest_destroyed.num_bees_inside":"Number of bees inside","criterion.bred_animals.child":"Child","criterion.bred_animals.parent":"Parent","criterion.bred_animals.partner":"Partner","criterion.brewed_potion.potion":"Potion","criterion.changed_dimension.from":"From","criterion.changed_dimension.to":"To","criterion.channeled_lightning.victims":"Victims","criterion.channeled_lightning.victims.entry":"Entity","criterion.conditions":"Conditions","criterion.construct_beacon.beacon_level":"Pyramid level","criterion.consume_item.item":"Item","criterion.cured_zombie_villager.villager":"Villager","criterion.cured_zombie_villager.zombie":"Zombie","criterion.effects_changed.effects":"Effects","criterion.enchanted_item.item":"Item","criterion.enchanted_item.levels":"XP level","criterion.enter_block.block":"Block","criterion.enter_block.state":"States","criterion.entity_hurt_player.damage":"Damage","criterion.entity_killed_player.entity":"Source entity","criterion.entity_killed_player.killing_blow":"Killing blow","criterion.fall_from_height.distance":"Distance","criterion.fall_from_height.start_position":"Start position","criterion.filled_bucket.item":"Item","criterion.fishing_rod_hooked.entity":"Pulled entity","criterion.fishing_rod_hooked.item":"Item","criterion.hero_of_the_village.location":"Location","criterion.inventory_changed.items":"Items","criterion.inventory_changed.items.entry":"Item","criterion.inventory_changed.slots":"Slots","criterion.inventory_changed.slots.empty":"Slots empty","criterion.inventory_changed.slots.full":"Slots full","criterion.inventory_changed.slots.occupied":"Slots occupied","criterion.item_durability_changed.delta":"Delta","criterion.item_durability_changed.durability":"Durability","criterion.item_durability_changed.item":"Item","criterion.item_used_on_block.item":"Item","criterion.item_used_on_block.location":"Location","criterion.killed_by_crossbow.unique_entity_types":"Amount of unique entity types","criterion.killed_by_crossbow.victims":"Victims","criterion.killed_by_crossbow.victims.entry":"Entity","criterion.levitation.distance":"Distance","criterion.levitation.duration":"Duration","criterion.location.location":"Location","criterion.nether_travel.distance":"Distance","criterion.nether_travel.entered":"Entered location","criterion.nether_travel.exited":"Exited location","criterion.nether_travel.start_position":"Start position","criterion.placed_block.block":"Block","criterion.placed_block.item":"Item","criterion.placed_block.location":"Location","criterion.placed_block.state":"States","criterion.player":"Player","criterion.player_generates_container_loot.loot_table":"Loot table","criterion.player_hurt_entity.damage":"Damage","criterion.player_hurt_entity.entity":"Victim entity","criterion.player_killed_entity.entity":"Victim entity","criterion.player_killed_entity.killing_blow":"Killing blow","criterion.recipe_unlocked.recipe":"Recipe","criterion.ride_entity_in_lava.distance":"Distance","criterion.ride_entity_in_lava.start_position":"Start position","criterion.rod":"Rod","criterion.safely_harvest_honey.block":"Block","criterion.safely_harvest_honey.item":"Item","criterion.shot_crossbow.item":"Item","criterion.slept_in_bed.location":"Location","criterion.slide_down_block.block":"Block","criterion.summoned_entity.entity":"Entity","criterion.tame_animal.entity":"Animal","criterion.target_hit.projectile":"Projectile","criterion.target_hit.shooter":"Shooter","criterion.target_hit.signal_strength":"Signal strength","criterion.thrown_item_picked_up_by_entity.entity":"Entity","criterion.thrown_item_picked_up_by_entity.item":"Item","criterion.trigger":"Trigger","criterion.used_ender_eye.distance":"Distance","criterion.used_totem.item":"Totem item","criterion.villager_trade.item":"Purchased item","criterion.villager_trade.villager":"Villager","criterion.voluntary_exile.location":"Location","damage.blocked":"Blocked","damage.dealt":"Damage dealt","damage.source_entity":"Source entity","damage.taken":"Damage taken","damage.type":"Damage type","damage_source.bypasses_armor":"Bypass armor","damage_source.bypasses_invulnerability":"Void","damage_source.bypasses_magic":"Starvation","damage_source.direct_entity":"Direct entity","damage_source.is_explosion":"Explosion","damage_source.is_fire":"Fire","damage_source.is_lightning":"Lightning","damage_source.is_magic":"Magic","damage_source.is_projectile":"Projectile","damage_source.source_entity":"Source entity","decorator.block_predicate_filter.predicate":"Predicate","decorator.carving_mask.step":"Step","decorator.cave_surface.surface":"Surface","decorator.cave_surface.floor_to_ceiling_search_range":"Search range","decorator.cave_surface.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","decorator.cave_surface.allow_water":"Allow water","decorator.chance.chance":"Chance","decorator.config":"Config","decorator.count.count":"Count","decorator.count_extra.count":"Count","decorator.count_extra.extra_chance":"Extra chance","decorator.count_extra.extra_count":"Extra count","decorator.count_multilayer.count":"Count","decorator.count_on_every_layer.count":"Count","decorator.count_noise.above_noise":"Above noise","decorator.count_noise.below_noise":"Below noise","decorator.count_noise.noise_level":"Noise level","decorator.noise_threshold_count.above_noise":"Above noise","decorator.noise_threshold_count.below_noise":"Below noise","decorator.noise_threshold_count.noise_level":"Noise level","decorator.count_noise_biased.noise_factor":"Noise factor","decorator.count_noise_biased.noise_offset":"Noise offset","decorator.count_noise_biased.noise_to_count_ratio":"Noise to count ratio","decorator.noise_based_count.noise_factor":"Noise factor","decorator.noise_based_count.noise_offset":"Noise offset","decorator.noise_based_count.noise_to_count_ratio":"Noise to count ratio","decorator.decorated.inner":"Inner","decorator.decorated.outer":"Outer","decorator.depth_average.baseline":"Baseline","decorator.depth_average.spread":"Spread","decorator.environment_scan.direction_of_search":"Direction","decorator.environment_scan.max_steps":"Max steps","decorator.environment_scan.target_condition":"Target condition","decorator.glowstone.count":"Count","decorator.heightmap.heightmap":"Heightmap","decorator.heightmap_spread_double.heightmap":"Heightmap","decorator.lava_lake.chance":"Chance","decorator.range.bottom_inclusive":"Bottom inclusive","decorator.range.top_inclusive":"Top inclusive","decorator.range_biased_to_bottom.bottom_inclusive":"Bottom inclusive","decorator.range_biased_to_bottom.top_inclusive":"Top inclusive","decorator.range_biased_to_bottom.cutoff":"Cutoff","decorator.range_very_biased_to_bottom.bottom_inclusive":"Bottom inclusive","decorator.range_very_biased_to_bottom.top_inclusive":"Top inclusive","decorator.range_very_biased_to_bottom.cutoff":"Cutoff","decorator.range.height":"Height","decorator.height_range.height":"Height","decorator.random_offset.xz_spread":"XZ spread","decorator.random_offset.y_spread":"Y spread","decorator.surface_relative_threshold_filter.heightmap":"Heightmap","decorator.surface_relative_threshold_filter.min_inclusive":"Min inclusive","decorator.surface_relative_threshold_filter.max_inclusive":"Max inclusive","decorator.water_depth_threshold.max_water_depth":"Max water depth","decorator.surface_water_depth_filter.max_water_depth":"Max water depth","decorator.type":"Type","dimension":"Dimension","dimension.generator":"Generator","dimension.generator.biome_source":"Biome source","dimension.overworld":"Overworld","dimension.the_end":"The end","dimension.the_nether":"The nether","dimension.type":"Dimension type","dimension.type.object":"Custom","dimension.type.string":"Preset","dimension_type.ambient_light":"Ambient light","dimension_type.ambient_light.help":"How much ambient light there is. Should be a value between 0.0 and 1.0.","dimension_type.bed_works":"Bed works","dimension_type.bed_works.help":"If true, players can use beds to set their spawn and advance time. If false, beds will blow up when used.","dimension_type.coordinate_scale":"Coordinate scale","dimension_type.coordinate_scale.help":"Multiplier applied to coordinates when traveling between dimensions using a nether portal or /execute in.","dimension_type.effects":"Effects","dimension_type.effects.help":"Sky effects","dimension_type.effects.overworld":"Overworld","dimension_type.effects.the_end":"The end","dimension_type.effects.the_nether":"The nether","dimension_type.fixed_time":"Fixed time","dimension_type.fixed_time.help":"Setting this value will keep the sun in a fixed position.","dimension_type.has_ceiling":"Has ceiling","dimension_type.has_ceiling.help":"Affects the weather, map items and respawning rules.","dimension_type.has_raids":"Has raids","dimension_type.has_raids.help":"If true, players with the Bad Omen effect can cause a raid.","dimension_type.has_skylight":"Has skylight","dimension_type.has_skylight.help":"Affects the weather, lighting engine and respawning rules.","dimension_type.height":"Height","dimension_type.height.help":"The total height in which blocks can exist. Max Y = Min Y + Height.","dimension_type.infiniburn":"Infiniburn","dimension_type.infiniburn.help":"Block tag defining what blocks keep fire infinitely burning.","dimension_type.logical_height":"Logical height","dimension_type.logical_height.help":"Portals can\'t spawn and chorus fruit can\'t teleport players above this height.","dimension_type.min_y":"Min Y","dimension_type.min_y.help":"The minimum height in which blocks can exist.","dimension_type.name":"Name","dimension_type.natural":"Natural","dimension_type.natural.help":"If true, portals will spawn zombified piglins. If false, compasses and clocks spin randomly.","dimension_type.piglin_safe":"Piglin safe","dimension_type.piglin_safe.help":"If false, piglins will shake and convert to zombified piglins.","dimension_type.respawn_anchor_works":"Respawn anchor works","dimension_type.respawn_anchor_works.help":"If true, players can charge and use respawn anchors to set their spawn. If false, respawn anchors will blow up when used.","dimension_type.ultrawarm":"Ultrawarm","dimension_type.ultrawarm.help":"If true, water will evaporate and sponges will dry.","direction.up":"Up","direction.down":"Down","direction.north":"North","direction.east":"East","direction.south":"South","direction.west":"West","display_position.firstperson_righthand":"Firstperson righthand","display_position.firstperson_lefthand":"Firstperson lefthand","display_position.thirdperson_righthand":"Firstperson righthand","display_position.thirdperson_lefthand":"Firstperson lefthand","display_position.gui":"GUI","display_position.head":"Head","display_position.ground":"Ground","display_position.fixed":"Fixed","distance.absolute":"Absolute","distance.horizontal":"Horizontal","distance.x":"X","distance.y":"Y","distance.z":"Z","enchantment.aqua_affinity":"Aqua affinity","enchantment.bane_of_arthropods":"Bane of arthropods","enchantment.binding_curse":"Curse of binding","enchantment.blast_protection":"Blast protection","enchantment.channeling":"Channeling","enchantment.depth_strider":"Depth strider","enchantment.efficiency":"Efficiency","enchantment.enchantment":"Enchantment","enchantment.feather_falling":"Feather falling","enchantment.fire_aspect":"Fire aspect","enchantment.fire_protection":"Fire protection","enchantment.flame":"Flame","enchantment.fortune":"Fortune","enchantment.frost_walker":"Frost walker","enchantment.impaling":"Impaling","enchantment.infinity":"Infinity","enchantment.knockback":"Knockback","enchantment.levels":"Levels","enchantment.looting":"Looting","enchantment.loyalty":"Loyalty","enchantment.luck_of_the_sea":"Luck of the sea","enchantment.lure":"Lure","enchantment.mending":"Mending","enchantment.multishot":"Multishot","enchantment.piercing":"Piercing","enchantment.power":"Power","enchantment.projectile_protection":"Projectile protection","enchantment.protection":"Protection","enchantment.punch":"Punch","enchantment.quick_charge":"Quick charge","enchantment.respiration":"Respiration","enchantment.riptide":"Riptide","enchantment.sharpness":"Sharpness","enchantment.silk_touch":"Silk touch","enchantment.smite":"Smite","enchantment.sweeping":"Sweeping edge","enchantment.thorns":"Thorns","enchantment.unbreaking":"Unbreaking","enchantment.vanishing_curse":"Curse of vanishing","entity.distance":"Distance","entity.effects":"Effects","entity.equipment":"Equipment","entity.fishing_hook":"Fishing hook","entity.fishing_hook.in_open_water":"In open water","entity.flags":"Flags","entity.isBaby":"Baby","entity.isOnFire":"On fire","entity.isSneaking":"Sneaking","entity.isSprinting":"Sprinting","entity.isSwimming":"Swimming","entity.location":"Location","entity.nbt":"NBT","entity.player":"Player","entity.targeted_entity":"Targeted entity","entity.team":"Team","entity.type":"Entity","entity.vehicle":"Vehicle","entity_source.direct_killer":"Direct killer","entity_source.killer":"Killer","entity_source.killer_player":"Killer player","entity_source.this":"This","entry":"Entry","error":"Error","error.expected_boolean":"Expected a boolean","error.expected_integer":"Expected an integer","error.expected_json":"Expected JSON","error.expected_list":"Expected an array","error.expected_number":"Expected a number","error.expected_object":"Expected an object","error.expected_range":"Expected a range","error.expected_string":"Expected a string","error.expected_uniform_int":"Expected a uniform int","error.height_multiple":"Height has to be multiple of %0%","error.invalid_binomial":"Range cannot use the binomial type","error.invalid_empty_list":"Array cannot be empty","error.invalid_empty_string":"String cannot be empty","error.invalid_enum_option":"Invalid option \\"%0%\\"","error.invalid_exact":"Range cannot use the constant type","error.invalid_pattern":"String is not valid: %0%","error.invalid_list_range.exact":"Expected a list with length %1%","error.invalid_list_range.larger":"List length %0% is larger than maximum %1%","error.invalid_list_range.smaller":"List length %0% is smaller than minimum %1%","error.invalid_number_range.between":"Expected a number between %1% and %2%","error.invalid_number_range.larger":"Value %0% is larger than maximum %1%","error.invalid_number_range.smaller":"Value %0% is smaller than minimum %1%","error.invalid_number_enum":"Expected one of %0%","error.logical_height":"Logical height cannot be higher than height","error.min_y_multiple":"Min Y has to be a multiple of %0%","error.min_y_plus_height":"Min Y + height cannot be higher than %0%","error.recipe.invalid_key":"only single character is allowed as a key","error.separation_smaller_spacing":"Separation has to be smaller than spacing","false":"False","feature.bamboo.probability":"Probability","feature.basalt_columns.height":"Height","feature.basalt_columns.reach":"Reach","feature.block_column.direction":"Direction","feature.block_column.allowed_placement":"Allowed placement","feature.block_column.prioritize_tip":"Prioritize tip","feature.block_column.layers":"Layers","feature.block_column.layers.entry.height":"Height","feature.block_column.layers.entry.state":"State","feature.block_pile.state_provider":"State provider","feature.config":"Config","feature.decorated.decorator":"Decorator","feature.decorated.feature":"Feature","feature.delta_feature.contents":"Contents","feature.delta_feature.rim":"Rim","feature.delta_feature.rim_size":"Rim size","feature.delta_feature.size":"Size","feature.disk.half_height":"Half height","feature.disk.radius":"Radius","feature.disk.state":"State","feature.disk.targets":"Targets","feature.disk.targets.entry":"State","feature.dripstone_cluster.chance_of_dripstone_column_at_max_distance_from_center":"Far dripstone chance","feature.dripstone_cluster.chance_of_dripstone_column_at_max_distance_from_center.help":"Chance of a dripstone column at the max distance from the center.","feature.dripstone_cluster.density":"Density","feature.dripstone_cluster.dripstone_block_layer_thickness":"Block layer thickness","feature.dripstone_cluster.floor_to_ceiling_search_range":"Search range","feature.dripstone_cluster.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","feature.dripstone_cluster.height":"Height","feature.dripstone_cluster.height_deviation":"Height deviation","feature.dripstone_cluster.max_distance_from_edge_affecting_chance_of_dripstone_column":"Column chance distance","feature.dripstone_cluster.max_distance_from_edge_affecting_chance_of_dripstone_column.help":"Max distance from the edge affecting the chance of dripstone columns.","feature.dripstone_cluster.max_distance_from_center_affecting_height_bias":"Height bias distance","feature.dripstone_cluster.max_distance_from_center_affecting_height_bias.help":"Max distance from the center affecting the height bias.","feature.dripstone_cluster.max_stalagmite_stalactite_height_diff":"Max height difference","feature.dripstone_cluster.max_stalagmite_stalactite_height_diff.help":"Max height difference between the stalagmite and stalactite.","feature.dripstone_cluster.radius":"Radius","feature.dripstone_cluster.wetness":"Wetness","feature.dripstone_cluster.wetness_deviation":"Wetness deviation","feature.dripstone_cluster.wetness_mean":"Wetness mean","feature.emerald_ore.state":"State","feature.emerald_ore.target":"Target","feature.end_gateway.exact":"Exact","feature.end_gateway.exit":"Exit","feature.end_spike.crystal_beam_target":"Crystal beam target","feature.end_spike.crystal_invulnerable":"Crystal invulnerable","feature.end_spike.spikes":"Spikes","feature.end_spike.spikes.entry":"Spike","feature.end_spike.spikes.entry.centerX":"Center X","feature.end_spike.spikes.entry.centerZ":"Center Z","feature.end_spike.spikes.entry.guarded":"Guarded","feature.end_spike.spikes.entry.height":"Height","feature.end_spike.spikes.entry.radius":"Radius","feature.fill_layer.height":"Height","feature.fill_layer.state":"State","feature.flower.blacklist":"Blacklist","feature.flower.block_placer":"Block placer","feature.flower.can_replace":"Can replace","feature.flower.need_water":"Need water","feature.flower.feature":"Placed feature","feature.flower.project":"Project","feature.flower.state_provider":"State provider","feature.flower.tries":"Tries","feature.flower.whitelist":"Whitelist","feature.flower.xspread":"X spread","feature.flower.xz_spread":"XZ spread","feature.flower.yspread":"Y spread","feature.flower.y_spread":"Y spread","feature.flower.zspread":"Z spread","feature.forest_rock.state":"State","feature.fossil.max_empty_corners_allowed":"Max empty corners","feature.fossil.max_empty_corners_allowed.help":"If more corners are exposed to air, feature placement is cancelled.","feature.fossil.fossil_structures":"Fossil structures","feature.fossil.overlay_structures":"Overlay structures","feature.fossil.fossil_processors":"Fossil processors","feature.fossil.fossil_processors.string":"Reference","feature.fossil.fossil_processors.object":"Custom","feature.fossil.overlay_processors":"Overlay processors","feature.fossil.overlay_processors.string":"Reference","feature.fossil.overlay_processors.object":"Custom","feature.geode.blocks":"Blocks","feature.geode.blocks.filling_provider":"Filling","feature.geode.blocks.inner_layer_provider":"Inner layer","feature.geode.blocks.alternate_inner_layer_provider":"Alternate inner layer","feature.geode.blocks.middle_layer_provider":"Middle layer","feature.geode.blocks.outer_layer_provider":"Outer layer","feature.geode.blocks.inner_placements":"Inner placements","feature.geode.blocks.cannot_replace":"Cannot replace","feature.geode.blocks.cannot_replace.help":"Blocks that will not be replaced by the geode.","feature.geode.blocks.invalid_blocks":"Invalid blocks","feature.geode.blocks.invalid_blocks.help":"When encountering an invalid block, feature placement is cancelled.","feature.geode.layers":"Layers","feature.geode.layers.filling":"Filling","feature.geode.layers.inner_layer":"Inner layer","feature.geode.layers.middle_layer":"Middle layer","feature.geode.layers.outer_layer":"Outer layer","feature.geode.crack":"Crack","feature.geode.crack.generate_crack_chance":"Crack chance","feature.geode.crack.base_crack_size":"Crack size","feature.geode.crack.crack_point_offset":"Crack point offset","feature.geode.noise_multiplier":"Noise multiplier","feature.geode.use_potential_placements_chance":"Inner placements chance","feature.geode.use_alternate_layer0_chance":"Alternate inner layer chance","feature.geode.placements_require_layer0_alternate":"Placements require alternate layer","feature.geode.outer_wall_distance":"Outer wall distance","feature.geode.distribution_points":"Distribution points","feature.geode.point_offset":"Point offset","feature.geode.min_gen_offset":"Min gen offset","feature.geode.max_gen_offset":"Max gen offset","feature.geode.invalid_blocks_threshold":"Invalid blocks threshold","feature.glow_lichen.can_be_placed_on":"Can be placed on","feature.glow_lichen.can_be_placed_on.entry":"Block state","feature.glow_lichen.can_place_on_ceiling":"Can place on ceiling","feature.glow_lichen.can_place_on_floor":"Can place on floor","feature.glow_lichen.can_place_on_wall":"Can place on wall","feature.glow_lichen.chance_of_spreading":"Chance of spreading","feature.glow_lichen.search_range":"Search range","feature.growing_plant.direction":"Direction","feature.growing_plant.allow_water":"Allow water","feature.growing_plant.height_distribution":"Height distribution","feature.growing_plant.body_provider":"Body provider","feature.growing_plant.head_provider":"Head provider","feature.huge_brown_mushroom.cap_provider":"Cap provider","feature.huge_brown_mushroom.foliage_radius":"Foliage radius","feature.huge_brown_mushroom.stem_provider":"Stem provider","feature.huge_fungus.decor_state":"Decoration","feature.huge_fungus.hat_state":"Hat","feature.huge_fungus.planted":"Planted","feature.huge_fungus.stem_state":"Stem","feature.huge_fungus.valid_base_block":"Valid base","feature.huge_red_mushroom.cap_provider":"Cap provider","feature.huge_red_mushroom.foliage_radius":"Foliage radius","feature.huge_red_mushroom.stem_provider":"Stem provider","feature.ice_patch.half_height":"Half height","feature.ice_patch.radius":"Radius","feature.ice_patch.state":"State","feature.ice_patch.targets":"Targets","feature.ice_patch.targets.entry":"State","feature.iceberg.state":"State","feature.lake.state":"State","feature.lake.fluid":"Fluid","feature.lake.barrier":"Barrier","feature.large_dripstone.column_radius":"Column radius","feature.large_dripstone.floor_to_ceiling_search_range":"Search range","feature.large_dripstone.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","feature.large_dripstone.height_scale":"Height scale","feature.large_dripstone.max_column_radius_to_cave_height_ratio":"Radius to cave height ratio","feature.large_dripstone.min_bluntness_for_wind":"Min bluntness for wind","feature.large_dripstone.min_radius_for_wind":"Min radius for wind","feature.large_dripstone.stalactite_bluntness":"Stalactite bluntness","feature.large_dripstone.stalagmite_bluntness":"Stalagmite bluntness","feature.large_dripstone.wind_speed":"Wind speed","feature.nether_forest_vegetation.state_provider":"State provider","feature.nether_forest_vegetation.spread_width":"Spread width","feature.nether_forest_vegetation.spread_height":"Spread height","feature.netherrack_replace_blobs.radius":"Radius","feature.netherrack_replace_blobs.state":"State","feature.netherrack_replace_blobs.target":"Target","feature.no_bonemeal_flower.allowed_on":"Allowed on","feature.no_bonemeal_flower.blacklist":"Blacklist","feature.no_bonemeal_flower.block_placer":"Block placer","feature.no_bonemeal_flower.can_replace":"Can replace","feature.no_bonemeal_flower.disallowed_on":"Disallowed on","feature.no_bonemeal_flower.need_water":"Need water","feature.no_bonemeal_flower.feature":"Placed feature","feature.no_bonemeal_flower.only_in_air":"Only in air","feature.no_bonemeal_flower.project":"Project","feature.no_bonemeal_flower.state_provider":"State provider","feature.no_bonemeal_flower.tries":"Tries","feature.no_bonemeal_flower.whitelist":"Whitelist","feature.no_bonemeal_flower.xspread":"X spread","feature.no_bonemeal_flower.xz_spread":"XZ spread","feature.no_bonemeal_flower.yspread":"Y spread","feature.no_bonemeal_flower.y_spread":"Y spread","feature.no_bonemeal_flower.zspread":"Z spread","feature.no_surface_ore.size":"Size","feature.no_surface_ore.state":"State","feature.no_surface_ore.target":"Target","feature.object":"Custom","feature.ore.discard_chance_on_air_exposure":"Discard on exposure chance","feature.ore.discard_chance_on_air_exposure.help":"The chance that feature placement will be discarded if the ore is exposed to air blocks.","feature.ore.size":"Size","feature.ore.state":"State","feature.ore.target":"Target","feature.ore.targets":"Targets","feature.ore.targets.entry.target":"Target","feature.ore.targets.entry.state":"State","feature.scattered_ore.discard_chance_on_air_exposure":"Discard on exposure chance","feature.scattered_ore.discard_chance_on_air_exposure.help":"The chance that feature placement will be discarded if the ore is exposed to air blocks.","feature.scattered_ore.size":"Size","feature.scattered_ore.targets":"Targets","feature.scattered_ore.targets.entry.target":"Target","feature.scattered_ore.targets.entry.state":"State","feature.pointed_dripstone.chance_of_taller_dripstone":"Chance of taller dripstone","feature.pointed_dripstone.chance_of_directional_spread":"Chance of directional spread","feature.pointed_dripstone.chance_of_spread_radius2":"Chance of spread radius 2","feature.pointed_dripstone.chance_of_spread_radius3":"Chance of spread radius 3","feature.random_boolean_selector.feature_false":"Placed feature 1","feature.random_boolean_selector.feature_true":"Placed feature 2","feature.random_patch.allowed_on":"Allowed on","feature.random_patch.blacklist":"Blacklist","feature.random_patch.block_placer":"Block placer","feature.random_patch.can_replace":"Can replace","feature.random_patch.disallowed_on":"Disallowed on","feature.random_patch.need_water":"Need water","feature.random_patch.feature":"Placed feature","feature.random_patch.only_in_air":"Only in air","feature.random_patch.project":"Project","feature.random_patch.state_provider":"State provider","feature.random_patch.tries":"Tries","feature.random_patch.whitelist":"Whitelist","feature.random_patch.xspread":"X spread","feature.random_patch.xz_spread":"XZ spread","feature.random_patch.yspread":"Y spread","feature.random_patch.y_spread":"Y spread","feature.random_patch.zspread":"Z spread","feature.random_selector.default":"Default","feature.random_selector.features":"Features","feature.random_selector.features.entry":"Feature","feature.random_selector.features.entry.chance":"Chance","feature.random_selector.features.entry.feature":"Placed feature","feature.replace_single_block.targets":"Targets","feature.replace_single_block.targets.entry.target":"Target","feature.replace_single_block.targets.entry.state":"State","feature.root_system.required_vertical_space_for_tree":"Required vertical tree space","feature.root_system.root_radius":"Root radius","feature.root_system.root_placement_attempts":"Root placement attempts","feature.root_system.root_column_max_height":"Root max height","feature.root_system.hanging_root_radius":"Hanging roots radius","feature.root_system.hanging_roots_vertical_span":"Hanging roots vertical span","feature.root_system.hanging_root_placement_attempts":"Hanging roots attempts","feature.root_system.allowed_vertical_water_for_tree":"Max water depth","feature.root_system.root_replaceable":"Root replaceable","feature.root_system.root_state_provider":"Root","feature.root_system.hanging_root_state_provider":"Hanging roots","feature.root_system.feature":"Tree feature","feature.sea_pickle.count":"Count","feature.seagrass.probability":"Probability","feature.simple_block.place_in":"Place in","feature.simple_block.place_in.entry":"State","feature.simple_block.place_on":"Place on","feature.simple_block.place_on.entry":"State","feature.simple_block.place_under":"Place under","feature.simple_block.place_under.entry":"State","feature.simple_block.to_place":"To place","feature.simple_random_selector.features":"Features","feature.simple_random_selector.features.entry":"Placed feature","feature.small_dripstone.chance_of_taller_dripstone":"Chance of taller dripstone","feature.small_dripstone.empty_space_search_radius":"Empty space search radius","feature.small_dripstone.max_offset_from_origin":"Max offset from origin","feature.small_dripstone.max_placements":"Max placements","feature.spring_feature.hole_count":"Hole count","feature.spring_feature.required_block_below":"Required block below","feature.spring_feature.rock_count":"Rock count","feature.spring_feature.state":"State","feature.spring_feature.valid_blocks":"Valid blocks","feature.string":"Reference","feature.tree.decorators":"Decorators","feature.tree.decorators.entry":"Tree decorator","feature.tree.foliage_placer":"Foliage placer","feature.tree.heightmap":"Heightmap","feature.tree.ignore_vines":"Ignore vines","feature.tree.leaves_provider":"Leaves provider","feature.tree.foliage_provider":"Foliage provider","feature.tree.force_dirt":"Force dirt","feature.tree.dirt_provider":"Dirt provider","feature.tree.sapling_provider":"Sapling provider","feature.tree.max_water_depth":"Max water depth","feature.tree.minimum_size":"Minimum size","feature.tree.minimum_size.limit":"Limit","feature.tree.minimum_size.lower_size":"Lower size","feature.tree.minimum_size.middle_size":"Middle size","feature.tree.minimum_size.min_clipped_height":"Min clipped height","feature.tree.minimum_size.type":"Minimum size","feature.tree.minimum_size.upper_limit":"Upper limit","feature.tree.minimum_size.upper_size":"Upper size","feature.tree.trunk_placer":"Trunk placer","feature.tree.trunk_provider":"Trunk provider","feature.twisting_vines.spread_width":"Spread width","feature.twisting_vines.spread_height":"Spread height","feature.twisting_vines.max_height":"Max height","feature.type":"Type","feature.underwater_magma.floor_search_range":"Floor search range","feature.underwater_magma.placement_radius_around_floor":"Placement radius","feature.underwater_magma.placement_probability_per_valid_position":"Probability","feature.underwater_magma.placement_probability_per_valid_position.help":"The probability of placing magma per valid position.","feature.vegetation_patch.depth":"Depth","feature.vegetation_patch.extra_bottom_block_chance":"Extra bottom block chance","feature.vegetation_patch.extra_edge_column_chance":"Extra edge column chance","feature.vegetation_patch.ground_state":"Ground state","feature.vegetation_patch.replaceable":"Replaceable","feature.vegetation_patch.surface":"Surface","feature.vegetation_patch.vegetation_chance":"Vegetation chance","feature.vegetation_patch.vegetation_feature":"Vegetation feature","feature.vegetation_patch.vertical_range":"Vertical range","feature.vegetation_patch.xz_radius":"XZ radius","feature.waterlogged_vegetation_patch.depth":"Depth","feature.waterlogged_vegetation_patch.extra_bottom_block_chance":"Extra bottom block chance","feature.waterlogged_vegetation_patch.extra_edge_column_chance":"Extra edge column chance","feature.waterlogged_vegetation_patch.ground_state":"Ground state","feature.waterlogged_vegetation_patch.replaceable":"Replaceable","feature.waterlogged_vegetation_patch.surface":"Surface","feature.waterlogged_vegetation_patch.vegetation_chance":"Vegetation chance","feature.waterlogged_vegetation_patch.vegetation_feature":"Vegetation feature","feature.waterlogged_vegetation_patch.vertical_range":"Vertical range","feature.waterlogged_vegetation_patch.xz_radius":"XZ radius","float_provider.value.deviation":"Deviation","float_provider.value.mean":"Mean","float_provider.value.min":"Min","float_provider.value.min_inclusive":"Min exclusive","float_provider.value.max":"Max","float_provider.value.max_exclusive":"Max exclusive","float_provider.value.plateau":"Plateau","float_provider.type.number":"Constant","float_provider.type.constant":"Constant+","float_provider.type.uniform":"Uniform","float_provider.type.clamped_normal":"Clamped normal","float_provider.type.trapezoid":"Trapezoid","float_provider.value":"Value","fluid.fluid":"Fluid ID","fluid.state":"Fluid state","fluid.tag":"Fluid tag","fluid_state.Name":"Name","fluid_state.Properties":"Properties","foliage_placer.crown_height":"Crown height","foliage_placer.height":"Height","foliage_placer.offset":"Offset","foliage_placer.radius":"Radius","foliage_placer.trunk_height":"Trunk height","foliage_placer.type":"Type","function.apply_bonus.enchantment":"Enchantment","function.apply_bonus.formula":"Formula","function.apply_bonus.formula.binomial_with_bonus_count":"Binomial with bonus count","function.apply_bonus.formula.ore_drops":"Ore drops","function.apply_bonus.formula.uniform_bonus_count":"Uniform bonus count","function.apply_bonus.parameters":"Parameters","function.apply_bonus.parameters.bonusMultiplier":"Multiplier","function.apply_bonus.parameters.extra":"Extra","function.apply_bonus.parameters.probability":"Probability","function.copy_name.source":"Source","function.copy_nbt.ops":"NBT operations","function.copy_nbt.ops.entry":"Operation","function.copy_nbt.source":"Source","function.copy_state.block":"Block","function.copy_state.properties":"Properties","function.copy_state.properties.entry":"Property","function.enchant_randomly.enchantments":"Optional enchantments","function.enchant_randomly.enchantments.entry":"Enchantment","function.enchant_with_levels.levels":"Levels","function.enchant_with_levels.treasure":"Treasure","function.exploration_map.decoration":"Decoration","function.exploration_map.destination":"Destination","function.exploration_map.search_radius":"Search radius (Chunks)","function.exploration_map.skip_existing_chunks":"Skip existing chunks","function.exploration_map.zoom":"Zoom","function.fill_player_head.entity":"Entity","function.function":"Function","function.limit_count.limit":"Limit","function.list":"Multiple","function.looting_enchant.count":"Count","function.looting_enchant.limit":"Limit","function.object":"Single","function.set_attributes.modifiers":"Modifiers","function.set_attributes.modifiers.entry":"Modifier","function.set_banner_pattern.append":"Append","function.set_banner_pattern.patterns":"Patterns","function.set_contents.entries":"Contents","function.set_contents.entries.entry":"Entry","function.set_contents.type":"Type","function.set_count.add":"Add","function.set_count.add.help":"If true, change will be relative to current item count","function.set_count.count":"Count","function.set_damage.add":"Add","function.set_damage.add.help":"If true, change will be relative to current damage","function.set_damage.damage":"Damage","function.set_data.data":"Data","function.set_enchantments.add":"Add","function.set_enchantments.add.help":"If true, change will be relative to current level","function.set_enchantments.enchantments":"Enchantments","function.set_loot_table.name":"Loot table name","function.set_loot_table.seed":"Seed","function.set_loot_table.type":"Type","function.set_lore.entity":"Entity","function.set_lore.lore":"Lore","function.set_lore.lore.entry":"Line","function.set_lore.replace":"Replace","function.set_name.entity":"Entity","function.set_name.name":"Name","function.set_nbt.tag":"NBT","function.set_potion.id":"Potion","function.set_stew_effect.effects":"Effects","function.set_stew_effect.effects.entry":"Effect","function.set_stew_effect.effects.entry.duration":"Duration","function.set_stew_effect.effects.entry.type":"Type","functions":"Functions","functions.entry":"Function","gamemode.adventure":"Adventure","gamemode.creative":"Creative","gamemode.spectator":"Spectator","gamemode.survival":"Survival","generation_step.air":"Air","generation_step.liquid":"Liquid","generator.biome_source.altitude_noise":"Altitude noise","generator.biome_source.biome":"Biome","generator.biome_source.biomes":"Biomes","generator.biome_source.humidity_noise":"Humidity noise","generator.biome_source.large_biomes":"Large biomes","generator.biome_source.legacy_biome_init_layer":"Legacy biome init layer","generator.biome_source.preset":"Biomes preset","generator.biome_source.preset.nether":"Nether","generator.biome_source.scale":"Scale","generator.biome_source.seed":"Biomes seed","generator.biome_source.temperature_noise":"Temperature noise","generator.biome_source.type":"Biome source","generator.biome_source.weirdness_noise":"Weirdness noise","generator.seed":"Dimension seed","generator.settings":"Generator settings","generator.settings.biome":"Biome","generator.settings.lakes":"Lakes","generator.settings.layers":"Layers","generator.settings.layers.entry":"Layer","generator.settings.layers.entry.block":"Block ID","generator.settings.layers.entry.height":"Height","generator.settings.object":"Custom","generator.settings.presets.amplified":"Amplified","generator.settings.presets.caves":"Caves","generator.settings.presets.end":"End","generator.settings.presets.floating_islands":"Floating islands","generator.settings.presets.nether":"Nether","generator.settings.presets.overworld":"Overworld","generator.settings.string":"Preset","generator.settings.structures":"Structures","generator.settings.structures.stronghold":"Stronghold","generator.settings.structures.stronghold.count":"Count","generator.settings.structures.stronghold.distance":"Distance","generator.settings.structures.stronghold.spread":"Spread","generator.settings.structures.structures":"Structures","generator.type":"Generator type","generator_biome.biome":"Biome","generator_biome.parameters":"Parameters","generator_biome.parameters.altitude":"Altitude","generator_biome.parameters.help":"These parameters determine the placement of the biome. Every biome must have a unique combination of them. Biomes with similar values will generate next to each other.","generator_biome.parameters.humidity":"Humidity","generator_biome.parameters.offset":"Offset","generator_biome.parameters.temperature":"Temperature","generator_biome.parameters.weirdness":"Weirdness","generator_biome.parameters.continentalness":"Continentalness","generator_biome.parameters.erosion":"Erosion","generator_biome.parameters.depth":"Depth","generator_biome_noise.amplitudes":"Amplitudes","generator_biome_noise.amplitudes.entry":"Octave %0%","generator_biome_noise.firstOctave":"First octave","generator_structure.salt":"Salt","generator_structure.separation":"Separation","generator_structure.separation.help":"The minumum distance in chunks between two structures of this type.","generator_structure.spacing":"Spacing","generator_structure.spacing.help":"The average distance in chunks between two structures of this type.","height_provider.inner":"Inner","height_provider.min_inclusive":"Min inclusive","height_provider.max_inclusive":"Max inclusive","height_provider.plateau":"Plateau","height_provider.value":"Value","height_provider.type.number":"Constant","height_provider.type.constant":"Constant+","height_provider.type.uniform":"Uniform","height_provider.type.biased_to_bottom":"Biased to bottom","height_provider.type.very_biased_to_bottom":"Very biased to bottom","height_provider.type.trapezoid":"Trapezoid","heightmap_type.MOTION_BLOCKING":"Motion blocking","heightmap_type.MOTION_BLOCKING_NO_LEAVES":"Motion blocking (Ignore Leaves)","heightmap_type.OCEAN_FLOOR":"Ocean floor","heightmap_type.OCEAN_FLOOR_WG":"Ocean floor (World Gen)","heightmap_type.WORLD_SURFACE":"World surface","heightmap_type.WORLD_SURFACE_IGNORE_SNOW":"World surface (Ignore Snow)","heightmap_type.WORLD_SURFACE_WG":"World surface (World Gen)","hide_source":"Hide source","int_provider.value":"Value","int_provider.value.deviation":"Deviation","int_provider.value.mean":"Mean","int_provider.value.min_inclusive":"Min inclusive","int_provider.value.max_inclusive":"Max inclusive","int_provider.value.source":"Source","int_provider.distribution":"Distribution","int_provider.distribution.entry.weight":"Weight","int_provider.distribution.entry.data":"Provider","int_provider.type.number":"Constant","int_provider.type.constant":"Constant+","int_provider.type.uniform":"Uniform","int_provider.type.biased_to_bottom":"Biased to bottom","int_provider.type.clamped":"Clamped","int_provider.type.clamped_normal":"Clamped normal","int_provider.type.weighted_list":"Weighted list","item.count":"Count","item.durability":"Durability","item.enchantments":"Enchantments","item.enchantments.entry":"Enchantment","item.item":"Item ID","item.nbt":"NBT","item.potion":"Potion","item.tag":"Item tag","item_model_predicates.angle":"Angle","item_model_predicates.blocking":"Blocking","item_model_predicates.broken":"Broken","item_model_predicates.cast":"Cast","item_model_predicates.charged":"Charged","item_model_predicates.cooldown":"Cooldown","item_model_predicates.custom_model_data":"Custom model data","item_model_predicates.damage":"Damage","item_model_predicates.damaged":"Damaged","item_model_predicates.firework":"Firework","item_model_predicates.lefthanded":"Lefthanded","item_model_predicates.pull":"Pull","item_model_predicates.pulling":"Pulling","item_model_predicates.throwing":"Throwing","item_model_predicates.time":"Time","item_transform.rotation":"Rotation","item_transform.translation":"Translation","item_transform.scale":"Scale","key.advancements":"Advancements","key.attack":"Attack/destroy","key.back":"Walk backwards","key.chat":"Open chat","key.command":"Open command","key.drop":"Drop selected item","key.forward":"Walk forwards","key.fullscreen":"Toggle fullscreen","key.hotbar.1":"Hotbar slot 1","key.hotbar.2":"Hotbar slot 2","key.hotbar.3":"Hotbar slot 3","key.hotbar.4":"Hotbar slot 4","key.hotbar.5":"Hotbar slot 5","key.hotbar.6":"Hotbar slot 6","key.hotbar.7":"Hotbar slot 7","key.hotbar.8":"Hotbar slot 8","key.hotbar.9":"Hotbar slot 9","key.inventory":"Open/close inventory","key.jump":"Jump","key.left":"Strafe left","key.loadToolbarActivator":"Load toolbar activator","key.pickItem":"Pick block","key.playerlist":"List players","key.right":"Strafe right","key.saveToolbarActivator":"Save toolbar activator","key.screenshot":"Take screenshot","key.smoothCamera":"Toggle cinematic camera","key.sneak":"Sneak","key.spectatorOutlines":"Highlight players (Spectators)","key.sprint":"Sprint","key.swapOffhand":"Swap item with offhand","key.togglePerspective":"Toggle perspective","key.use":"Use item/place block","location.biome":"Biome","location.block":"Block","location.dimension":"Dimension","location.feature":"Feature","location.fluid":"Fluid","location.light":"Light","location.light.light":"Visible light level","location.position":"Position","location.position.x":"X","location.position.y":"Y","location.position.z":"Z","location.smokey":"Smokey","loot_condition_type.alternative":"Alternative","loot_condition_type.block_state_property":"Block state properties","loot_condition_type.damage_source_properties":"Damage source properties","loot_condition_type.entity_properties":"Entity properties","loot_condition_type.entity_scores":"Entity scores","loot_condition_type.inverted":"Inverted","loot_condition_type.killed_by_player":"Killed by player","loot_condition_type.location_check":"Location check","loot_condition_type.match_tool":"Match tool","loot_condition_type.random_chance":"Random chance","loot_condition_type.random_chance_with_looting":"Random chance with looting","loot_condition_type.reference":"Reference","loot_condition_type.survives_explosion":"Survives explosion","loot_condition_type.table_bonus":"Table bonus","loot_condition_type.time_check":"Time check","loot_condition_type.value_check":"Value check","loot_condition_type.weather_check":"Weather check","loot_entry.dynamic.name":"Name","loot_entry.item.name":"Name","loot_entry.loot_table.name":"Loot table name","loot_entry.quality":"Quality","loot_entry.tag.expand":"Expand","loot_entry.tag.expand.help":"If false, entry will return all contents of tag, otherwise entry will behave as multiple item entries.","loot_entry.tag.name":"Item tag name","loot_entry.type":"Type","loot_entry.weight":"Weight","loot_entry.functions":"Functions","loot_entry.functions.entry":"Function","loot_function_type.apply_bonus":"Apply bonus","loot_function_type.copy_name":"Copy name","loot_function_type.copy_nbt":"Copy NBT","loot_function_type.copy_state":"Copy block states","loot_function_type.enchant_randomly":"Enchant randomly","loot_function_type.enchant_with_levels":"Enchant with levels","loot_function_type.exploration_map":"Exploration map properties","loot_function_type.explosion_decay":"Explosion decay","loot_function_type.fill_player_head":"Fill player head","loot_function_type.furnace_smelt":"Furnace smelt","loot_function_type.limit_count":"Limit count","loot_function_type.looting_enchant":"Looting enchant","loot_function_type.set_attributes":"Set attributes","loot_function_type.set_banner_pattern":"Set banner pattern","loot_function_type.set_contents":"Set contents","loot_function_type.set_count":"Set count","loot_function_type.set_damage":"Set damage","loot_function_type.set_data":"Set data","loot_function_type.set_enchantments":"Set enchantments","loot_function_type.set_loot_table":"Set loot table","loot_function_type.set_lore":"Set lore","loot_function_type.set_name":"Set name","loot_function_type.set_nbt":"Set NBT","loot_function_type.set_potion":"Set potion","loot_function_type.set_stew_effect":"Set stew effect","loot_pool.bonus_rolls":"Bonus rolls","loot_pool.entries":"Entries","loot_pool.entries.entry":"Entry","loot_pool.rolls":"Rolls","loot_pool.rolls.help":"The amount of entries that are randomly chosen.","loot_pool_entry_type.alternatives":"Alternatives","loot_pool_entry_type.alternatives.help":"Tests conditions of the child entries and executes the first that can run.","loot_pool_entry_type.dynamic":"Dynamic","loot_pool_entry_type.dynamic.help":"Gets block specific drops.","loot_pool_entry_type.empty":"Empty","loot_pool_entry_type.empty.help":"Adds nothing to the pool.","loot_pool_entry_type.group":"Group","loot_pool_entry_type.group.help":"Executes all child entries when own conditions pass.","loot_pool_entry_type.item":"Item","loot_pool_entry_type.item.help":"Adds a single item.","loot_pool_entry_type.loot_table":"Loot table","loot_pool_entry_type.loot_table.help":"Adds the contents of another loot table.","loot_pool_entry_type.sequence":"Sequence","loot_pool_entry_type.sequence.help":"Executes child entries until the first one that can\'t run due to conditions.","loot_pool_entry_type.tag":"Item tag","loot_pool_entry_type.tag.help":"Adds the contents of an item tag.","loot_table.pools":"Pools","loot_table.pools.entry":"Pool","loot_table.type":"Type","luck_based":"Luck-based","material_condition.biome.biome_is":"Biome","material_condition.noise_threshold.noise":"Noise","material_condition.noise_threshold.min_threshold":"Min threshold","material_condition.noise_threshold.max_threshold":"Max threshold","material_condition.not.invert":"Invert","material_condition.stone_depth.offset":"Offset","material_condition.stone_depth.surface_type":"Surface","material_condition.stone_depth.add_surface_depth":"Add surface depth","material_condition.stone_depth.add_surface_secondary_depth":"Add surface secondary depth","material_condition.vertical_gradient.random_name":"Random name","material_condition.vertical_gradient.true_at_and_below":"True at and below","material_condition.vertical_gradient.false_at_and_above":"False at and above","material_condition.water.offset":"Offset","material_condition.water.surface_depth_multiplier":"Surface depth multiplier","material_condition.water.add_stone_depth":"Add stone depth","material_condition.y_above.anchor":"Anchor","material_condition.y_above.surface_depth_multiplier":"Surface depth multiplier","material_condition.y_above.add_stone_depth":"Add stone depth","material_rule.condition.if_true":"If true","material_rule.condition.then_run":"Then run","material_rule.block.result_state":"Result state","material_rule.sequence.sequence":"Sequence","material_rule.sequence.sequence.entry":"Rule","model.parent":"Parent","model.ambientocclusion":"Ambient occlusion","model.gui_light":"GUI light","model.textures":"Textures","model.elements":"Elements","model.elements.entry":"Element","model_element.from":"From","model_element.to":"To","model_element.rotation":"Rotation","model_element.rotation.origin":"Origin","model_element.rotation.axis":"Axis","model_element.rotation.angle":"Angle","model_element.rotation.rescale":"Rescale","model_element.shade":"Shade","model_element.faces":"Faces","model_element.faces.texture":"Texture","model_element.faces.uv":"UV","model_element.faces.cullface":"Cullface","model_element.faces.rotation":"Rotation","model_element.faces.tintindex":"Tint index","model.display":"Display","model.overrides":"Overrides","model.overrides.entry":"Override","model_override.predicate":"Predicate","model_override.model":"Model","model_variant.object":"Single","model_variant.list":"Multiple","model_variant.model":"Model","model_variant.x":"X rotation","model_variant.y":"Y rotation","model_variant.uvlock":"UV lock","model_variant.weight":"Weight","multipart_condition.OR":"Or","multipart_condition.object":"Condition","multipart_condition.or":"Or","multipart_condition.OR.entry":"Condition","nbt_operation.op":"Operation","nbt_operation.op.append":"Append","nbt_operation.op.merge":"Merge","nbt_operation.op.replace":"Replace","nbt_operation.source":"Source","nbt_operation.target":"Target","nbt_provider.source":"Source","nbt_provider.target":"Target","nbt_provider.type":"Type","nbt_provider.type.context":"Context+","nbt_provider.type.storage":"Storage","nbt_provider.type.string":"Context","noise_parameters.amplitudes":"Amplitudes","noise_parameters.amplitudes.entry":"Octave %0%","noise_parameters.firstOctave":"First octave","noise_settings.aquifers_enabled":"Aquifers enabled","noise_settings.bedrock_floor_position":"Bedrock floor position","noise_settings.bedrock_floor_position.help":"Position of the bedrock floor. Higher numbers move the floor up.","noise_settings.bedrock_roof_position":"Bedrock roof position","noise_settings.bedrock_roof_position.help":"Relative position of the bedrock roof starting at the world height. Higher numbers move the roof down.","noise_settings.biome":"Biome","noise_settings.deepslate_enabled":"Deepslate enabled","noise_settings.default_block":"Default block","noise_settings.default_fluid":"Default fluid","noise_settings.disable_mob_generation":"Disable mob generation","noise_settings.disable_mob_generation.help":"If true, mobs will not spawn during generation.","noise_settings.legacy_random_source":"Legacy random source","noise_settings.min_surface_level":"Min surface level","noise_settings.name":"Name","noise_settings.noise":"Noise options","noise_settings.noise_caves_enabled":"Noise caves enabled","noise_settings.noise.amplified":"Amplified","noise_settings.noise.bottom_slide":"Bottom slide","noise_settings.noise.bottom_slide.help":"Adds or removes terrain at the bottom of the world. Does nothing when size is 0.","noise_settings.noise.bottom_slide.offset":"Offset","noise_settings.noise.bottom_slide.offset.help":"Defines an range of \'Offset * Size vertical * 4\' blocks at the bottom of the world where the density is set to the target.","noise_settings.noise.bottom_slide.size":"Size","noise_settings.noise.bottom_slide.size.help":"Defines a range of \'Size * Size vertical * 4\' blocks where the existing density and target are interpolated.","noise_settings.noise.bottom_slide.target":"Target","noise_settings.noise.bottom_slide.target.help":"The target density. Positive values add terrain and negative values remove terrain.","noise_settings.noise.density_factor":"Density factor","noise_settings.noise.density_factor.help":"Determines how much the height influences the terrain. Positive values produce land at the bottom. Values close to 0 produce uniform cave-like terrain.","noise_settings.noise.density_offset":"Density offset","noise_settings.noise.density_offset.help":"Affects the average terrain height. A value of 0 produces terrain land height at half the height. Positive values raise the height.","noise_settings.noise.height":"Height","noise_settings.noise.height.help":"The total height where blocks can generate. Max Y = Min Y + Height.","noise_settings.noise.island_noise_override":"Island noise override","noise_settings.noise.island_noise_override.help":"If true, terrain will be shaped like islands similar to the end.","noise_settings.noise.large_biomes":"Large biomes","noise_settings.noise.min_y":"Min Y","noise_settings.noise.min_y.help":"The minimum height where blocks start generating.","noise_settings.noise.random_density_offset":"Random density offset","noise_settings.noise.sampling":"Sampling","noise_settings.noise.sampling.xz_factor":"XZ factor","noise_settings.noise.sampling.xz_scale":"XZ scale","noise_settings.noise.sampling.y_factor":"Y factor","noise_settings.noise.sampling.y_scale":"Y scale","noise_settings.noise.simplex_surface_noise":"Simplex surface noise","noise_settings.noise.size_horizontal":"Size horizontal","noise_settings.noise.size_vertical":"Size vertical","noise_settings.noise.top_slide":"Top slide","noise_settings.noise.top_slide.help":"Adds or removes terrain at the top of the world. Does nothing when size is 0.","noise_settings.noise.top_slide.offset":"Offset","noise_settings.noise.top_slide.offset.help":"Defines an range of \'Offset * Size Vertical * 4\' blocks at the top of the world where the density is set to the target.","noise_settings.noise.top_slide.size":"Size","noise_settings.noise.top_slide.size.help":"Defines a range of \'Size * Size Vertical * 4\' blocks where the existing density and target are interpolated.","noise_settings.noise.top_slide.target":"Target","noise_settings.noise.top_slide.target.help":"The target density. Positive values add terrain and negative values remove terrain.","noise_settings.noise.terrain_shaper":"Terrain shaper","noise_settings.noodle_caves_enabled":"Noodle caves enabled","noise_settings.ore_veins_enabled":"Ore veins enabled","noise_settings.sea_level":"Sea level","noise_settings.structures":"Structures","noise_settings.structures.stronghold":"Stronghold","noise_settings.structures.stronghold.count":"Count","noise_settings.structures.stronghold.distance":"Distance","noise_settings.structures.stronghold.spread":"Spread","noise_settings.structures.structures":"Structures","noise_settings.surface_rule":"Surface rule","number_provider.max":"Max","number_provider.min":"Min","number_provider.n":"N","number_provider.p":"P","number_provider.scale":"Scale","number_provider.score":"Objective","number_provider.target":"Target","number_provider.type":"Type","number_provider.type.binomial":"Binomial","number_provider.type.constant":"Constant+","number_provider.type.number":"Constant","number_provider.type.object":"Uniform","number_provider.type.score":"Score","number_provider.type.uniform":"Uniform+","number_provider.value":"Number","placed_feature.feature":"Configured feature","placed_feature.placement":"Placement","placed_feature.placement.entry":"Modifier","player.advancements":"Advancements","player.advancements.entry":"Advancement","player.gamemode":"Game mode","player.level":"XP level","player.recipes":"Recipes","player.stats":"Statistics","player.stats.entry":"Statistic","pos_rule_test.always_true":"Always true","pos_rule_test.axis":"Axis","pos_rule_test.axis.x":"X","pos_rule_test.axis.y":"Y","pos_rule_test.axis.z":"Z","pos_rule_test.axis_aligned_linear_pos":"Axis aligned linear pos","pos_rule_test.linear_pos":"Linear pos","pos_rule_test.max_chance":"Max chance","pos_rule_test.max_dist":"Max dist","pos_rule_test.min_chance":"Min chance","pos_rule_test.min_dist":"Min dist","pos_rule_test.predicate_type":"Type","processor.block_age.mossiness":"Mossiness","processor.block_ignore.blocks":"Blocks","processor.block_ignore.blocks.entry":"State","processor.block_rot.integrity":"Integrity","processor.gravity.heightmap":"Heightmap","processor.gravity.offset":"Offset","processor.processor_type":"Type","processor.rule.rules":"Rules","processor.rule.rules.entry":"Rule","processor_list.processors":"Processors","processor_list.processors.entry":"Processor","processor_rule.input_predicate":"Input predicate","processor_rule.location_predicate":"Location predicate","processor_rule.output_nbt":"Output NBT","processor_rule.output_state":"Output state","processor_rule.position_predicate":"Position predicate","processors.object":"Custom","processors.string":"Reference","range.binomial":"Binomial","range.max":"Max","range.min":"Min","range.n":"N","range.number":"Exact","range.object":"Range","range.p":"P","range.type":"Type","range.uniform":"Uniform","recipe.type":"Type","recipe.group":"Group","recipe.group.help":"Identifier to group multiple recipes in the recipe book.","recipe.ingredients":"Ingredients","recipe.ingredient":"Ingredient","recipe.ingredient.item":"Item","recipe.ingredient.tag":"Item tag","recipe.pattern":"Pattern","recipe.pattern.entry":"Row","recipe.key":"Key","recipe.key.item":"Item","recipe.key.tag":"Item tag","recipe.result":"Result","recipe.result.item":"Item","recipe.result.count":"Count","recipe.experience":"Experience","recipe.cookingtime":"Cooking time","recipe.count":"Count","recipe.base":"Base","recipe.base.item":"Item","recipe.base.tag":"Item tag","recipe.addition":"Addition","recipe.addition.item":"Item","recipe.addition.tag":"Item tag","advancement.requirements":"Requirements","rule_test.always_true":"Always true","rule_test.block":"Block","rule_test.block_match":"Block match","rule_test.block_state":"State","rule_test.blockstate_match":"Block state match","rule_test.predicate_type":"Type","rule_test.probability":"Probability","rule_test.random_block_match":"Random block match","rule_test.random_blockstate_match":"Random block state match","rule_test.tag":"Tag","rule_test.tag_match":"Tag match","score_provider.name":"Name","score_provider.target":"Target","score_provider.type":"Type","score_provider.type.context":"Context+","score_provider.type.fixed":"Fixed","score_provider.type.string":"Context","slot.chest":"Chest","slot.feet":"Feet","slot.head":"Head","slot.legs":"Legs","slot.mainhand":"Mainhand","slot.offhand":"Offhand","statistic.stat":"Statistic","statistic.type":"Type","statistic.type.broken":"Broken","statistic.type.crafted":"Crafted","statistic.type.custom":"Custom","statistic.type.dropped":"Dropped","statistic.type.killed":"Killed","statistic.type.killedByTeam":"Killed by team","statistic.type.killed_by":"Killed by","statistic.type.mined":"Mined","statistic.type.picked_up":"Picked up","statistic.type.teamkill":"Killed team","statistic.type.used":"Used","statistic.value":"Value","status_effect.ambient":"Ambient","status_effect.amplifier":"Amplifier","status_effect.duration":"Duration","status_effect.visible":"Visible","structure_feature.biome_temp":"Biome temperature","structure_feature.biome_temp.cold":"Cold","structure_feature.biome_temp.warm":"Warm","structure_feature.cluster_probability":"Cluster probability","structure_feature.config":"Config","structure_feature.is_beached":"Is beached","structure_feature.large_probability":"Large probability","structure_feature.portal_type":"Portal type","structure_feature.portal_type.desert":"Desert","structure_feature.portal_type.jungle":"Jungle","structure_feature.portal_type.mountain":"Mountain","structure_feature.portal_type.nether":"Nether","structure_feature.portal_type.ocean":"Ocean","structure_feature.portal_type.standard":"Standard","structure_feature.portal_type.swamp":"Swamp","structure_feature.probability":"Probability","structure_feature.size":"Size","structure_feature.start_pool":"Start pool","structure_feature.type":"Type","structure_feature.type.mesa":"Mesa","structure_feature.type.normal":"Normal","surface_builder.config":"Config","surface_builder.top_material":"Top material","surface_builder.type":"Type","surface_builder.under_material":"Under material","surface_builder.underwater_material":"Underwater material","table.type":"Type","table.type.block":"Block","table.type.chest":"Chest","table.type.empty":"Empty","table.type.entity":"Entity","table.type.fishing":"Fishing","table.type.generic":"Generic","tag.replace":"Replace","tag.values":"Values","terrain_shaper.offset":"Offset","terrain_shaper.factor":"Factor","terrain_shaper.jaggedness":"Jaggedness","terrain_spline.number":"Constant","terrain_spline.object":"Spline","terrain_spline.coordinate":"Coordinate","terrain_spline.coordinate.continents":"Continents","terrain_spline.coordinate.erosion":"Erosion","terrain_spline.coordinate.weirdness":"Weirdness","terrain_spline.coordinate.ridges":"Ridges","terrain_spline.points":"Points","terrain_spline.points.entry":"Point","terrain_spline.points.entry.location":"Location","terrain_spline.points.entry.value":"Value","terrain_spline.points.entry.derivative":"Derivative","template_element.element_type":"Type","template_element.elements":"Elements","template_element.feature":"Placed feature","template_element.location":"Location","template_element.processors":"Processors","template_element.projection":"Projection","template_element.projection.rigid":"Rigid","template_element.projection.terrain_matching":"Terrain matching","template_pool.elements":"Elements","template_pool.elements.entry":"Element","template_pool.elements.entry.element":"Element","template_pool.elements.entry.weight":"Weight","template_pool.fallback":"Fallback","template_pool.name":"Name","text_component":"Text component","text_component.boolean":"Boolean","text_component.list":"Array","text_component.number":"Number","text_component.object":"Object","text_component.object.text":"Plain text","text_component.object.translation":"Translated text","text_component.object.score":"Score value","text_component.object.selector":"Entity name","text_component.object.keybind":"Keybind","text_component.object.nbt":"NBT value","text_component.string":"String","text_component_object.block":"Block","text_component_object.bold":"Bold","text_component_object.clickEvent":"Click event","text_component_object.clickEvent.action":"Action","text_component_object.clickEvent.action.change_page":"Change page","text_component_object.clickEvent.action.copy_to_clipboard":"Copy to clipboard","text_component_object.clickEvent.action.open_file":"Open file","text_component_object.clickEvent.action.open_url":"Open url","text_component_object.clickEvent.action.run_command":"Run command","text_component_object.clickEvent.action.suggest_command":"Suggest command","text_component_object.clickEvent.value":"Value","text_component_object.color":"Color","text_component_object.entity":"Entity","text_component_object.extra":"Extra","text_component_object.font":"Font","text_component_object.hoverEvent":"Hover event","text_component_object.hoverEvent.action":"Action","text_component_object.hoverEvent.action.show_entity":"Show entity","text_component_object.hoverEvent.action.show_item":"Show item","text_component_object.hoverEvent.action.show_text":"Show text","text_component_object.hoverEvent.contents":"Contents","text_component_object.hoverEvent.value":"Value","text_component_object.insertion":"Insertion","text_component_object.interpret":"Interpret","text_component_object.italic":"Italic","text_component_object.keybind":"Keybind","text_component_object.nbt":"NBT","text_component_object.obfuscated":"Obfuscated","text_component_object.score":"Score","text_component_object.score.name":"Name","text_component_object.score.objective":"Objective","text_component_object.score.value":"Value","text_component_object.selector":"Selector","text_component_object.storage":"Storage","text_component_object.strikethrough":"Strikethrough","text_component_object.text":"Text","text_component_object.translate":"Translate","text_component_object.underlined":"Underlined","text_component_object.with":"With","texture.alias":"Alias","texture.reference":"Reference","tree_decorator.alter_ground.provider":"State provider","tree_decorator.beehive.probability":"Probability","tree_decorator.cocoa.probability":"Probability","tree_decorator.type":"Type","true":"True","trunk_placer.base_height":"Base height","trunk_placer.height_rand_a":"Height random A","trunk_placer.height_rand_b":"Height random B","trunk_placer.bending_trunk_placer.bend_length":"Bend length","trunk_placer.bending_trunk_placer.min_height_for_leaves":"Min height for leaves","trunk_placer.type":"Type","uniform_int.base":"Base","uniform_int.number":"Constant","uniform_int.object":"Uniform","uniform_int.spread":"Spread","unset":"Unset","update.pack_format":"Update the pack_format to %0%","vertical_anchor.absolute":"Absolute","vertical_anchor.above_bottom":"Above bottom","vertical_anchor.below_top":"Below top","world.bonus_chest":"Spawn bonus chest","world.generate_features":"Generate features","world.seed":"Seed","world_settings.bonus_chest":"Spawn bonus chest","world_settings.dimensions":"Dimensions","world_settings.generate_features":"Generate features","world_settings.seed":"World seed","worldgen.warning":"This feature is highly experimental and unstable. It can change in future versions. Expect the game to crash when creating worlds.","worldgen/biome_source.checkerboard":"Checkerboard","worldgen/biome_source.checkerboard.help":"Biomes generate in a checkerboard chunk pattern.","worldgen/biome_source.fixed":"Fixed","worldgen/biome_source.fixed.help":"One biome for the whole world.","worldgen/biome_source.multi_noise":"Multi noise","worldgen/biome_source.multi_noise.help":"Custom biome distribution with configurable parameters.","worldgen/biome_source.the_end":"The end","worldgen/biome_source.the_end.help":"Biome distribution for the End.","worldgen/biome_source.vanilla_layered":"Vanilla layered","worldgen/biome_source.vanilla_layered.help":"Biome distribution for the Overworld.","worldgen/block_placer_type.column_placer":"Column","worldgen/block_placer_type.double_plant_placer":"Double plant","worldgen/block_placer_type.simple_block_placer":"Simple","worldgen/block_state_provider_type.dual_noise_provider":"Dual noise provider","worldgen/block_state_provider_type.forest_flower_provider":"Flower forest","worldgen/block_state_provider_type.noise_threshold_provider":"Noise threshold provider","worldgen/block_state_provider_type.noise_provider":"Noise provider","worldgen/block_state_provider_type.plain_flower_provider":"Plain flower","worldgen/block_state_provider_type.randomized_int_state_provider":"Randomized int","worldgen/block_state_provider_type.rotated_block_provider":"Rotated block","worldgen/block_state_provider_type.simple_state_provider":"Simple state","worldgen/block_state_provider_type.weighted_state_provider":"Weighted state","worldgen/carver.canyon":"Canyon","worldgen/carver.cave":"Cave","worldgen/carver.nether_cave":"Nether cave","worldgen/carver.underwater_canyon":"Underwater canyon","worldgen/carver.underwater_cave":"Underwater cave","worldgen/chunk_generator.debug":"Debug world","worldgen/chunk_generator.flat":"Superflat","worldgen/chunk_generator.noise":"Default","worldgen/decorator.carving_mask":"Carving mask","worldgen/decorator.cave_surface":"Cave surface","worldgen/decorator.chance":"Chance","worldgen/decorator.count":"Count","worldgen/decorator.count_extra":"Count extra","worldgen/decorator.count_multilayer":"Count multilayer","worldgen/decorator.count_noise":"Count noise","worldgen/decorator.count_noise_biased":"Count noise biased","worldgen/decorator.dark_oak_tree":"Dark oak tree","worldgen/decorator.decorated":"Decorated","worldgen/decorator.end_gateway":"End gateway","worldgen/decorator.heightmap":"Heightmap","worldgen/decorator.heightmap_spread_double":"Heightmap spread double","worldgen/decorator.iceberg":"Iceberg","worldgen/decorator.lava_lake":"Lava lake","worldgen/decorator.nope":"Nothing","worldgen/decorator.range":"Range","worldgen/decorator.spread_32_above":"Spread 32 above","worldgen/decorator.square":"Square","worldgen/decorator.water_depth_threshold":"Water depth threshold","worldgen/feature.bamboo":"Bamboo","worldgen/feature.basalt_columns":"Basalt columns","worldgen/feature.basalt_pillar":"Basalt pillar","worldgen/feature.block_column":"Block column","worldgen/feature.block_pile":"Block pile","worldgen/feature.blue_ice":"Blue ice","worldgen/feature.bonus_chest":"Bonus chest","worldgen/feature.chorus_plant":"Chorus plant","worldgen/feature.coral_claw":"Coral claw","worldgen/feature.coral_mushroom":"Coral mushroom","worldgen/feature.coral_tree":"Coral tree","worldgen/feature.decorated":"Decorated","worldgen/feature.delta_feature":"Delta feature","worldgen/feature.desert_well":"Desert well","worldgen/feature.disk":"Disk","worldgen/feature.dripstone_cluster":"Dripstone cluster","worldgen/feature.end_gateway":"End gateway","worldgen/feature.end_island":"End island","worldgen/feature.end_spike":"End spike","worldgen/feature.fill_layer":"Fill layer","worldgen/feature.flower":"Flower","worldgen/feature.forest_rock":"Forest rock","worldgen/feature.fossil":"Fossil","worldgen/feature.freeze_top_layer":"Freeze top layer","worldgen/feature.geode":"Geode","worldgen/feature.glow_lichen":"Glow lichen","worldgen/feature.glowstone_blob":"Glowstone blob","worldgen/feature.growing_plant":"Growing plant","worldgen/feature.huge_brown_mushroom":"Huge brown mushroom","worldgen/feature.huge_fungus":"Huge fungus","worldgen/feature.huge_red_mushroom":"Huge red mushroom","worldgen/feature.ice_patch":"Ice patch","worldgen/feature.ice_spike":"Ice spike","worldgen/feature.iceberg":"Iceberg","worldgen/feature.kelp":"Kelp","worldgen/feature.lake":"Lake","worldgen/feature.large_dripstone":"Large dripstone","worldgen/feature.monster_room":"Monster room","worldgen/feature.nether_forest_vegetation":"Nether forest vegetation","worldgen/feature.netherrack_replace_blobs":"Netherrack replace blobs","worldgen/feature.no_bonemeal_flower":"No bonemeal flower","worldgen/feature.no_op":"Nothing","worldgen/feature.ore":"Ore","worldgen/feature.pointed_dripstone":"Pointed dripstone","worldgen/feature.random_boolean_selector":"Random boolean selector","worldgen/feature.random_patch":"Random patch","worldgen/feature.random_selector":"Random selector","worldgen/feature.replace_single_block":"Replace single block","worldgen/feature.root_system":"Root system","worldgen/feature.scattered_ore":"Scattered ore","worldgen/feature.sea_pickle":"Sea pickle","worldgen/feature.seagrass":"Seagrass","worldgen/feature.simple_block":"Simple block","worldgen/feature.simple_random_selector":"Simple random selector","worldgen/feature.small_dripstone":"Small dripstone","worldgen/feature.spring_feature":"Spring feature","worldgen/feature.tree":"Tree","worldgen/feature.twisting_vines":"Twisting vines","worldgen/feature.underwater_magma":"Underwater magma","worldgen/feature.vegetation_patch":"Vegetation patch","worldgen/feature.vines":"Vines","worldgen/feature.void_start_platform":"Void start platform","worldgen/feature.waterlogged_vegetation_patch":"Waterlogged vegetation patch","worldgen/feature.weeping_vines":"Weeping vines","worldgen/feature_size_type.three_layers_feature_size":"Three layers","worldgen/feature_size_type.two_layers_feature_size":"Two layers","worldgen/foliage_placer_type.acacia_foliage_placer":"Acacia","worldgen/foliage_placer_type.blob_foliage_placer":"Blob","worldgen/foliage_placer_type.bush_foliage_placer":"Bush","worldgen/foliage_placer_type.dark_oak_foliage_placer":"Dark oak","worldgen/foliage_placer_type.fancy_foliage_placer":"Fancy","worldgen/foliage_placer_type.jungle_foliage_placer":"Jungle","worldgen/foliage_placer_type.mega_pine_foliage_placer":"Mega pine","worldgen/foliage_placer_type.pine_foliage_placer":"Pine","worldgen/foliage_placer_type.spruce_foliage_placer":"Spruce","worldgen/material_condition.above_preliminary_surface":"Above preliminary surface","worldgen/material_condition.biome":"Biome","worldgen/material_condition.hole":"Hole","worldgen/material_condition.noise_threshold":"Noise threshold","worldgen/material_condition.not":"Not","worldgen/material_condition.steep":"Steep","worldgen/material_condition.stone_depth":"Stone depth","worldgen/material_condition.temperature":"Temperature","worldgen/material_condition.vertical_gradient":"Vertical gradient","worldgen/material_condition.water":"Water","worldgen/material_condition.y_above":"Y above","worldgen/material_rule.bandlands":"Bandlands","worldgen/material_rule.block":"Block","worldgen/material_rule.condition":"Condition","worldgen/material_rule.sequence":"Sequence","worldgen/placement_modifier_type.biome":"Biome","worldgen/placement_modifier_type.block_predicate_filter":"Block predicate filter","worldgen/placement_modifier_type.carving_mask":"Carving mask","worldgen/placement_modifier_type.count":"Count","worldgen/placement_modifier_type.count_on_every_layer":"Count on every layer","worldgen/placement_modifier_type.environment_scan":"Environment scan","worldgen/placement_modifier_type.height_range":"Height range","worldgen/placement_modifier_type.heightmap":"Heightmap","worldgen/placement_modifier_type.in_square":"In square","worldgen/placement_modifier_type.noise_based_count":"Noise based count","worldgen/placement_modifier_type.noise_threshold_count":"Noise threshold count","worldgen/placement_modifier_type.random_offset":"Random offset","worldgen/placement_modifier_type.rarity_filter":"Rarity filter","worldgen/placement_modifier_type.surface_relative_threshold_filter":"Surface relative threshold filter","worldgen/placement_modifier_type.surface_water_depth_filter":"Surface water depth filter","worldgen/structure_pool_element.empty_pool_element":"Empty","worldgen/structure_pool_element.feature_pool_element":"Feature","worldgen/structure_pool_element.legacy_single_pool_element":"Legacy single","worldgen/structure_pool_element.list_pool_element":"List","worldgen/structure_pool_element.single_pool_element":"Single","worldgen/structure_processor.blackstone_replace":"Blackstone replace","worldgen/structure_processor.block_age":"Block age","worldgen/structure_processor.block_ignore":"Block ignore","worldgen/structure_processor.block_rot":"Block rot","worldgen/structure_processor.gravity":"Gravity","worldgen/structure_processor.jigsaw_replacement":"Jigsaw replacement","worldgen/structure_processor.lava_submerged_block":"Lava submerged block","worldgen/structure_processor.nop":"Nothing","worldgen/structure_processor.rule":"Rule","worldgen/tree_decorator_type.alter_ground":"Alter ground","worldgen/tree_decorator_type.beehive":"Beehive","worldgen/tree_decorator_type.cocoa":"Cocoa","worldgen/tree_decorator_type.leave_vine":"Leave vine","worldgen/tree_decorator_type.trunk_vine":"Trunk vine","worldgen/trunk_placer_type.bending_trunk_placer":"Bending","worldgen/trunk_placer_type.dark_oak_trunk_placer":"Dark oak","worldgen/trunk_placer_type.fancy_trunk_placer":"Fancy","worldgen/trunk_placer_type.forking_trunk_placer":"Forking","worldgen/trunk_placer_type.giant_trunk_placer":"Giant","worldgen/trunk_placer_type.mega_jungle_trunk_placer":"Mega jungle","worldgen/trunk_placer_type.straight_trunk_placer":"Straight"}');export default e; -//# sourceMappingURL=en.a5ec0fd2.js.map diff --git a/assets/en.a5ec0fd2.js.map b/assets/en.a5ec0fd2.js.map deleted file mode 100644 index e038de93..00000000 --- a/assets/en.a5ec0fd2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"en.a5ec0fd2.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/en.e6e6bb17.js b/assets/en.e6e6bb17.js new file mode 100644 index 00000000..f30ea577 --- /dev/null +++ b/assets/en.e6e6bb17.js @@ -0,0 +1,2 @@ +var e=JSON.parse('{"advancement.criteria":"Criteria","advancement.display":"Display","advancement.display.announce_to_chat":"Announce to chat","advancement.display.background":"Background","advancement.display.description":"Description","advancement.display.frame":"Frame","advancement.display.frame.challenge":"Challenge","advancement.display.frame.goal":"Goal","advancement.display.frame.task":"Task","advancement.display.help":"If present, advancement will be visible in the advancement tabs.","advancement.display.hidden":"Hidden","advancement.display.icon":"Icon","advancement.display.icon.item":"Icon item","advancement.display.icon.nbt":"Icon NBT","advancement.display.show_toast":"Show toast","advancement.display.title":"Title","advancement.parent":"Parent advancement","advancement.rewards":"Rewards","advancement.rewards.experience":"Experience","advancement.rewards.function":"Function","advancement.rewards.loot":"Loot tables","advancement.rewards.recipes":"Recipes","advancement_trigger.bee_nest_destroyed":"Bee nest destroyed","advancement_trigger.bred_animals":"Bred animals","advancement_trigger.brewed_potion":"Brewed potion","advancement_trigger.changed_dimension":"Changed dimension","advancement_trigger.channeled_lightning":"Channeled lightning","advancement_trigger.construct_beacon":"Construct beacon","advancement_trigger.consume_item":"Consume item","advancement_trigger.cured_zombie_villager":"Cured zombie villager","advancement_trigger.effects_changed":"Effects changed","advancement_trigger.enchanted_item":"Enchanted item","advancement_trigger.enter_block":"Enter block","advancement_trigger.entity_hurt_player":"Entity hurt player","advancement_trigger.entity_killed_player":"Entity killed player","advancement_trigger.fall_from_height":"Fall from height","advancement_trigger.filled_bucket":"Filled bucket","advancement_trigger.fishing_rod_hooked":"Fishing rod hooked","advancement_trigger.hero_of_the_village":"Hero of the village","advancement_trigger.impossible":"Impossible","advancement_trigger.inventory_changed":"Inventory changed","advancement_trigger.item_durability_changed":"Item durability changed","advancement_trigger.item_used_on_block":"Item used on block","advancement_trigger.killed_by_crossbow":"Killed by crossbow","advancement_trigger.levitation":"Levitation","advancement_trigger.location":"Location","advancement_trigger.nether_travel":"Nether travel","advancement_trigger.placed_block":"Placed block","advancement_trigger.player_generates_container_loot":"Player generates container loot","advancement_trigger.player_hurt_entity":"Player hurt entity","advancement_trigger.player_killed_entity":"Player killed entity","advancement_trigger.recipe_unlocked":"Recipe unlocked","advancement_trigger.ride_entity_in_lava":"Ride entity in lava","advancement_trigger.safely_harvest_honey":"Safely harvest honey","advancement_trigger.shot_crossbow":"Shot crossbow","advancement_trigger.slept_in_bed":"Slept in bed","advancement_trigger.slide_down_block":"Slide down block","advancement_trigger.summoned_entity":"Summoned entity","advancement_trigger.tame_animal":"Tame animal","advancement_trigger.target_hit":"Target hit","advancement_trigger.thrown_item_picked_up_by_entity":"Thrown item picked up by entity","advancement_trigger.tick":"Tick","advancement_trigger.used_ender_eye":"Used ender eye","advancement_trigger.used_totem":"Used totem","advancement_trigger.villager_trade":"Villager trade","advancement_trigger.voluntary_exile":"Voluntary exile","attribute.generic_armor":"Armor","attribute.generic_armor_toughness":"Armor toughness","attribute.generic_attack_damage":"Attack damage","attribute.generic_attack_knockback":"Attack knockback","attribute.generic_attack_speed":"Attack speed","attribute.generic_flying_speed":"Flying speed","attribute.generic_follow_range":"Follow range","attribute.generic_knockback_resistance":"Knockback resistance","attribute.generic_luck":"Luck","attribute.generic_max_health":"Max health","attribute.generic_movement_speed":"Movement speed","attribute.horse.jump_strength":"Jump strength","attribute.zombie.spawn_reinforcements":"Spawn reinforcements","attribute_modifier.amount":"Amount","attribute_modifier.attribute":"Attribute","attribute_modifier.name":"Name","attribute_modifier.operation":"Operation","attribute_modifier.operation.addition":"Addition","attribute_modifier.operation.multiply_base":"Multiply base","attribute_modifier.operation.multiply_total":"Multiply total","attribute_modifier.slot":"Slots","attribute_modifier.slot.list":"Multiple","attribute_modifier.slot.string":"Single","axis.x":"X","axis.y":"Y","axis.z":"Z","badge.experimental":"Experimental","badge.unstable":"Unstable","biome.carvers":"Carvers","biome.carvers.air":"Air","biome.carvers.liquid":"Liquid","biome.category":"Category","biome.creature_spawn_probability":"Creature spawn probability","biome.depth":"Depth","biome.depth.help":"Raises or lowers the terrain. Positive values are considered land and negative are oceans.","biome.downfall":"Downfall","biome.effects":"Effects","biome.effects.additions_sound":"Additions sound","biome.effects.additions_sound.sound":"Sound","biome.effects.additions_sound.tick_chance":"Tick chance","biome.effects.ambient_sound":"Ambient sound","biome.effects.fog_color":"Fog color","biome.effects.foliage_color":"Foliage color","biome.effects.grass_color":"Grass color","biome.effects.grass_color_modifier":"Grass color modifier","biome.effects.grass_color_modifier.dark_forest":"Dark forest","biome.effects.grass_color_modifier.none":"None","biome.effects.grass_color_modifier.swamp":"Swamp","biome.effects.mood_sound":"Mood sound","biome.effects.mood_sound.block_search_extent":"Block search extent","biome.effects.mood_sound.offset":"Offset","biome.effects.mood_sound.sound":"Sound","biome.effects.mood_sound.tick_delay":"Tick delay","biome.effects.music":"Music","biome.effects.music.max_delay":"Max delay","biome.effects.music.min_delay":"Min delay","biome.effects.music.replace_current_music":"Replace current music","biome.effects.music.sound":"Sound","biome.effects.particle":"Particle","biome.effects.particle.options":"Options","biome.effects.particle.options.type":"Particle type","biome.effects.particle.probability":"Probability","biome.effects.sky_color":"Sky color","biome.effects.water_color":"Water color","biome.effects.water_fog_color":"Water fog color","biome.features":"Placed features","biome.features.entry":"Step %0%","biome.features.entry.entry":"Feature","biome.player_spawn_friendly":"Player spawn friendly","biome.player_spawn_friendly.help":"If true, the world spawn will be preferred in this biome.","biome.precipitation":"Precipitation","biome.precipitation.none":"None","biome.precipitation.rain":"Rain","biome.precipitation.snow":"Snow","biome.scale":"Scale","biome.scale.help":"Vertically stretches the terrain. Lower values produce flatter terrain.","biome.spawn_costs":"Spawn costs","biome.spawn_costs.charge":"Charge","biome.spawn_costs.energy_budget":"Energy budget","biome.spawners":"Spawners","biome.spawners.ambient":"Ambient","biome.spawners.creature":"Creature","biome.spawners.entry":"Spawn","biome.spawners.entry.maxCount":"Max count","biome.spawners.entry.minCount":"Min count","biome.spawners.entry.type":"Type","biome.spawners.entry.weight":"Weight","biome.spawners.misc":"Miscellaneous","biome.spawners.monster":"Monster","biome.spawners.water_ambient":"Water ambient","biome.spawners.water_creature":"Water creature","biome.starts":"Structure starts","biome.starts.entry":"Structure","biome.starts.help":"List of configured structure features.","biome.surface_builder":"Surface builder","biome.temperature":"Temperature","biome.temperature_modifier":"Temperature modifier","biome.temperature_modifier.frozen":"Frozen","biome.temperature_modifier.none":"None","block.block":"Block ID","block.nbt":"NBT","block.state":"Block state","block.tag":"Block tag","block_definition.multipart":"Multipart","block_definition.variants":"Variants","block_definition.multipart.entry":"Part","block_definition.multipart.entry.when":"When","block_definition.multipart.entry.apply":"Apply","block_placer.column_placer.extra_size":"Extra size","block_placer.column_placer.min_size":"Min size","block_placer.type":"Type","block_predicate.type":"Type","block_predicate.all_of.predicates":"Predicates","block_predicate.any_of.predicates":"Predicates","block_predicate.inside_world_bounds.offset":"Offset","block_predicate.matching_blocks.offset":"Offset","block_predicate.matching_blocks.blocks":"Blocks","block_predicate.matching_blocks.blocks.entry":"Block","block_predicate.matching_fluids.offset":"Offset","block_predicate.matching_fluids.fluids":"Fluids","block_predicate.matching_fluids.fluids.entry":"Fluid","block_predicate.would_survive.offset":"Offset","block_predicate.would_survive.state":"State","block_predicate_type.all_of":"All of","block_predicate_type.any_of":"Any of","block_predicate_type.inside_world_bounds":"Inside world bounds","block_predicate_type.matching_blocks":"Matching blocks","block_predicate_type.matching_fluids":"Matching fluids","block_predicate_type.not":"Not","block_predicate_type.replaceable":"Replaceable","block_predicate_type.solid":"Solid","block_predicate_type.true":"True","block_predicate_type.would_survive":"Would survive","block_predicate.not.predicate":"Predicate","block_state.Name":"Name","block_state.Properties":"Properties","block_state_provider.dual_noise_provider.seed":"Seed","block_state_provider.dual_noise_provider.noise":"Noise","block_state_provider.dual_noise_provider.scale":"Scale","block_state_provider.dual_noise_provider.variety":"Variety","block_state_provider.dual_noise_provider.slow_noise":"Slow noise","block_state_provider.dual_noise_provider.slow_scale":"Slow scale","block_state_provider.dual_noise_provider.states":"States","block_state_provider.noise_threshold_provider.seed":"Seed","block_state_provider.noise_threshold_provider.noise":"Noise","block_state_provider.noise_threshold_provider.scale":"Scale","block_state_provider.noise_threshold_provider.threshold":"Threshold","block_state_provider.noise_threshold_provider.high_chance":"High chance","block_state_provider.noise_threshold_provider.default_state":"Default state","block_state_provider.noise_threshold_provider.low_states":"Low states","block_state_provider.noise_threshold_provider.high_states":"High states","block_state_provider.noise_provider.seed":"Seed","block_state_provider.noise_provider.noise":"Noise","block_state_provider.noise_provider.scale":"Scale","block_state_provider.noise_provider.states":"States","block_state_provider.randomized_int_state_provider.property":"Property","block_state_provider.randomized_int_state_provider.values":"Values","block_state_provider.randomized_int_state_provider.source":"Source","block_state_provider.rotated_block_provider.state":"State","block_state_provider.simple_state_provider.state":"State","block_state_provider.type":"Type","block_state_provider.weighted_state_provider.entries":"Entries","block_state_provider.weighted_state_provider.entries.entry.data":"State","block_state_provider.weighted_state_provider.entries.entry.weight":"Weight","carver.config":"Config","carver.config.aquifers_enabled":"Aquifers enabled","carver.config.canyon.bottom_inclusive":"Bottom inclusive","carver.config.canyon.top_inclusive":"Top inclusive","carver.config.canyon.vertical_rotation":"Vertical rotation","carver.config.canyon.shape":"Shape","carver.config.canyon.shape.distance_factor":"Distance factor","carver.config.canyon.shape.thickness":"Thickness","carver.config.canyon.shape.width_smoothness":"Width smoothness","carver.config.canyon.shape.horizontal_radius_factor":"Horizontal radius factor","carver.config.canyon.shape.vertical_radius_default_factor":"Vertical radius default factor","carver.config.canyon.shape.vertical_radius_center_factor":"Vertical radius center factor","carver.config.cave.horizontal_radius_multiplier":"Horizontal radius multiplier","carver.config.cave.vertical_radius_multiplier":"Vertical radius multiplier","carver.config.cave.floor_level":"Floor level","carver.config.debug_settings":"Debug settings","carver.config.debug_settings.debug_mode":"Debug mode","carver.config.debug_settings.air_state":"Air state","carver.config.debug_settings.water_state":"Water state","carver.config.debug_settings.lava_state":"Lava state","carver.config.debug_settings.barrier_state":"Barrier state","carver.config.lava_level":"Lava level","carver.config.probability":"Probability","carver.config.y":"Y","carver.config.yScale":"Y scale","carver.type":"Type","cave_surface.ceiling":"Ceiling","cave_surface.floor":"Floor","children":"Children","children.entry":"Entry","condition.alternative.terms":"Terms","condition.block_state_property.block":"Block","condition.block_state_property.properties":"Block state","condition.condition":"Condition","condition.damage_source":"Damage source","condition.entity_properties.entity":"Entity","condition.entity_scores.entity":"Entity","condition.entity_scores.scores":"Scores","condition.entry":"Predicate","condition.inverted.term":"Term","condition.item":"Item","condition.killed_by_player.inverse":"Inverted","condition.list":"Multiple","condition.location":"Location","condition.location_check.offsetX":"X offset","condition.location_check.offsetY":"Y offset","condition.location_check.offsetZ":"Z offset","condition.object":"Single","condition.random_chance.chance":"Chance","condition.random_chance_with_looting.chance":"Chance","condition.random_chance_with_looting.looting_multiplier":"Looting multiplier","condition.reference.name":"Predicate name","condition.table_bonus.chances":"Chances","condition.table_bonus.chances.entry":"Chance","condition.table_bonus.enchantment":"Enchantment","condition.time_check.period":"Period","condition.time_check.period.help":"If present, time will be modulo-divided by this value. For example, if set to 24000, value will operate on a time period of days.","condition.time_check.value":"Value","condition.value_check.range":"Range","condition.value_check.value":"Value","condition.weather_check.raining":"Raining","condition.weather_check.thundering":"Thundering","conditions":"Conditions","conditions.entry":"Condition","conditions.list":"Conditions","conditions.object":"Legacy","copy_source.block_entity":"Block entity","copy_source.direct_killer":"Direct killer","copy_source.killer":"Killer","copy_source.killer_player":"Killer player","copy_source.this":"This","criterion.bee_nest_destroyed.block":"Block","criterion.bee_nest_destroyed.num_bees_inside":"Number of bees inside","criterion.bred_animals.child":"Child","criterion.bred_animals.parent":"Parent","criterion.bred_animals.partner":"Partner","criterion.brewed_potion.potion":"Potion","criterion.changed_dimension.from":"From","criterion.changed_dimension.to":"To","criterion.channeled_lightning.victims":"Victims","criterion.channeled_lightning.victims.entry":"Entity","criterion.conditions":"Conditions","criterion.construct_beacon.beacon_level":"Pyramid level","criterion.consume_item.item":"Item","criterion.cured_zombie_villager.villager":"Villager","criterion.cured_zombie_villager.zombie":"Zombie","criterion.effects_changed.effects":"Effects","criterion.enchanted_item.item":"Item","criterion.enchanted_item.levels":"XP level","criterion.enter_block.block":"Block","criterion.enter_block.state":"States","criterion.entity_hurt_player.damage":"Damage","criterion.entity_killed_player.entity":"Source entity","criterion.entity_killed_player.killing_blow":"Killing blow","criterion.fall_from_height.distance":"Distance","criterion.fall_from_height.start_position":"Start position","criterion.filled_bucket.item":"Item","criterion.fishing_rod_hooked.entity":"Pulled entity","criterion.fishing_rod_hooked.item":"Item","criterion.hero_of_the_village.location":"Location","criterion.inventory_changed.items":"Items","criterion.inventory_changed.items.entry":"Item","criterion.inventory_changed.slots":"Slots","criterion.inventory_changed.slots.empty":"Slots empty","criterion.inventory_changed.slots.full":"Slots full","criterion.inventory_changed.slots.occupied":"Slots occupied","criterion.item_durability_changed.delta":"Delta","criterion.item_durability_changed.durability":"Durability","criterion.item_durability_changed.item":"Item","criterion.item_used_on_block.item":"Item","criterion.item_used_on_block.location":"Location","criterion.killed_by_crossbow.unique_entity_types":"Amount of unique entity types","criterion.killed_by_crossbow.victims":"Victims","criterion.killed_by_crossbow.victims.entry":"Entity","criterion.levitation.distance":"Distance","criterion.levitation.duration":"Duration","criterion.location.location":"Location","criterion.nether_travel.distance":"Distance","criterion.nether_travel.entered":"Entered location","criterion.nether_travel.exited":"Exited location","criterion.nether_travel.start_position":"Start position","criterion.placed_block.block":"Block","criterion.placed_block.item":"Item","criterion.placed_block.location":"Location","criterion.placed_block.state":"States","criterion.player":"Player","criterion.player_generates_container_loot.loot_table":"Loot table","criterion.player_hurt_entity.damage":"Damage","criterion.player_hurt_entity.entity":"Victim entity","criterion.player_killed_entity.entity":"Victim entity","criterion.player_killed_entity.killing_blow":"Killing blow","criterion.recipe_unlocked.recipe":"Recipe","criterion.ride_entity_in_lava.distance":"Distance","criterion.ride_entity_in_lava.start_position":"Start position","criterion.rod":"Rod","criterion.safely_harvest_honey.block":"Block","criterion.safely_harvest_honey.item":"Item","criterion.shot_crossbow.item":"Item","criterion.slept_in_bed.location":"Location","criterion.slide_down_block.block":"Block","criterion.summoned_entity.entity":"Entity","criterion.tame_animal.entity":"Animal","criterion.target_hit.projectile":"Projectile","criterion.target_hit.shooter":"Shooter","criterion.target_hit.signal_strength":"Signal strength","criterion.thrown_item_picked_up_by_entity.entity":"Entity","criterion.thrown_item_picked_up_by_entity.item":"Item","criterion.trigger":"Trigger","criterion.used_ender_eye.distance":"Distance","criterion.used_totem.item":"Totem item","criterion.villager_trade.item":"Purchased item","criterion.villager_trade.villager":"Villager","criterion.voluntary_exile.location":"Location","damage.blocked":"Blocked","damage.dealt":"Damage dealt","damage.source_entity":"Source entity","damage.taken":"Damage taken","damage.type":"Damage type","damage_source.bypasses_armor":"Bypass armor","damage_source.bypasses_invulnerability":"Void","damage_source.bypasses_magic":"Starvation","damage_source.direct_entity":"Direct entity","damage_source.is_explosion":"Explosion","damage_source.is_fire":"Fire","damage_source.is_lightning":"Lightning","damage_source.is_magic":"Magic","damage_source.is_projectile":"Projectile","damage_source.source_entity":"Source entity","decorator.block_predicate_filter.predicate":"Predicate","decorator.carving_mask.step":"Step","decorator.cave_surface.surface":"Surface","decorator.cave_surface.floor_to_ceiling_search_range":"Search range","decorator.cave_surface.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","decorator.cave_surface.allow_water":"Allow water","decorator.chance.chance":"Chance","decorator.config":"Config","decorator.count.count":"Count","decorator.count_extra.count":"Count","decorator.count_extra.extra_chance":"Extra chance","decorator.count_extra.extra_count":"Extra count","decorator.count_multilayer.count":"Count","decorator.count_on_every_layer.count":"Count","decorator.count_noise.above_noise":"Above noise","decorator.count_noise.below_noise":"Below noise","decorator.count_noise.noise_level":"Noise level","decorator.noise_threshold_count.above_noise":"Above noise","decorator.noise_threshold_count.below_noise":"Below noise","decorator.noise_threshold_count.noise_level":"Noise level","decorator.count_noise_biased.noise_factor":"Noise factor","decorator.count_noise_biased.noise_offset":"Noise offset","decorator.count_noise_biased.noise_to_count_ratio":"Noise to count ratio","decorator.noise_based_count.noise_factor":"Noise factor","decorator.noise_based_count.noise_offset":"Noise offset","decorator.noise_based_count.noise_to_count_ratio":"Noise to count ratio","decorator.decorated.inner":"Inner","decorator.decorated.outer":"Outer","decorator.depth_average.baseline":"Baseline","decorator.depth_average.spread":"Spread","decorator.environment_scan.direction_of_search":"Direction","decorator.environment_scan.max_steps":"Max steps","decorator.environment_scan.target_condition":"Target condition","decorator.glowstone.count":"Count","decorator.heightmap.heightmap":"Heightmap","decorator.heightmap_spread_double.heightmap":"Heightmap","decorator.lava_lake.chance":"Chance","decorator.range.bottom_inclusive":"Bottom inclusive","decorator.range.top_inclusive":"Top inclusive","decorator.range_biased_to_bottom.bottom_inclusive":"Bottom inclusive","decorator.range_biased_to_bottom.top_inclusive":"Top inclusive","decorator.range_biased_to_bottom.cutoff":"Cutoff","decorator.range_very_biased_to_bottom.bottom_inclusive":"Bottom inclusive","decorator.range_very_biased_to_bottom.top_inclusive":"Top inclusive","decorator.range_very_biased_to_bottom.cutoff":"Cutoff","decorator.range.height":"Height","decorator.height_range.height":"Height","decorator.random_offset.xz_spread":"XZ spread","decorator.random_offset.y_spread":"Y spread","decorator.surface_relative_threshold_filter.heightmap":"Heightmap","decorator.surface_relative_threshold_filter.min_inclusive":"Min inclusive","decorator.surface_relative_threshold_filter.max_inclusive":"Max inclusive","decorator.water_depth_threshold.max_water_depth":"Max water depth","decorator.surface_water_depth_filter.max_water_depth":"Max water depth","decorator.type":"Type","dimension":"Dimension","dimension.generator":"Generator","dimension.generator.biome_source":"Biome source","dimension.overworld":"Overworld","dimension.the_end":"The end","dimension.the_nether":"The nether","dimension.type":"Dimension type","dimension.type.object":"Inline","dimension.type.string":"Reference","dimension_type.ambient_light":"Ambient light","dimension_type.ambient_light.help":"How much ambient light there is. Should be a value between 0.0 and 1.0.","dimension_type.bed_works":"Bed works","dimension_type.bed_works.help":"If true, players can use beds to set their spawn and advance time. If false, beds will blow up when used.","dimension_type.coordinate_scale":"Coordinate scale","dimension_type.coordinate_scale.help":"Multiplier applied to coordinates when traveling between dimensions using a nether portal or /execute in.","dimension_type.effects":"Effects","dimension_type.effects.help":"Sky effects","dimension_type.effects.overworld":"Overworld","dimension_type.effects.the_end":"The end","dimension_type.effects.the_nether":"The nether","dimension_type.fixed_time":"Fixed time","dimension_type.fixed_time.help":"Setting this value will keep the sun in a fixed position.","dimension_type.has_ceiling":"Has ceiling","dimension_type.has_ceiling.help":"Affects the weather, map items and respawning rules.","dimension_type.has_raids":"Has raids","dimension_type.has_raids.help":"If true, players with the Bad Omen effect can cause a raid.","dimension_type.has_skylight":"Has skylight","dimension_type.has_skylight.help":"Affects the weather, lighting engine and respawning rules.","dimension_type.height":"Height","dimension_type.height.help":"The total height in which blocks can exist. Max Y = Min Y + Height.","dimension_type.infiniburn":"Infiniburn","dimension_type.infiniburn.help":"Block tag defining what blocks keep fire infinitely burning.","dimension_type.logical_height":"Logical height","dimension_type.logical_height.help":"Portals can\'t spawn and chorus fruit can\'t teleport players above this height.","dimension_type.min_y":"Min Y","dimension_type.min_y.help":"The minimum height in which blocks can exist.","dimension_type.name":"Name","dimension_type.natural":"Natural","dimension_type.natural.help":"If true, portals will spawn zombified piglins. If false, compasses and clocks spin randomly.","dimension_type.piglin_safe":"Piglin safe","dimension_type.piglin_safe.help":"If false, piglins will shake and convert to zombified piglins.","dimension_type.respawn_anchor_works":"Respawn anchor works","dimension_type.respawn_anchor_works.help":"If true, players can charge and use respawn anchors to set their spawn. If false, respawn anchors will blow up when used.","dimension_type.ultrawarm":"Ultrawarm","dimension_type.ultrawarm.help":"If true, water will evaporate and sponges will dry.","direction.up":"Up","direction.down":"Down","direction.north":"North","direction.east":"East","direction.south":"South","direction.west":"West","display_position.firstperson_righthand":"Firstperson righthand","display_position.firstperson_lefthand":"Firstperson lefthand","display_position.thirdperson_righthand":"Firstperson righthand","display_position.thirdperson_lefthand":"Firstperson lefthand","display_position.gui":"GUI","display_position.head":"Head","display_position.ground":"Ground","display_position.fixed":"Fixed","distance.absolute":"Absolute","distance.horizontal":"Horizontal","distance.x":"X","distance.y":"Y","distance.z":"Z","enchantment.aqua_affinity":"Aqua affinity","enchantment.bane_of_arthropods":"Bane of arthropods","enchantment.binding_curse":"Curse of binding","enchantment.blast_protection":"Blast protection","enchantment.channeling":"Channeling","enchantment.depth_strider":"Depth strider","enchantment.efficiency":"Efficiency","enchantment.enchantment":"Enchantment","enchantment.feather_falling":"Feather falling","enchantment.fire_aspect":"Fire aspect","enchantment.fire_protection":"Fire protection","enchantment.flame":"Flame","enchantment.fortune":"Fortune","enchantment.frost_walker":"Frost walker","enchantment.impaling":"Impaling","enchantment.infinity":"Infinity","enchantment.knockback":"Knockback","enchantment.levels":"Levels","enchantment.looting":"Looting","enchantment.loyalty":"Loyalty","enchantment.luck_of_the_sea":"Luck of the sea","enchantment.lure":"Lure","enchantment.mending":"Mending","enchantment.multishot":"Multishot","enchantment.piercing":"Piercing","enchantment.power":"Power","enchantment.projectile_protection":"Projectile protection","enchantment.protection":"Protection","enchantment.punch":"Punch","enchantment.quick_charge":"Quick charge","enchantment.respiration":"Respiration","enchantment.riptide":"Riptide","enchantment.sharpness":"Sharpness","enchantment.silk_touch":"Silk touch","enchantment.smite":"Smite","enchantment.sweeping":"Sweeping edge","enchantment.thorns":"Thorns","enchantment.unbreaking":"Unbreaking","enchantment.vanishing_curse":"Curse of vanishing","entity.distance":"Distance","entity.effects":"Effects","entity.equipment":"Equipment","entity.fishing_hook":"Fishing hook","entity.fishing_hook.in_open_water":"In open water","entity.flags":"Flags","entity.isBaby":"Baby","entity.isOnFire":"On fire","entity.isSneaking":"Sneaking","entity.isSprinting":"Sprinting","entity.isSwimming":"Swimming","entity.location":"Location","entity.nbt":"NBT","entity.player":"Player","entity.targeted_entity":"Targeted entity","entity.team":"Team","entity.type":"Entity","entity.vehicle":"Vehicle","entity_source.direct_killer":"Direct killer","entity_source.killer":"Killer","entity_source.killer_player":"Killer player","entity_source.this":"This","entry":"Entry","error":"Error","error.expected_boolean":"Expected a boolean","error.expected_integer":"Expected an integer","error.expected_json":"Expected JSON","error.expected_list":"Expected an array","error.expected_number":"Expected a number","error.expected_object":"Expected an object","error.expected_range":"Expected a range","error.expected_string":"Expected a string","error.expected_uniform_int":"Expected a uniform int","error.height_multiple":"Height has to be multiple of %0%","error.invalid_binomial":"Range cannot use the binomial type","error.invalid_empty_list":"Array cannot be empty","error.invalid_empty_string":"String cannot be empty","error.invalid_enum_option":"Invalid option \\"%0%\\"","error.invalid_exact":"Range cannot use the constant type","error.invalid_pattern":"String is not valid: %0%","error.invalid_list_range.exact":"Expected a list with length %1%","error.invalid_list_range.larger":"List length %0% is larger than maximum %1%","error.invalid_list_range.smaller":"List length %0% is smaller than minimum %1%","error.invalid_number_range.between":"Expected a number between %1% and %2%","error.invalid_number_range.larger":"Value %0% is larger than maximum %1%","error.invalid_number_range.smaller":"Value %0% is smaller than minimum %1%","error.invalid_number_enum":"Expected one of %0%","error.logical_height":"Logical height cannot be higher than height","error.min_y_multiple":"Min Y has to be a multiple of %0%","error.min_y_plus_height":"Min Y + height cannot be higher than %0%","error.recipe.invalid_key":"only single character is allowed as a key","error.separation_smaller_spacing":"Separation has to be smaller than spacing","false":"False","feature.bamboo.probability":"Probability","feature.basalt_columns.height":"Height","feature.basalt_columns.reach":"Reach","feature.block_column.direction":"Direction","feature.block_column.allowed_placement":"Allowed placement","feature.block_column.prioritize_tip":"Prioritize tip","feature.block_column.layers":"Layers","feature.block_column.layers.entry.height":"Height","feature.block_column.layers.entry.state":"State","feature.block_pile.state_provider":"State provider","feature.config":"Config","feature.decorated.decorator":"Decorator","feature.decorated.feature":"Feature","feature.delta_feature.contents":"Contents","feature.delta_feature.rim":"Rim","feature.delta_feature.rim_size":"Rim size","feature.delta_feature.size":"Size","feature.disk.half_height":"Half height","feature.disk.radius":"Radius","feature.disk.state":"State","feature.disk.targets":"Targets","feature.disk.targets.entry":"State","feature.dripstone_cluster.chance_of_dripstone_column_at_max_distance_from_center":"Far dripstone chance","feature.dripstone_cluster.chance_of_dripstone_column_at_max_distance_from_center.help":"Chance of a dripstone column at the max distance from the center.","feature.dripstone_cluster.density":"Density","feature.dripstone_cluster.dripstone_block_layer_thickness":"Block layer thickness","feature.dripstone_cluster.floor_to_ceiling_search_range":"Search range","feature.dripstone_cluster.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","feature.dripstone_cluster.height":"Height","feature.dripstone_cluster.height_deviation":"Height deviation","feature.dripstone_cluster.max_distance_from_edge_affecting_chance_of_dripstone_column":"Column chance distance","feature.dripstone_cluster.max_distance_from_edge_affecting_chance_of_dripstone_column.help":"Max distance from the edge affecting the chance of dripstone columns.","feature.dripstone_cluster.max_distance_from_center_affecting_height_bias":"Height bias distance","feature.dripstone_cluster.max_distance_from_center_affecting_height_bias.help":"Max distance from the center affecting the height bias.","feature.dripstone_cluster.max_stalagmite_stalactite_height_diff":"Max height difference","feature.dripstone_cluster.max_stalagmite_stalactite_height_diff.help":"Max height difference between the stalagmite and stalactite.","feature.dripstone_cluster.radius":"Radius","feature.dripstone_cluster.wetness":"Wetness","feature.dripstone_cluster.wetness_deviation":"Wetness deviation","feature.dripstone_cluster.wetness_mean":"Wetness mean","feature.emerald_ore.state":"State","feature.emerald_ore.target":"Target","feature.end_gateway.exact":"Exact","feature.end_gateway.exit":"Exit","feature.end_spike.crystal_beam_target":"Crystal beam target","feature.end_spike.crystal_invulnerable":"Crystal invulnerable","feature.end_spike.spikes":"Spikes","feature.end_spike.spikes.entry":"Spike","feature.end_spike.spikes.entry.centerX":"Center X","feature.end_spike.spikes.entry.centerZ":"Center Z","feature.end_spike.spikes.entry.guarded":"Guarded","feature.end_spike.spikes.entry.height":"Height","feature.end_spike.spikes.entry.radius":"Radius","feature.fill_layer.height":"Height","feature.fill_layer.state":"State","feature.flower.blacklist":"Blacklist","feature.flower.block_placer":"Block placer","feature.flower.can_replace":"Can replace","feature.flower.need_water":"Need water","feature.flower.feature":"Placed feature","feature.flower.project":"Project","feature.flower.state_provider":"State provider","feature.flower.tries":"Tries","feature.flower.whitelist":"Whitelist","feature.flower.xspread":"X spread","feature.flower.xz_spread":"XZ spread","feature.flower.yspread":"Y spread","feature.flower.y_spread":"Y spread","feature.flower.zspread":"Z spread","feature.forest_rock.state":"State","feature.fossil.max_empty_corners_allowed":"Max empty corners","feature.fossil.max_empty_corners_allowed.help":"If more corners are exposed to air, feature placement is cancelled.","feature.fossil.fossil_structures":"Fossil structures","feature.fossil.overlay_structures":"Overlay structures","feature.fossil.fossil_processors":"Fossil processors","feature.fossil.fossil_processors.string":"Reference","feature.fossil.fossil_processors.object":"Inline","feature.fossil.overlay_processors":"Overlay processors","feature.fossil.overlay_processors.string":"Reference","feature.fossil.overlay_processors.object":"Inline","feature.geode.blocks":"Blocks","feature.geode.blocks.filling_provider":"Filling","feature.geode.blocks.inner_layer_provider":"Inner layer","feature.geode.blocks.alternate_inner_layer_provider":"Alternate inner layer","feature.geode.blocks.middle_layer_provider":"Middle layer","feature.geode.blocks.outer_layer_provider":"Outer layer","feature.geode.blocks.inner_placements":"Inner placements","feature.geode.blocks.cannot_replace":"Cannot replace","feature.geode.blocks.cannot_replace.help":"Blocks that will not be replaced by the geode.","feature.geode.blocks.invalid_blocks":"Invalid blocks","feature.geode.blocks.invalid_blocks.help":"When encountering an invalid block, feature placement is cancelled.","feature.geode.layers":"Layers","feature.geode.layers.filling":"Filling","feature.geode.layers.inner_layer":"Inner layer","feature.geode.layers.middle_layer":"Middle layer","feature.geode.layers.outer_layer":"Outer layer","feature.geode.crack":"Crack","feature.geode.crack.generate_crack_chance":"Crack chance","feature.geode.crack.base_crack_size":"Crack size","feature.geode.crack.crack_point_offset":"Crack point offset","feature.geode.noise_multiplier":"Noise multiplier","feature.geode.use_potential_placements_chance":"Inner placements chance","feature.geode.use_alternate_layer0_chance":"Alternate inner layer chance","feature.geode.placements_require_layer0_alternate":"Placements require alternate layer","feature.geode.outer_wall_distance":"Outer wall distance","feature.geode.distribution_points":"Distribution points","feature.geode.point_offset":"Point offset","feature.geode.min_gen_offset":"Min gen offset","feature.geode.max_gen_offset":"Max gen offset","feature.geode.invalid_blocks_threshold":"Invalid blocks threshold","feature.glow_lichen.can_be_placed_on":"Can be placed on","feature.glow_lichen.can_be_placed_on.entry":"Block state","feature.glow_lichen.can_place_on_ceiling":"Can place on ceiling","feature.glow_lichen.can_place_on_floor":"Can place on floor","feature.glow_lichen.can_place_on_wall":"Can place on wall","feature.glow_lichen.chance_of_spreading":"Chance of spreading","feature.glow_lichen.search_range":"Search range","feature.growing_plant.direction":"Direction","feature.growing_plant.allow_water":"Allow water","feature.growing_plant.height_distribution":"Height distribution","feature.growing_plant.body_provider":"Body provider","feature.growing_plant.head_provider":"Head provider","feature.huge_brown_mushroom.cap_provider":"Cap provider","feature.huge_brown_mushroom.foliage_radius":"Foliage radius","feature.huge_brown_mushroom.stem_provider":"Stem provider","feature.huge_fungus.decor_state":"Decoration","feature.huge_fungus.hat_state":"Hat","feature.huge_fungus.planted":"Planted","feature.huge_fungus.stem_state":"Stem","feature.huge_fungus.valid_base_block":"Valid base","feature.huge_red_mushroom.cap_provider":"Cap provider","feature.huge_red_mushroom.foliage_radius":"Foliage radius","feature.huge_red_mushroom.stem_provider":"Stem provider","feature.ice_patch.half_height":"Half height","feature.ice_patch.radius":"Radius","feature.ice_patch.state":"State","feature.ice_patch.targets":"Targets","feature.ice_patch.targets.entry":"State","feature.iceberg.state":"State","feature.lake.state":"State","feature.lake.fluid":"Fluid","feature.lake.barrier":"Barrier","feature.large_dripstone.column_radius":"Column radius","feature.large_dripstone.floor_to_ceiling_search_range":"Search range","feature.large_dripstone.floor_to_ceiling_search_range.help":"Floor to ceiling search range.","feature.large_dripstone.height_scale":"Height scale","feature.large_dripstone.max_column_radius_to_cave_height_ratio":"Radius to cave height ratio","feature.large_dripstone.min_bluntness_for_wind":"Min bluntness for wind","feature.large_dripstone.min_radius_for_wind":"Min radius for wind","feature.large_dripstone.stalactite_bluntness":"Stalactite bluntness","feature.large_dripstone.stalagmite_bluntness":"Stalagmite bluntness","feature.large_dripstone.wind_speed":"Wind speed","feature.nether_forest_vegetation.state_provider":"State provider","feature.nether_forest_vegetation.spread_width":"Spread width","feature.nether_forest_vegetation.spread_height":"Spread height","feature.netherrack_replace_blobs.radius":"Radius","feature.netherrack_replace_blobs.state":"State","feature.netherrack_replace_blobs.target":"Target","feature.no_bonemeal_flower.allowed_on":"Allowed on","feature.no_bonemeal_flower.blacklist":"Blacklist","feature.no_bonemeal_flower.block_placer":"Block placer","feature.no_bonemeal_flower.can_replace":"Can replace","feature.no_bonemeal_flower.disallowed_on":"Disallowed on","feature.no_bonemeal_flower.need_water":"Need water","feature.no_bonemeal_flower.feature":"Placed feature","feature.no_bonemeal_flower.only_in_air":"Only in air","feature.no_bonemeal_flower.project":"Project","feature.no_bonemeal_flower.state_provider":"State provider","feature.no_bonemeal_flower.tries":"Tries","feature.no_bonemeal_flower.whitelist":"Whitelist","feature.no_bonemeal_flower.xspread":"X spread","feature.no_bonemeal_flower.xz_spread":"XZ spread","feature.no_bonemeal_flower.yspread":"Y spread","feature.no_bonemeal_flower.y_spread":"Y spread","feature.no_bonemeal_flower.zspread":"Z spread","feature.no_surface_ore.size":"Size","feature.no_surface_ore.state":"State","feature.no_surface_ore.target":"Target","feature.object":"Inline","feature.ore.discard_chance_on_air_exposure":"Discard on exposure chance","feature.ore.discard_chance_on_air_exposure.help":"The chance that feature placement will be discarded if the ore is exposed to air blocks.","feature.ore.size":"Size","feature.ore.state":"State","feature.ore.target":"Target","feature.ore.targets":"Targets","feature.ore.targets.entry.target":"Target","feature.ore.targets.entry.state":"State","feature.scattered_ore.discard_chance_on_air_exposure":"Discard on exposure chance","feature.scattered_ore.discard_chance_on_air_exposure.help":"The chance that feature placement will be discarded if the ore is exposed to air blocks.","feature.scattered_ore.size":"Size","feature.scattered_ore.targets":"Targets","feature.scattered_ore.targets.entry.target":"Target","feature.scattered_ore.targets.entry.state":"State","feature.pointed_dripstone.chance_of_taller_dripstone":"Chance of taller dripstone","feature.pointed_dripstone.chance_of_directional_spread":"Chance of directional spread","feature.pointed_dripstone.chance_of_spread_radius2":"Chance of spread radius 2","feature.pointed_dripstone.chance_of_spread_radius3":"Chance of spread radius 3","feature.random_boolean_selector.feature_false":"Placed feature 1","feature.random_boolean_selector.feature_true":"Placed feature 2","feature.random_patch.allowed_on":"Allowed on","feature.random_patch.blacklist":"Blacklist","feature.random_patch.block_placer":"Block placer","feature.random_patch.can_replace":"Can replace","feature.random_patch.disallowed_on":"Disallowed on","feature.random_patch.need_water":"Need water","feature.random_patch.feature":"Placed feature","feature.random_patch.only_in_air":"Only in air","feature.random_patch.project":"Project","feature.random_patch.state_provider":"State provider","feature.random_patch.tries":"Tries","feature.random_patch.whitelist":"Whitelist","feature.random_patch.xspread":"X spread","feature.random_patch.xz_spread":"XZ spread","feature.random_patch.yspread":"Y spread","feature.random_patch.y_spread":"Y spread","feature.random_patch.zspread":"Z spread","feature.random_selector.default":"Default","feature.random_selector.features":"Features","feature.random_selector.features.entry":"Feature","feature.random_selector.features.entry.chance":"Chance","feature.random_selector.features.entry.feature":"Placed feature","feature.replace_single_block.targets":"Targets","feature.replace_single_block.targets.entry.target":"Target","feature.replace_single_block.targets.entry.state":"State","feature.root_system.required_vertical_space_for_tree":"Required vertical tree space","feature.root_system.root_radius":"Root radius","feature.root_system.root_placement_attempts":"Root placement attempts","feature.root_system.root_column_max_height":"Root max height","feature.root_system.hanging_root_radius":"Hanging roots radius","feature.root_system.hanging_roots_vertical_span":"Hanging roots vertical span","feature.root_system.hanging_root_placement_attempts":"Hanging roots attempts","feature.root_system.allowed_vertical_water_for_tree":"Max water depth","feature.root_system.root_replaceable":"Root replaceable","feature.root_system.root_state_provider":"Root","feature.root_system.hanging_root_state_provider":"Hanging roots","feature.root_system.feature":"Tree feature","feature.sea_pickle.count":"Count","feature.seagrass.probability":"Probability","feature.simple_block.place_in":"Place in","feature.simple_block.place_in.entry":"State","feature.simple_block.place_on":"Place on","feature.simple_block.place_on.entry":"State","feature.simple_block.place_under":"Place under","feature.simple_block.place_under.entry":"State","feature.simple_block.to_place":"To place","feature.simple_random_selector.features":"Features","feature.simple_random_selector.features.entry":"Placed feature","feature.small_dripstone.chance_of_taller_dripstone":"Chance of taller dripstone","feature.small_dripstone.empty_space_search_radius":"Empty space search radius","feature.small_dripstone.max_offset_from_origin":"Max offset from origin","feature.small_dripstone.max_placements":"Max placements","feature.spring_feature.hole_count":"Hole count","feature.spring_feature.required_block_below":"Required block below","feature.spring_feature.rock_count":"Rock count","feature.spring_feature.state":"State","feature.spring_feature.valid_blocks":"Valid blocks","feature.string":"Reference","feature.tree.decorators":"Decorators","feature.tree.decorators.entry":"Tree decorator","feature.tree.foliage_placer":"Foliage placer","feature.tree.heightmap":"Heightmap","feature.tree.ignore_vines":"Ignore vines","feature.tree.leaves_provider":"Leaves provider","feature.tree.foliage_provider":"Foliage provider","feature.tree.force_dirt":"Force dirt","feature.tree.dirt_provider":"Dirt provider","feature.tree.sapling_provider":"Sapling provider","feature.tree.max_water_depth":"Max water depth","feature.tree.minimum_size":"Minimum size","feature.tree.minimum_size.limit":"Limit","feature.tree.minimum_size.lower_size":"Lower size","feature.tree.minimum_size.middle_size":"Middle size","feature.tree.minimum_size.min_clipped_height":"Min clipped height","feature.tree.minimum_size.type":"Minimum size","feature.tree.minimum_size.upper_limit":"Upper limit","feature.tree.minimum_size.upper_size":"Upper size","feature.tree.trunk_placer":"Trunk placer","feature.tree.trunk_provider":"Trunk provider","feature.twisting_vines.spread_width":"Spread width","feature.twisting_vines.spread_height":"Spread height","feature.twisting_vines.max_height":"Max height","feature.type":"Type","feature.underwater_magma.floor_search_range":"Floor search range","feature.underwater_magma.placement_radius_around_floor":"Placement radius","feature.underwater_magma.placement_probability_per_valid_position":"Probability","feature.underwater_magma.placement_probability_per_valid_position.help":"The probability of placing magma per valid position.","feature.vegetation_patch.depth":"Depth","feature.vegetation_patch.extra_bottom_block_chance":"Extra bottom block chance","feature.vegetation_patch.extra_edge_column_chance":"Extra edge column chance","feature.vegetation_patch.ground_state":"Ground state","feature.vegetation_patch.replaceable":"Replaceable","feature.vegetation_patch.surface":"Surface","feature.vegetation_patch.vegetation_chance":"Vegetation chance","feature.vegetation_patch.vegetation_feature":"Vegetation feature","feature.vegetation_patch.vertical_range":"Vertical range","feature.vegetation_patch.xz_radius":"XZ radius","feature.waterlogged_vegetation_patch.depth":"Depth","feature.waterlogged_vegetation_patch.extra_bottom_block_chance":"Extra bottom block chance","feature.waterlogged_vegetation_patch.extra_edge_column_chance":"Extra edge column chance","feature.waterlogged_vegetation_patch.ground_state":"Ground state","feature.waterlogged_vegetation_patch.replaceable":"Replaceable","feature.waterlogged_vegetation_patch.surface":"Surface","feature.waterlogged_vegetation_patch.vegetation_chance":"Vegetation chance","feature.waterlogged_vegetation_patch.vegetation_feature":"Vegetation feature","feature.waterlogged_vegetation_patch.vertical_range":"Vertical range","feature.waterlogged_vegetation_patch.xz_radius":"XZ radius","float_provider.value.deviation":"Deviation","float_provider.value.mean":"Mean","float_provider.value.min":"Min","float_provider.value.min_inclusive":"Min exclusive","float_provider.value.max":"Max","float_provider.value.max_exclusive":"Max exclusive","float_provider.value.plateau":"Plateau","float_provider.type.number":"Constant","float_provider.type.constant":"Constant+","float_provider.type.uniform":"Uniform","float_provider.type.clamped_normal":"Clamped normal","float_provider.type.trapezoid":"Trapezoid","float_provider.value":"Value","fluid.fluid":"Fluid ID","fluid.state":"Fluid state","fluid.tag":"Fluid tag","fluid_state.Name":"Name","fluid_state.Properties":"Properties","foliage_placer.crown_height":"Crown height","foliage_placer.height":"Height","foliage_placer.offset":"Offset","foliage_placer.radius":"Radius","foliage_placer.trunk_height":"Trunk height","foliage_placer.type":"Type","function.apply_bonus.enchantment":"Enchantment","function.apply_bonus.formula":"Formula","function.apply_bonus.formula.binomial_with_bonus_count":"Binomial with bonus count","function.apply_bonus.formula.ore_drops":"Ore drops","function.apply_bonus.formula.uniform_bonus_count":"Uniform bonus count","function.apply_bonus.parameters":"Parameters","function.apply_bonus.parameters.bonusMultiplier":"Multiplier","function.apply_bonus.parameters.extra":"Extra","function.apply_bonus.parameters.probability":"Probability","function.copy_name.source":"Source","function.copy_nbt.ops":"NBT operations","function.copy_nbt.ops.entry":"Operation","function.copy_nbt.source":"Source","function.copy_state.block":"Block","function.copy_state.properties":"Properties","function.copy_state.properties.entry":"Property","function.enchant_randomly.enchantments":"Optional enchantments","function.enchant_randomly.enchantments.entry":"Enchantment","function.enchant_with_levels.levels":"Levels","function.enchant_with_levels.treasure":"Treasure","function.exploration_map.decoration":"Decoration","function.exploration_map.destination":"Destination","function.exploration_map.search_radius":"Search radius (Chunks)","function.exploration_map.skip_existing_chunks":"Skip existing chunks","function.exploration_map.zoom":"Zoom","function.fill_player_head.entity":"Entity","function.function":"Function","function.limit_count.limit":"Limit","function.list":"Multiple","function.looting_enchant.count":"Count","function.looting_enchant.limit":"Limit","function.object":"Single","function.set_attributes.modifiers":"Modifiers","function.set_attributes.modifiers.entry":"Modifier","function.set_banner_pattern.append":"Append","function.set_banner_pattern.patterns":"Patterns","function.set_contents.entries":"Contents","function.set_contents.entries.entry":"Entry","function.set_contents.type":"Type","function.set_count.add":"Add","function.set_count.add.help":"If true, change will be relative to current item count","function.set_count.count":"Count","function.set_damage.add":"Add","function.set_damage.add.help":"If true, change will be relative to current damage","function.set_damage.damage":"Damage","function.set_data.data":"Data","function.set_enchantments.add":"Add","function.set_enchantments.add.help":"If true, change will be relative to current level","function.set_enchantments.enchantments":"Enchantments","function.set_loot_table.name":"Loot table name","function.set_loot_table.seed":"Seed","function.set_loot_table.type":"Type","function.set_lore.entity":"Entity","function.set_lore.lore":"Lore","function.set_lore.lore.entry":"Line","function.set_lore.replace":"Replace","function.set_name.entity":"Entity","function.set_name.name":"Name","function.set_nbt.tag":"NBT","function.set_potion.id":"Potion","function.set_stew_effect.effects":"Effects","function.set_stew_effect.effects.entry":"Effect","function.set_stew_effect.effects.entry.duration":"Duration","function.set_stew_effect.effects.entry.type":"Type","functions":"Functions","functions.entry":"Function","gamemode.adventure":"Adventure","gamemode.creative":"Creative","gamemode.spectator":"Spectator","gamemode.survival":"Survival","generation_step.air":"Air","generation_step.liquid":"Liquid","generator.biome_source.altitude_noise":"Altitude noise","generator.biome_source.biome":"Biome","generator.biome_source.biomes":"Biomes","generator.biome_source.humidity_noise":"Humidity noise","generator.biome_source.large_biomes":"Large biomes","generator.biome_source.legacy_biome_init_layer":"Legacy biome init layer","generator.biome_source.preset":"Biomes preset","generator.biome_source.preset.nether":"Nether","generator.biome_source.scale":"Scale","generator.biome_source.seed":"Biomes seed","generator.biome_source.temperature_noise":"Temperature noise","generator.biome_source.type":"Biome source","generator.biome_source.weirdness_noise":"Weirdness noise","generator.seed":"Dimension seed","generator.settings":"Generator settings","generator.settings.biome":"Biome","generator.settings.lakes":"Lakes","generator.settings.layers":"Layers","generator.settings.layers.entry":"Layer","generator.settings.layers.entry.block":"Block ID","generator.settings.layers.entry.height":"Height","generator.settings.object":"Inline","generator.settings.presets.amplified":"Amplified","generator.settings.presets.caves":"Caves","generator.settings.presets.end":"End","generator.settings.presets.floating_islands":"Floating islands","generator.settings.presets.nether":"Nether","generator.settings.presets.overworld":"Overworld","generator.settings.string":"Reference","generator.settings.structures":"Structures","generator.settings.structures.stronghold":"Stronghold","generator.settings.structures.stronghold.count":"Count","generator.settings.structures.stronghold.distance":"Distance","generator.settings.structures.stronghold.spread":"Spread","generator.settings.structures.structures":"Structures","generator.type":"Generator type","generator_biome.biome":"Biome","generator_biome.parameters":"Parameters","generator_biome.parameters.altitude":"Altitude","generator_biome.parameters.help":"These parameters determine the placement of the biome. Every biome must have a unique combination of them. Biomes with similar values will generate next to each other.","generator_biome.parameters.humidity":"Humidity","generator_biome.parameters.offset":"Offset","generator_biome.parameters.temperature":"Temperature","generator_biome.parameters.weirdness":"Weirdness","generator_biome.parameters.continentalness":"Continentalness","generator_biome.parameters.erosion":"Erosion","generator_biome.parameters.depth":"Depth","generator_biome_noise.amplitudes":"Amplitudes","generator_biome_noise.amplitudes.entry":"Octave %0%","generator_biome_noise.firstOctave":"First octave","generator_structure.salt":"Salt","generator_structure.separation":"Separation","generator_structure.separation.help":"The minumum distance in chunks between two structures of this type.","generator_structure.spacing":"Spacing","generator_structure.spacing.help":"The average distance in chunks between two structures of this type.","height_provider.inner":"Inner","height_provider.min_inclusive":"Min inclusive","height_provider.max_inclusive":"Max inclusive","height_provider.plateau":"Plateau","height_provider.value":"Value","height_provider.type.number":"Constant","height_provider.type.constant":"Constant+","height_provider.type.uniform":"Uniform","height_provider.type.biased_to_bottom":"Biased to bottom","height_provider.type.very_biased_to_bottom":"Very biased to bottom","height_provider.type.trapezoid":"Trapezoid","heightmap_type.MOTION_BLOCKING":"Motion blocking","heightmap_type.MOTION_BLOCKING_NO_LEAVES":"Motion blocking (Ignore Leaves)","heightmap_type.OCEAN_FLOOR":"Ocean floor","heightmap_type.OCEAN_FLOOR_WG":"Ocean floor (World Gen)","heightmap_type.WORLD_SURFACE":"World surface","heightmap_type.WORLD_SURFACE_IGNORE_SNOW":"World surface (Ignore Snow)","heightmap_type.WORLD_SURFACE_WG":"World surface (World Gen)","hide_source":"Hide source","int_provider.value":"Value","int_provider.value.deviation":"Deviation","int_provider.value.mean":"Mean","int_provider.value.min_inclusive":"Min inclusive","int_provider.value.max_inclusive":"Max inclusive","int_provider.value.source":"Source","int_provider.distribution":"Distribution","int_provider.distribution.entry.weight":"Weight","int_provider.distribution.entry.data":"Provider","int_provider.type.number":"Constant","int_provider.type.constant":"Constant+","int_provider.type.uniform":"Uniform","int_provider.type.biased_to_bottom":"Biased to bottom","int_provider.type.clamped":"Clamped","int_provider.type.clamped_normal":"Clamped normal","int_provider.type.weighted_list":"Weighted list","item.count":"Count","item.durability":"Durability","item.enchantments":"Enchantments","item.enchantments.entry":"Enchantment","item.item":"Item ID","item.nbt":"NBT","item.potion":"Potion","item.tag":"Item tag","item_model_predicates.angle":"Angle","item_model_predicates.blocking":"Blocking","item_model_predicates.broken":"Broken","item_model_predicates.cast":"Cast","item_model_predicates.charged":"Charged","item_model_predicates.cooldown":"Cooldown","item_model_predicates.custom_model_data":"Custom model data","item_model_predicates.damage":"Damage","item_model_predicates.damaged":"Damaged","item_model_predicates.firework":"Firework","item_model_predicates.lefthanded":"Lefthanded","item_model_predicates.pull":"Pull","item_model_predicates.pulling":"Pulling","item_model_predicates.throwing":"Throwing","item_model_predicates.time":"Time","item_transform.rotation":"Rotation","item_transform.translation":"Translation","item_transform.scale":"Scale","key.advancements":"Advancements","key.attack":"Attack/destroy","key.back":"Walk backwards","key.chat":"Open chat","key.command":"Open command","key.drop":"Drop selected item","key.forward":"Walk forwards","key.fullscreen":"Toggle fullscreen","key.hotbar.1":"Hotbar slot 1","key.hotbar.2":"Hotbar slot 2","key.hotbar.3":"Hotbar slot 3","key.hotbar.4":"Hotbar slot 4","key.hotbar.5":"Hotbar slot 5","key.hotbar.6":"Hotbar slot 6","key.hotbar.7":"Hotbar slot 7","key.hotbar.8":"Hotbar slot 8","key.hotbar.9":"Hotbar slot 9","key.inventory":"Open/close inventory","key.jump":"Jump","key.left":"Strafe left","key.loadToolbarActivator":"Load toolbar activator","key.pickItem":"Pick block","key.playerlist":"List players","key.right":"Strafe right","key.saveToolbarActivator":"Save toolbar activator","key.screenshot":"Take screenshot","key.smoothCamera":"Toggle cinematic camera","key.sneak":"Sneak","key.spectatorOutlines":"Highlight players (Spectators)","key.sprint":"Sprint","key.swapOffhand":"Swap item with offhand","key.togglePerspective":"Toggle perspective","key.use":"Use item/place block","location.biome":"Biome","location.block":"Block","location.dimension":"Dimension","location.feature":"Feature","location.fluid":"Fluid","location.light":"Light","location.light.light":"Visible light level","location.position":"Position","location.position.x":"X","location.position.y":"Y","location.position.z":"Z","location.smokey":"Smokey","loot_condition_type.alternative":"Alternative","loot_condition_type.block_state_property":"Block state properties","loot_condition_type.damage_source_properties":"Damage source properties","loot_condition_type.entity_properties":"Entity properties","loot_condition_type.entity_scores":"Entity scores","loot_condition_type.inverted":"Inverted","loot_condition_type.killed_by_player":"Killed by player","loot_condition_type.location_check":"Location check","loot_condition_type.match_tool":"Match tool","loot_condition_type.random_chance":"Random chance","loot_condition_type.random_chance_with_looting":"Random chance with looting","loot_condition_type.reference":"Reference","loot_condition_type.survives_explosion":"Survives explosion","loot_condition_type.table_bonus":"Table bonus","loot_condition_type.time_check":"Time check","loot_condition_type.value_check":"Value check","loot_condition_type.weather_check":"Weather check","loot_entry.dynamic.name":"Name","loot_entry.item.name":"Name","loot_entry.loot_table.name":"Loot table name","loot_entry.quality":"Quality","loot_entry.tag.expand":"Expand","loot_entry.tag.expand.help":"If false, entry will return all contents of tag, otherwise entry will behave as multiple item entries.","loot_entry.tag.name":"Item tag name","loot_entry.type":"Type","loot_entry.weight":"Weight","loot_entry.functions":"Functions","loot_entry.functions.entry":"Function","loot_function_type.apply_bonus":"Apply bonus","loot_function_type.copy_name":"Copy name","loot_function_type.copy_nbt":"Copy NBT","loot_function_type.copy_state":"Copy block states","loot_function_type.enchant_randomly":"Enchant randomly","loot_function_type.enchant_with_levels":"Enchant with levels","loot_function_type.exploration_map":"Exploration map properties","loot_function_type.explosion_decay":"Explosion decay","loot_function_type.fill_player_head":"Fill player head","loot_function_type.furnace_smelt":"Furnace smelt","loot_function_type.limit_count":"Limit count","loot_function_type.looting_enchant":"Looting enchant","loot_function_type.set_attributes":"Set attributes","loot_function_type.set_banner_pattern":"Set banner pattern","loot_function_type.set_contents":"Set contents","loot_function_type.set_count":"Set count","loot_function_type.set_damage":"Set damage","loot_function_type.set_data":"Set data","loot_function_type.set_enchantments":"Set enchantments","loot_function_type.set_loot_table":"Set loot table","loot_function_type.set_lore":"Set lore","loot_function_type.set_name":"Set name","loot_function_type.set_nbt":"Set NBT","loot_function_type.set_potion":"Set potion","loot_function_type.set_stew_effect":"Set stew effect","loot_pool.bonus_rolls":"Bonus rolls","loot_pool.entries":"Entries","loot_pool.entries.entry":"Entry","loot_pool.rolls":"Rolls","loot_pool.rolls.help":"The amount of entries that are randomly chosen.","loot_pool_entry_type.alternatives":"Alternatives","loot_pool_entry_type.alternatives.help":"Tests conditions of the child entries and executes the first that can run.","loot_pool_entry_type.dynamic":"Dynamic","loot_pool_entry_type.dynamic.help":"Gets block specific drops.","loot_pool_entry_type.empty":"Empty","loot_pool_entry_type.empty.help":"Adds nothing to the pool.","loot_pool_entry_type.group":"Group","loot_pool_entry_type.group.help":"Executes all child entries when own conditions pass.","loot_pool_entry_type.item":"Item","loot_pool_entry_type.item.help":"Adds a single item.","loot_pool_entry_type.loot_table":"Loot table","loot_pool_entry_type.loot_table.help":"Adds the contents of another loot table.","loot_pool_entry_type.sequence":"Sequence","loot_pool_entry_type.sequence.help":"Executes child entries until the first one that can\'t run due to conditions.","loot_pool_entry_type.tag":"Item tag","loot_pool_entry_type.tag.help":"Adds the contents of an item tag.","loot_table.pools":"Pools","loot_table.pools.entry":"Pool","loot_table.type":"Type","luck_based":"Luck-based","material_condition.biome.biome_is":"Biome","material_condition.noise_threshold.noise":"Noise","material_condition.noise_threshold.min_threshold":"Min threshold","material_condition.noise_threshold.max_threshold":"Max threshold","material_condition.not.invert":"Invert","material_condition.stone_depth.offset":"Offset","material_condition.stone_depth.surface_type":"Surface","material_condition.stone_depth.add_surface_depth":"Add surface depth","material_condition.stone_depth.add_surface_secondary_depth":"Add surface secondary depth","material_condition.vertical_gradient.random_name":"Random name","material_condition.vertical_gradient.true_at_and_below":"True at and below","material_condition.vertical_gradient.false_at_and_above":"False at and above","material_condition.water.offset":"Offset","material_condition.water.surface_depth_multiplier":"Surface depth multiplier","material_condition.water.add_stone_depth":"Add stone depth","material_condition.y_above.anchor":"Anchor","material_condition.y_above.surface_depth_multiplier":"Surface depth multiplier","material_condition.y_above.add_stone_depth":"Add stone depth","material_rule.condition.if_true":"If true","material_rule.condition.then_run":"Then run","material_rule.block.result_state":"Result state","material_rule.sequence.sequence":"Sequence","material_rule.sequence.sequence.entry":"Rule","model.parent":"Parent","model.ambientocclusion":"Ambient occlusion","model.gui_light":"GUI light","model.textures":"Textures","model.elements":"Elements","model.elements.entry":"Element","model_element.from":"From","model_element.to":"To","model_element.rotation":"Rotation","model_element.rotation.origin":"Origin","model_element.rotation.axis":"Axis","model_element.rotation.angle":"Angle","model_element.rotation.rescale":"Rescale","model_element.shade":"Shade","model_element.faces":"Faces","model_element.faces.texture":"Texture","model_element.faces.uv":"UV","model_element.faces.cullface":"Cullface","model_element.faces.rotation":"Rotation","model_element.faces.tintindex":"Tint index","model.display":"Display","model.overrides":"Overrides","model.overrides.entry":"Override","model_override.predicate":"Predicate","model_override.model":"Model","model_variant.object":"Single","model_variant.list":"Multiple","model_variant.model":"Model","model_variant.x":"X rotation","model_variant.y":"Y rotation","model_variant.uvlock":"UV lock","model_variant.weight":"Weight","multipart_condition.OR":"Or","multipart_condition.object":"Condition","multipart_condition.or":"Or","multipart_condition.OR.entry":"Condition","nbt_operation.op":"Operation","nbt_operation.op.append":"Append","nbt_operation.op.merge":"Merge","nbt_operation.op.replace":"Replace","nbt_operation.source":"Source","nbt_operation.target":"Target","nbt_provider.source":"Source","nbt_provider.target":"Target","nbt_provider.type":"Type","nbt_provider.type.context":"Context+","nbt_provider.type.storage":"Storage","nbt_provider.type.string":"Context","noise_parameters.amplitudes":"Amplitudes","noise_parameters.amplitudes.entry":"Octave %0%","noise_parameters.firstOctave":"First octave","noise_settings.aquifers_enabled":"Aquifers enabled","noise_settings.bedrock_floor_position":"Bedrock floor position","noise_settings.bedrock_floor_position.help":"Position of the bedrock floor. Higher numbers move the floor up.","noise_settings.bedrock_roof_position":"Bedrock roof position","noise_settings.bedrock_roof_position.help":"Relative position of the bedrock roof starting at the world height. Higher numbers move the roof down.","noise_settings.biome":"Biome","noise_settings.deepslate_enabled":"Deepslate enabled","noise_settings.default_block":"Default block","noise_settings.default_fluid":"Default fluid","noise_settings.disable_mob_generation":"Disable mob generation","noise_settings.disable_mob_generation.help":"If true, mobs will not spawn during generation.","noise_settings.legacy_random_source":"Legacy random source","noise_settings.min_surface_level":"Min surface level","noise_settings.name":"Name","noise_settings.noise":"Noise options","noise_settings.noise_caves_enabled":"Noise caves enabled","noise_settings.noise.amplified":"Amplified","noise_settings.noise.bottom_slide":"Bottom slide","noise_settings.noise.bottom_slide.help":"Adds or removes terrain at the bottom of the world. Does nothing when size is 0.","noise_settings.noise.bottom_slide.offset":"Offset","noise_settings.noise.bottom_slide.offset.help":"Defines an range of \'Offset * Size vertical * 4\' blocks at the bottom of the world where the density is set to the target.","noise_settings.noise.bottom_slide.size":"Size","noise_settings.noise.bottom_slide.size.help":"Defines a range of \'Size * Size vertical * 4\' blocks where the existing density and target are interpolated.","noise_settings.noise.bottom_slide.target":"Target","noise_settings.noise.bottom_slide.target.help":"The target density. Positive values add terrain and negative values remove terrain.","noise_settings.noise.density_factor":"Density factor","noise_settings.noise.density_factor.help":"Determines how much the height influences the terrain. Positive values produce land at the bottom. Values close to 0 produce uniform cave-like terrain.","noise_settings.noise.density_offset":"Density offset","noise_settings.noise.density_offset.help":"Affects the average terrain height. A value of 0 produces terrain land height at half the height. Positive values raise the height.","noise_settings.noise.height":"Height","noise_settings.noise.height.help":"The total height where blocks can generate. Max Y = Min Y + Height.","noise_settings.noise.island_noise_override":"Island noise override","noise_settings.noise.island_noise_override.help":"If true, terrain will be shaped like islands similar to the end.","noise_settings.noise.large_biomes":"Large biomes","noise_settings.noise.min_y":"Min Y","noise_settings.noise.min_y.help":"The minimum height where blocks start generating.","noise_settings.noise.random_density_offset":"Random density offset","noise_settings.noise.sampling":"Sampling","noise_settings.noise.sampling.xz_factor":"XZ factor","noise_settings.noise.sampling.xz_scale":"XZ scale","noise_settings.noise.sampling.y_factor":"Y factor","noise_settings.noise.sampling.y_scale":"Y scale","noise_settings.noise.simplex_surface_noise":"Simplex surface noise","noise_settings.noise.size_horizontal":"Size horizontal","noise_settings.noise.size_vertical":"Size vertical","noise_settings.noise.top_slide":"Top slide","noise_settings.noise.top_slide.help":"Adds or removes terrain at the top of the world. Does nothing when size is 0.","noise_settings.noise.top_slide.offset":"Offset","noise_settings.noise.top_slide.offset.help":"Defines an range of \'Offset * Size Vertical * 4\' blocks at the top of the world where the density is set to the target.","noise_settings.noise.top_slide.size":"Size","noise_settings.noise.top_slide.size.help":"Defines a range of \'Size * Size Vertical * 4\' blocks where the existing density and target are interpolated.","noise_settings.noise.top_slide.target":"Target","noise_settings.noise.top_slide.target.help":"The target density. Positive values add terrain and negative values remove terrain.","noise_settings.noise.terrain_shaper":"Terrain shaper","noise_settings.noodle_caves_enabled":"Noodle caves enabled","noise_settings.ore_veins_enabled":"Ore veins enabled","noise_settings.sea_level":"Sea level","noise_settings.structures":"Structures","noise_settings.structures.stronghold":"Stronghold","noise_settings.structures.stronghold.count":"Count","noise_settings.structures.stronghold.distance":"Distance","noise_settings.structures.stronghold.spread":"Spread","noise_settings.structures.structures":"Structures","noise_settings.surface_rule":"Surface rule","number_provider.max":"Max","number_provider.min":"Min","number_provider.n":"N","number_provider.p":"P","number_provider.scale":"Scale","number_provider.score":"Objective","number_provider.target":"Target","number_provider.type":"Type","number_provider.type.binomial":"Binomial","number_provider.type.constant":"Constant+","number_provider.type.number":"Constant","number_provider.type.object":"Uniform","number_provider.type.score":"Score","number_provider.type.uniform":"Uniform+","number_provider.value":"Number","placed_feature.feature":"Configured feature","placed_feature.placement":"Placement","placed_feature.placement.entry":"Modifier","player.advancements":"Advancements","player.advancements.entry":"Advancement","player.gamemode":"Game mode","player.level":"XP level","player.recipes":"Recipes","player.stats":"Statistics","player.stats.entry":"Statistic","pos_rule_test.always_true":"Always true","pos_rule_test.axis":"Axis","pos_rule_test.axis.x":"X","pos_rule_test.axis.y":"Y","pos_rule_test.axis.z":"Z","pos_rule_test.axis_aligned_linear_pos":"Axis aligned linear pos","pos_rule_test.linear_pos":"Linear pos","pos_rule_test.max_chance":"Max chance","pos_rule_test.max_dist":"Max dist","pos_rule_test.min_chance":"Min chance","pos_rule_test.min_dist":"Min dist","pos_rule_test.predicate_type":"Type","processor.block_age.mossiness":"Mossiness","processor.block_ignore.blocks":"Blocks","processor.block_ignore.blocks.entry":"State","processor.block_rot.integrity":"Integrity","processor.gravity.heightmap":"Heightmap","processor.gravity.offset":"Offset","processor.processor_type":"Type","processor.rule.rules":"Rules","processor.rule.rules.entry":"Rule","processor_list.processors":"Processors","processor_list.processors.entry":"Processor","processor_rule.input_predicate":"Input predicate","processor_rule.location_predicate":"Location predicate","processor_rule.output_nbt":"Output NBT","processor_rule.output_state":"Output state","processor_rule.position_predicate":"Position predicate","processors.object":"Inline","processors.string":"Reference","range.binomial":"Binomial","range.max":"Max","range.min":"Min","range.n":"N","range.number":"Exact","range.object":"Range","range.p":"P","range.type":"Type","range.uniform":"Uniform","recipe.type":"Type","recipe.group":"Group","recipe.group.help":"Identifier to group multiple recipes in the recipe book.","recipe.ingredients":"Ingredients","recipe.ingredient":"Ingredient","recipe.ingredient.item":"Item","recipe.ingredient.tag":"Item tag","recipe.pattern":"Pattern","recipe.pattern.entry":"Row","recipe.key":"Key","recipe.key.item":"Item","recipe.key.tag":"Item tag","recipe.result":"Result","recipe.result.item":"Item","recipe.result.count":"Count","recipe.experience":"Experience","recipe.cookingtime":"Cooking time","recipe.count":"Count","recipe.base":"Base","recipe.base.item":"Item","recipe.base.tag":"Item tag","recipe.addition":"Addition","recipe.addition.item":"Item","recipe.addition.tag":"Item tag","advancement.requirements":"Requirements","rule_test.always_true":"Always true","rule_test.block":"Block","rule_test.block_match":"Block match","rule_test.block_state":"State","rule_test.blockstate_match":"Block state match","rule_test.predicate_type":"Type","rule_test.probability":"Probability","rule_test.random_block_match":"Random block match","rule_test.random_blockstate_match":"Random block state match","rule_test.tag":"Tag","rule_test.tag_match":"Tag match","score_provider.name":"Name","score_provider.target":"Target","score_provider.type":"Type","score_provider.type.context":"Context+","score_provider.type.fixed":"Fixed","score_provider.type.string":"Context","slot.chest":"Chest","slot.feet":"Feet","slot.head":"Head","slot.legs":"Legs","slot.mainhand":"Mainhand","slot.offhand":"Offhand","statistic.stat":"Statistic","statistic.type":"Type","statistic.type.broken":"Broken","statistic.type.crafted":"Crafted","statistic.type.custom":"Custom","statistic.type.dropped":"Dropped","statistic.type.killed":"Killed","statistic.type.killedByTeam":"Killed by team","statistic.type.killed_by":"Killed by","statistic.type.mined":"Mined","statistic.type.picked_up":"Picked up","statistic.type.teamkill":"Killed team","statistic.type.used":"Used","statistic.value":"Value","status_effect.ambient":"Ambient","status_effect.amplifier":"Amplifier","status_effect.duration":"Duration","status_effect.visible":"Visible","structure_feature.biome_temp":"Biome temperature","structure_feature.biome_temp.cold":"Cold","structure_feature.biome_temp.warm":"Warm","structure_feature.cluster_probability":"Cluster probability","structure_feature.config":"Config","structure_feature.is_beached":"Is beached","structure_feature.large_probability":"Large probability","structure_feature.portal_type":"Portal type","structure_feature.portal_type.desert":"Desert","structure_feature.portal_type.jungle":"Jungle","structure_feature.portal_type.mountain":"Mountain","structure_feature.portal_type.nether":"Nether","structure_feature.portal_type.ocean":"Ocean","structure_feature.portal_type.standard":"Standard","structure_feature.portal_type.swamp":"Swamp","structure_feature.probability":"Probability","structure_feature.size":"Size","structure_feature.start_pool":"Start pool","structure_feature.type":"Type","structure_feature.type.mesa":"Mesa","structure_feature.type.normal":"Normal","surface_builder.config":"Config","surface_builder.top_material":"Top material","surface_builder.type":"Type","surface_builder.under_material":"Under material","surface_builder.underwater_material":"Underwater material","table.type":"Type","table.type.block":"Block","table.type.chest":"Chest","table.type.empty":"Empty","table.type.entity":"Entity","table.type.fishing":"Fishing","table.type.generic":"Generic","tag.replace":"Replace","tag.values":"Values","terrain_shaper.offset":"Offset","terrain_shaper.factor":"Factor","terrain_shaper.jaggedness":"Jaggedness","terrain_spline.number":"Constant","terrain_spline.object":"Spline","terrain_spline.coordinate":"Coordinate","terrain_spline.coordinate.continents":"Continents","terrain_spline.coordinate.erosion":"Erosion","terrain_spline.coordinate.weirdness":"Weirdness","terrain_spline.coordinate.ridges":"Ridges","terrain_spline.points":"Points","terrain_spline.points.entry":"Point","terrain_spline.points.entry.location":"Location","terrain_spline.points.entry.value":"Value","terrain_spline.points.entry.derivative":"Derivative","template_element.element_type":"Type","template_element.elements":"Elements","template_element.feature":"Placed feature","template_element.location":"Location","template_element.processors":"Processors","template_element.projection":"Projection","template_element.projection.rigid":"Rigid","template_element.projection.terrain_matching":"Terrain matching","template_pool.elements":"Elements","template_pool.elements.entry":"Element","template_pool.elements.entry.element":"Element","template_pool.elements.entry.weight":"Weight","template_pool.fallback":"Fallback","template_pool.name":"Name","text_component":"Text component","text_component.boolean":"Boolean","text_component.list":"Array","text_component.number":"Number","text_component.object":"Object","text_component.object.text":"Plain text","text_component.object.translation":"Translated text","text_component.object.score":"Score value","text_component.object.selector":"Entity name","text_component.object.keybind":"Keybind","text_component.object.nbt":"NBT value","text_component.string":"String","text_component_object.block":"Block","text_component_object.bold":"Bold","text_component_object.clickEvent":"Click event","text_component_object.clickEvent.action":"Action","text_component_object.clickEvent.action.change_page":"Change page","text_component_object.clickEvent.action.copy_to_clipboard":"Copy to clipboard","text_component_object.clickEvent.action.open_file":"Open file","text_component_object.clickEvent.action.open_url":"Open url","text_component_object.clickEvent.action.run_command":"Run command","text_component_object.clickEvent.action.suggest_command":"Suggest command","text_component_object.clickEvent.value":"Value","text_component_object.color":"Color","text_component_object.entity":"Entity","text_component_object.extra":"Extra","text_component_object.font":"Font","text_component_object.hoverEvent":"Hover event","text_component_object.hoverEvent.action":"Action","text_component_object.hoverEvent.action.show_entity":"Show entity","text_component_object.hoverEvent.action.show_item":"Show item","text_component_object.hoverEvent.action.show_text":"Show text","text_component_object.hoverEvent.contents":"Contents","text_component_object.hoverEvent.value":"Value","text_component_object.insertion":"Insertion","text_component_object.interpret":"Interpret","text_component_object.italic":"Italic","text_component_object.keybind":"Keybind","text_component_object.nbt":"NBT","text_component_object.obfuscated":"Obfuscated","text_component_object.score":"Score","text_component_object.score.name":"Name","text_component_object.score.objective":"Objective","text_component_object.score.value":"Value","text_component_object.selector":"Selector","text_component_object.storage":"Storage","text_component_object.strikethrough":"Strikethrough","text_component_object.text":"Text","text_component_object.translate":"Translate","text_component_object.underlined":"Underlined","text_component_object.with":"With","texture.alias":"Alias","texture.reference":"Reference","tree_decorator.alter_ground.provider":"State provider","tree_decorator.beehive.probability":"Probability","tree_decorator.cocoa.probability":"Probability","tree_decorator.type":"Type","true":"True","trunk_placer.base_height":"Base height","trunk_placer.height_rand_a":"Height random A","trunk_placer.height_rand_b":"Height random B","trunk_placer.bending_trunk_placer.bend_length":"Bend length","trunk_placer.bending_trunk_placer.min_height_for_leaves":"Min height for leaves","trunk_placer.type":"Type","uniform_int.base":"Base","uniform_int.number":"Constant","uniform_int.object":"Uniform","uniform_int.spread":"Spread","unset":"Unset","update.pack_format":"Update the pack_format to %0%","vertical_anchor.absolute":"Absolute","vertical_anchor.above_bottom":"Above bottom","vertical_anchor.below_top":"Below top","world.bonus_chest":"Spawn bonus chest","world.generate_features":"Generate features","world.seed":"Seed","world_settings.bonus_chest":"Spawn bonus chest","world_settings.dimensions":"Dimensions","world_settings.generate_features":"Generate features","world_settings.seed":"World seed","worldgen.warning":"This feature is highly experimental and unstable. It can change in future versions. Expect the game to crash when creating worlds.","worldgen/biome_source.checkerboard":"Checkerboard","worldgen/biome_source.checkerboard.help":"Biomes generate in a checkerboard chunk pattern.","worldgen/biome_source.fixed":"Fixed","worldgen/biome_source.fixed.help":"One biome for the whole world.","worldgen/biome_source.multi_noise":"Multi noise","worldgen/biome_source.multi_noise.help":"Custom biome distribution with configurable parameters.","worldgen/biome_source.the_end":"The end","worldgen/biome_source.the_end.help":"Biome distribution for the End.","worldgen/biome_source.vanilla_layered":"Vanilla layered","worldgen/biome_source.vanilla_layered.help":"Biome distribution for the Overworld.","worldgen/block_placer_type.column_placer":"Column","worldgen/block_placer_type.double_plant_placer":"Double plant","worldgen/block_placer_type.simple_block_placer":"Simple","worldgen/block_state_provider_type.dual_noise_provider":"Dual noise provider","worldgen/block_state_provider_type.forest_flower_provider":"Flower forest","worldgen/block_state_provider_type.noise_threshold_provider":"Noise threshold provider","worldgen/block_state_provider_type.noise_provider":"Noise provider","worldgen/block_state_provider_type.plain_flower_provider":"Plain flower","worldgen/block_state_provider_type.randomized_int_state_provider":"Randomized int","worldgen/block_state_provider_type.rotated_block_provider":"Rotated block","worldgen/block_state_provider_type.simple_state_provider":"Simple state","worldgen/block_state_provider_type.weighted_state_provider":"Weighted state","worldgen/carver.canyon":"Canyon","worldgen/carver.cave":"Cave","worldgen/carver.nether_cave":"Nether cave","worldgen/carver.underwater_canyon":"Underwater canyon","worldgen/carver.underwater_cave":"Underwater cave","worldgen/chunk_generator.debug":"Debug world","worldgen/chunk_generator.flat":"Superflat","worldgen/chunk_generator.noise":"Default","worldgen/decorator.carving_mask":"Carving mask","worldgen/decorator.cave_surface":"Cave surface","worldgen/decorator.chance":"Chance","worldgen/decorator.count":"Count","worldgen/decorator.count_extra":"Count extra","worldgen/decorator.count_multilayer":"Count multilayer","worldgen/decorator.count_noise":"Count noise","worldgen/decorator.count_noise_biased":"Count noise biased","worldgen/decorator.dark_oak_tree":"Dark oak tree","worldgen/decorator.decorated":"Decorated","worldgen/decorator.end_gateway":"End gateway","worldgen/decorator.heightmap":"Heightmap","worldgen/decorator.heightmap_spread_double":"Heightmap spread double","worldgen/decorator.iceberg":"Iceberg","worldgen/decorator.lava_lake":"Lava lake","worldgen/decorator.nope":"Nothing","worldgen/decorator.range":"Range","worldgen/decorator.spread_32_above":"Spread 32 above","worldgen/decorator.square":"Square","worldgen/decorator.water_depth_threshold":"Water depth threshold","worldgen/feature.bamboo":"Bamboo","worldgen/feature.basalt_columns":"Basalt columns","worldgen/feature.basalt_pillar":"Basalt pillar","worldgen/feature.block_column":"Block column","worldgen/feature.block_pile":"Block pile","worldgen/feature.blue_ice":"Blue ice","worldgen/feature.bonus_chest":"Bonus chest","worldgen/feature.chorus_plant":"Chorus plant","worldgen/feature.coral_claw":"Coral claw","worldgen/feature.coral_mushroom":"Coral mushroom","worldgen/feature.coral_tree":"Coral tree","worldgen/feature.decorated":"Decorated","worldgen/feature.delta_feature":"Delta feature","worldgen/feature.desert_well":"Desert well","worldgen/feature.disk":"Disk","worldgen/feature.dripstone_cluster":"Dripstone cluster","worldgen/feature.end_gateway":"End gateway","worldgen/feature.end_island":"End island","worldgen/feature.end_spike":"End spike","worldgen/feature.fill_layer":"Fill layer","worldgen/feature.flower":"Flower","worldgen/feature.forest_rock":"Forest rock","worldgen/feature.fossil":"Fossil","worldgen/feature.freeze_top_layer":"Freeze top layer","worldgen/feature.geode":"Geode","worldgen/feature.glow_lichen":"Glow lichen","worldgen/feature.glowstone_blob":"Glowstone blob","worldgen/feature.growing_plant":"Growing plant","worldgen/feature.huge_brown_mushroom":"Huge brown mushroom","worldgen/feature.huge_fungus":"Huge fungus","worldgen/feature.huge_red_mushroom":"Huge red mushroom","worldgen/feature.ice_patch":"Ice patch","worldgen/feature.ice_spike":"Ice spike","worldgen/feature.iceberg":"Iceberg","worldgen/feature.kelp":"Kelp","worldgen/feature.lake":"Lake","worldgen/feature.large_dripstone":"Large dripstone","worldgen/feature.monster_room":"Monster room","worldgen/feature.nether_forest_vegetation":"Nether forest vegetation","worldgen/feature.netherrack_replace_blobs":"Netherrack replace blobs","worldgen/feature.no_bonemeal_flower":"No bonemeal flower","worldgen/feature.no_op":"Nothing","worldgen/feature.ore":"Ore","worldgen/feature.pointed_dripstone":"Pointed dripstone","worldgen/feature.random_boolean_selector":"Random boolean selector","worldgen/feature.random_patch":"Random patch","worldgen/feature.random_selector":"Random selector","worldgen/feature.replace_single_block":"Replace single block","worldgen/feature.root_system":"Root system","worldgen/feature.scattered_ore":"Scattered ore","worldgen/feature.sea_pickle":"Sea pickle","worldgen/feature.seagrass":"Seagrass","worldgen/feature.simple_block":"Simple block","worldgen/feature.simple_random_selector":"Simple random selector","worldgen/feature.small_dripstone":"Small dripstone","worldgen/feature.spring_feature":"Spring feature","worldgen/feature.tree":"Tree","worldgen/feature.twisting_vines":"Twisting vines","worldgen/feature.underwater_magma":"Underwater magma","worldgen/feature.vegetation_patch":"Vegetation patch","worldgen/feature.vines":"Vines","worldgen/feature.void_start_platform":"Void start platform","worldgen/feature.waterlogged_vegetation_patch":"Waterlogged vegetation patch","worldgen/feature.weeping_vines":"Weeping vines","worldgen/feature_size_type.three_layers_feature_size":"Three layers","worldgen/feature_size_type.two_layers_feature_size":"Two layers","worldgen/foliage_placer_type.acacia_foliage_placer":"Acacia","worldgen/foliage_placer_type.blob_foliage_placer":"Blob","worldgen/foliage_placer_type.bush_foliage_placer":"Bush","worldgen/foliage_placer_type.dark_oak_foliage_placer":"Dark oak","worldgen/foliage_placer_type.fancy_foliage_placer":"Fancy","worldgen/foliage_placer_type.jungle_foliage_placer":"Jungle","worldgen/foliage_placer_type.mega_pine_foliage_placer":"Mega pine","worldgen/foliage_placer_type.pine_foliage_placer":"Pine","worldgen/foliage_placer_type.spruce_foliage_placer":"Spruce","worldgen/material_condition.above_preliminary_surface":"Above preliminary surface","worldgen/material_condition.biome":"Biome","worldgen/material_condition.hole":"Hole","worldgen/material_condition.noise_threshold":"Noise threshold","worldgen/material_condition.not":"Not","worldgen/material_condition.steep":"Steep","worldgen/material_condition.stone_depth":"Stone depth","worldgen/material_condition.temperature":"Temperature","worldgen/material_condition.vertical_gradient":"Vertical gradient","worldgen/material_condition.water":"Water","worldgen/material_condition.y_above":"Y above","worldgen/material_rule.bandlands":"Bandlands","worldgen/material_rule.block":"Block","worldgen/material_rule.condition":"Condition","worldgen/material_rule.sequence":"Sequence","worldgen/placement_modifier_type.biome":"Biome","worldgen/placement_modifier_type.block_predicate_filter":"Block predicate filter","worldgen/placement_modifier_type.carving_mask":"Carving mask","worldgen/placement_modifier_type.count":"Count","worldgen/placement_modifier_type.count_on_every_layer":"Count on every layer","worldgen/placement_modifier_type.environment_scan":"Environment scan","worldgen/placement_modifier_type.height_range":"Height range","worldgen/placement_modifier_type.heightmap":"Heightmap","worldgen/placement_modifier_type.in_square":"In square","worldgen/placement_modifier_type.noise_based_count":"Noise based count","worldgen/placement_modifier_type.noise_threshold_count":"Noise threshold count","worldgen/placement_modifier_type.random_offset":"Random offset","worldgen/placement_modifier_type.rarity_filter":"Rarity filter","worldgen/placement_modifier_type.surface_relative_threshold_filter":"Surface relative threshold filter","worldgen/placement_modifier_type.surface_water_depth_filter":"Surface water depth filter","worldgen/structure_pool_element.empty_pool_element":"Empty","worldgen/structure_pool_element.feature_pool_element":"Feature","worldgen/structure_pool_element.legacy_single_pool_element":"Legacy single","worldgen/structure_pool_element.list_pool_element":"List","worldgen/structure_pool_element.single_pool_element":"Single","worldgen/structure_processor.blackstone_replace":"Blackstone replace","worldgen/structure_processor.block_age":"Block age","worldgen/structure_processor.block_ignore":"Block ignore","worldgen/structure_processor.block_rot":"Block rot","worldgen/structure_processor.gravity":"Gravity","worldgen/structure_processor.jigsaw_replacement":"Jigsaw replacement","worldgen/structure_processor.lava_submerged_block":"Lava submerged block","worldgen/structure_processor.nop":"Nothing","worldgen/structure_processor.rule":"Rule","worldgen/tree_decorator_type.alter_ground":"Alter ground","worldgen/tree_decorator_type.beehive":"Beehive","worldgen/tree_decorator_type.cocoa":"Cocoa","worldgen/tree_decorator_type.leave_vine":"Leave vine","worldgen/tree_decorator_type.trunk_vine":"Trunk vine","worldgen/trunk_placer_type.bending_trunk_placer":"Bending","worldgen/trunk_placer_type.dark_oak_trunk_placer":"Dark oak","worldgen/trunk_placer_type.fancy_trunk_placer":"Fancy","worldgen/trunk_placer_type.forking_trunk_placer":"Forking","worldgen/trunk_placer_type.giant_trunk_placer":"Giant","worldgen/trunk_placer_type.mega_jungle_trunk_placer":"Mega jungle","worldgen/trunk_placer_type.straight_trunk_placer":"Straight"}');export default e; +//# sourceMappingURL=en.e6e6bb17.js.map diff --git a/assets/en.e6e6bb17.js.map b/assets/en.e6e6bb17.js.map new file mode 100644 index 00000000..0130f466 --- /dev/null +++ b/assets/en.e6e6bb17.js.map @@ -0,0 +1 @@ +{"version":3,"file":"en.e6e6bb17.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/index.4b6d67ca.js b/assets/index.4b6d67ca.js deleted file mode 100644 index 9ef37fb7..00000000 --- a/assets/index.4b6d67ca.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,s=(e,t)=>{for(var n in t||(t={}))a.call(t,n)&&i(e,n,t[n]);if(r)for(var n of r(t))o.call(t,n)&&i(e,n,t[n]);return e},l=(e,r)=>t(e,n(r));import{y as c,a as d,s as u,l as m,r as h,b as f,g as p,c as g,j as _,d as v,e as w,f as y,h as b,i as k,m as x,k as C,L as A,G as M,V as z,O as j,n as $,w as V,Z as E,o as I,z as O,T as L,E as P,C as D,p as S,A as T,q as N,t as B,u as H,v as R,x as F,B as W,D as J,F as U,N as G,R as Y}from"./vendor.e7812f3b.js";var q,Z=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","latest":"1.15.2","refs":{"mcdata_master":"13355f7","mcassets":"1.15.2"}},{"id":"1.16","latest":"1.16.5","refs":{"mcdata_master":"1.16.4","mcassets":"1.16.5","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","latest":"1.17.1","refs":{"mcdata_master":"1.17.1","mcassets":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","mcassets":"21w44a","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"recipe","url":"recipe","path":"recipes","schema":"recipe"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/placed_feature","url":"worldgen/placed-feature","category":"worldgen","schema":"placed_feature","minVersion":"1.18"},{"id":"worldgen/noise","url":"worldgen/noise","category":"worldgen","schema":"noise_parameters","minVersion":"1.18"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"},{"id":"block_definition","url":"assets/blockstate","path":"blockstates","category":"assets","schema":"block_definition","minVersion":"1.18"},{"id":"model","url":"assets/model","path":"models","category":"assets","schema":"model","minVersion":"1.18"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"block_definition","path":"blockstates","asset":true},{"id":"block_entity_type","minVersion":"1.18"},{"id":"block_predicate_type","minVersion":"1.18"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"model","path":"models","asset":true},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"recipe_serializer"},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"texture","path":"textures","asset":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/material_condition","minVersion":"1.18"},{"id":"worldgen/material_rule","minVersion":"1.18"},{"id":"worldgen/noise","minVersion":"1.18","dynamic":true},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/placed_feature","minVersion":"1.18","dynamic":true},{"id":"worldgen/placement_modifier_type","minVersion":"1.18"},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","maxVersion":"1.17","path":"processed/reports/biomes"},{"id":"worldgen/biome","minVersion":"1.18","path":"processed/reports/worldgen/minecraft/worldgen/biome"}]}');function K({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function X({icon:e,label:t,active:n,class:r,tooltip:a,tooltipLoc:o,onClick:i}){return d("div",{class:`btn${n?" active":""}${r?` ${r}`:""}${a?` tooltipped tip-${null!=o?o:"sw"}`:""}`,onClick:i,"aria-label":a},e&&ae[e],t&&d("span",null,t))}function Q({icon:e,label:t,large:n,doSelect:r,value:a,placeholder:o,onChange:i}){const s=void 0===i?()=>{}:e=>{const t=e.target.value;null==i||i(t)},l=u(null);return c((()=>{r&&l.current&&l.current.select()}),[r]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&ae[e],t&&d("span",null,t),d("input",{ref:l,type:"text",value:a,onChange:s,placeholder:o}))}function ee({size:e,draw:t,onDrag:n,onHover:r,onLeave:a},o){const i=u(null),s=u(),l=u(),d=u([0,0]),m=u(!1);c((()=>{const e=e=>{s.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===s.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==r||r(t,n))}if(!n)return;const t=e.offsetX-s.current[0],a=e.offsetY-s.current[1];0===t&&0===a||(d.current=[d.current[0]+t,d.current[1]+a],m.current||(cancelAnimationFrame(l.current),l.current=requestAnimationFrame((async()=>{m.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),m.current=!1})))),s.current=[e.offsetX,e.offsetY]},o=()=>{s.current=void 0},c=()=>{null==a||a()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",o),()=>{var n,r,a;null==(n=i.current)||n.removeEventListener("mousedown",e),null==(r=i.current)||r.removeEventListener("mousemove",t),null==(a=i.current)||a.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",o)}}),[...null!=o?o:[],i.current]);const h=u(),f=u(0);return h.current=async()=>{const n=i.current.getContext("2d"),r=e();i.current.width=r[0],i.current.height=r[1];const a=n.getImageData(0,0,r[0],r[1]),o=f.current+=1;await t(a),o===f.current&&n.putImageData(a,0,0)},{canvas:i,redraw:h.current}}function te(){const[e,t]=m(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function ne(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function re({icon:e,label:t,relative:n,tooltip:r,children:a}){const[o,i]=te();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(X,l(s({},{icon:e,label:t,tooltip:r}),{onClick:i})),o&&d("div",{class:"btn-group"},a))}!function(e){const t="Site",n="Generator";function r(e,t,n){ga("send","event",e,t,n)}function a(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){a(4,e),r(t,"set-language",e)},e.setTheme=function(e){a(1,e),r(t,"set-theme",e)},e.setVersion=function(e){a(3,e),r(n,"set-version",e)},e.setPreview=function(e){a(5,e),r(n,"set-preview",e)},e.setGenerator=function(e){a(6,e)},e.generatorEvent=function(e,t){r(n,e,t)}}(q||(q={}));const ae={alert:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"})),archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),duplicate:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M10.5 3a.75.75 0 01.75.75v1h1a.75.75 0 010 1.5h-1v1a.75.75 0 01-1.5 0v-1h-1a.75.75 0 010-1.5h1v-1A.75.75 0 0110.5 3z"}),d("path",{"fill-rule":"evenodd",d:"M6.75 0A1.75 1.75 0 005 1.75v7.5c0 .966.784 1.75 1.75 1.75h7.5A1.75 1.75 0 0016 9.25v-7.5A1.75 1.75 0 0014.25 0h-7.5zM6.5 1.75a.25.25 0 01.25-.25h7.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5z"}),d("path",{d:"M1.75 5A1.75 1.75 0 000 6.75v7.5C0 15.216.784 16 1.75 16h7.5A1.75 1.75 0 0011 14.25v-1.5a.75.75 0 00-1.5 0v1.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25h1.5a.75.75 0 000-1.5h-1.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),link_external:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),sort_asc:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 4.25a.75.75 0 01.75-.75h2.5a.75.75 0 010 1.5H.75A.75.75 0 010 4.25zm0 4a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5H.75A.75.75 0 010 8.25zm0 4a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5H.75a.75.75 0 01-.75-.75zm12.927-9.677a.25.25 0 00-.354 0l-3 3A.25.25 0 009.75 6H12v6.75a.75.75 0 001.5 0V6h2.25a.25.25 0 00.177-.427l-3-3z"})),sort_desc:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 4.25a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5H.75A.75.75 0 010 4.25zm0 4a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5H.75A.75.75 0 010 8.25zm0 4a.75.75 0 01.75-.75h2.5a.75.75 0 010 1.5H.75a.75.75 0 01-.75-.75z"}),d("path",{d:"M13.5 10h2.25a.25.25 0 01.177.427l-3 3a.25.25 0 01-.354 0l-3-3A.25.25 0 019.75 10H12V3.75a.75.75 0 011.5 0V10z"})),stack:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.122.392a1.75 1.75 0 011.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 01-1.756 0L2.119 5.456a1.25 1.25 0 010-2.162L7.122.392zM8.125 1.69a.25.25 0 00-.25 0l-4.63 2.685 4.63 2.685a.25.25 0 00.25 0l4.63-2.685-4.63-2.685zM1.601 7.789a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0L1.874 8.814A.75.75 0 011.6 7.789zm0 3.5a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0l-5.248-3.044a.75.75 0 01-.273-1.025z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),terminal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function oe({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},ae.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}function ie(e,t,n){const r=e=>{const r=e.onChange&&(t=>{var r;const a=t.target.value;null==(r=e.onChange)||r.call(e,n(a))}),a=e.onEnter&&(t=>{var r;if("Enter"===t.key){const a=t.target.value;null==(r=e.onEnter)||r.call(e,n(a))}});return d("input",s(s({},e),{type:t,onChange:r,onKeyDown:a}))};return r.displayName=e,r}const se=ie("TextInput","text",(e=>e)),le=ie("NumberInput","number",(e=>Number(e))),ce=ie("RangeInput","range",(e=>Number(e)));let de;const ue={},me=function(e,t){if(!t)return e();if(void 0===de){const e=document.createElement("link").relList;de=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in ue)return;ue[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const r=document.createElement("link");return r.rel=t?"stylesheet":de,t||(r.as="script",r.crossOrigin=""),r.href=e,document.head.appendChild(r),t?new Promise(((e,t)=>{r.addEventListener("load",e),r.addEventListener("error",t)})):void 0}))).then((()=>e()))};var he=JSON.parse('{"add":"Add","add_bottom":"Add to bottom","add_top":"Add to top","advancement":"Advancement","assets":"Assets","block_definition":"Blockstate","changelog.search":"Search changes","collapse":"Collapse","collapse_all":"Hold %0% to collapse all","configure_layers":"Configure layers","copy":"Copy","copied":"Copied!","copy_context":"Copy context","dimension_type":"Dimension Type","dimension":"Dimension","disabled":"Disabled","download":"Download","duplicate":"Duplicate","enabled":"Enabled","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","expand":"Expand","expand_all":"Hold %0% to expand all","feature.decorated.decorators":"Decorators","feature.decorated.decorators.entry":"Decorator","follow_reference":"Follow reference","format.json":"JSON","format.yaml":"YAML","fields":"Fields","generate_new_seed":"Generate new seed","github":"GitHub","hide_output":"Hide output","hide_preview":"Hide preview","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.minified":"Minified","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","layer.biomes":"Biomes","layer.temperature":"Temperature","layer.humidity":"Humidity","layer.continentalness":"Continentalness","layer.erosion":"Erosion","layer.weirdness":"Weirdness","layer.offset":"Offset","layer.factor":"Factor","layer.jaggedness":"Jaggedness","loot_table":"Loot Table","model":"Model","more":"More","move_down":"Move down","move_up":"Move up","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","output_settings":"Output settings","predicate":"Predicate","recipe":"Recipe","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme":"Theme","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.changelog":"Technical Changelog","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","title.sounds":"Sound Explorer","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","remove":"Remove","search":"Search","show_output":"Show output","show_preview":"Show preview","sounds.play":"Play","sounds.play_sound":"Play sound","sounds.play_all":"Play all","sounds.search":"Search sounds","sounds.download_function":"Download Mcfunction","sounds.delay":"Delay","sounds.pitch":"Pitch","sounds.volume":"Volume","sounds.copy_command":"Copy command","sounds.add_sound":"Add sound","sounds.remove_sound":"Remove sound","sounds.unknown_sound":"Unknown sound","sounds.loading_sound":"Loading sound","source_placeholder":"Paste raw content here","switch_generator":"Switch generator","terrain_settings":"Terrain settings","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/placed_feature":"Placed Feature","worldgen/noise":"Noise","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool","zoom_in":"Zoom in","zoom_out":"Zoom out"}'),fe=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:he});const pe={fallback:he};function ge(e,t,...n){var r,a,o,i,s;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(s=null!=(i=null!=(o=null==(r=pe[e])?void 0:r[t])?o:null==(a=pe.en)?void 0:a[t])?i:pe.fallback[t])?s:t,n)}async function _e(e){const t=Z.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/cs.json":return me((()=>import("./cs.651d27b2.js")),void 0);case"../locales/de.json":return me((()=>import("./de.1d005dc8.js")),void 0);case"../locales/en.json":return me((()=>Promise.resolve().then((function(){return fe}))),void 0);case"../locales/es.json":return me((()=>import("./es.d3abba45.js")),void 0);case"../locales/fr.json":return me((()=>import("./fr.f5531eea.js")),void 0);case"../locales/it.json":return me((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return me((()=>import("./ja.2d7ab812.js")),void 0);case"../locales/pl.json":return me((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return me((()=>import("./pt.1a04bd2d.js")),void 0);case"../locales/ru.json":return me((()=>import("./ru.3104e71e.js")),void 0);case"../locales/sk.json":return me((()=>import("./sk.96bbf351.js")),void 0);case"../locales/zh-cn.json":return me((()=>import("./zh-cn.b233fc7e.js")),void 0);case"../locales/zh-tw.json":return me((()=>import("./zh-tw.298bd51e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),r=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/de.json":return me((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return me((()=>import("./en.a5ec0fd2.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return me((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return me((()=>import("./fr.e316b1e2.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return me((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return me((()=>import("./ja.49e40b08.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return me((()=>import("./pl.ae1f6791.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return me((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return me((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return me((()=>import("./zh-cn.4129665a.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return me((()=>import("./zh-tw.292626d0.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);pe[e]=s(s({},n.default),r.default)}function ve(e){return"object"==typeof e&&null!==e}const we=e=>("0"+e.toString(16)).substr(-2);function ye(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,we).join("")}function be(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function ke(e){const t=Math.floor(4294967296*Math.random())-2147483648,n=e.get(new f.Path(["dimensions"]));e.set(new f.Path(["seed"]),t,!0),"object"==typeof n&&null!==n&&Object.keys(n).forEach((n=>{e.set(new f.Path(["dimensions",n,"generator","seed"]),t,!0),e.set(new f.Path(["dimensions",n,"generator","biome_source","seed"]),t,!0)})),e.set(new f.Path(["generator","seed"]),t,!0),e.set(new f.Path(["generator","biome_source","seed"]),t)}function xe(e){let t=0;for(let n=0;n=0&&(e=e.slice(0,t)),Ce(e)}function Me(e){const t=Ae(e).replace(/^\//,"").replace(/\/$/,"");return Z.generators.find((e=>e.url===t))}function ze(e){const t=e.indexOf("?");return t>=0?(e=e.slice(t+1),new Map(e.split("&").map((e=>{const t=e.indexOf("=");return-1===t?[e,"true"]:[decodeURIComponent(e.slice(0,t)),decodeURIComponent(e.slice(t+1))]})))):new Map}function je(e,t){const n=p(),r=ze(n);Object.entries(e).forEach((([e,t])=>{void 0===t?r.delete(e):r.set(e,t)}));const a=Array.from(r).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`));g(`${t?Ce(t):Ae(n)}${0===a.length?"":`?${a.join("&")}`}`,!0)}function $e(e){const t=Math.abs(xe(e));return[t%256,(t>>8)%256,(t>>16)%256]}function Ve(e){return e*e}function Ee(e,t,n){return Math.max(e,Math.min(t,n))}function Ie(e,t,n){return n<0?e:n>1?t:Oe(n,e,t)}function Oe(e,t,n){return t+e*(n-t)}function Le(e){return e instanceof Error?e.message:`${e}`}const Pe=h();function De(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,r;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=0;rasync function(e,t){const n=await(await fetch(`${Te}/${e.id}/index.json`)).json();return(await Promise.all(n.map(((n,r)=>async function(e,t,n,r){return function(e){return e.split("\n\n").map((e=>{const t=e.indexOf("|");return{tags:e.substring(0,t).trim().split(" "),content:e.slice(t+1).trim().replaceAll("->","→").replaceAll("\n...\n","\n\n")}}))}(await(await fetch(`${Te}/${e.id}/${t.id}.md`)).text()).map((a=>s({version:t,group:e,order:1e3*n+r},a)))}(e,He(n),t,r))))).flat()}(He(e),t))))).flat().map((e=>l(s({},e),{tags:[e.group.id,...e.tags]})))}return Ne}function He(e){return"string"==typeof e?{id:e,article:e.match(/\d\dw\d\d[a-z]/)?"minecraft-snapshot-"+e:e.match(/\d+\.\d+(\.\d+)?-pre[0-9]+/)?"minecraft-"+e.replaceAll(".","-").replaceAll("pre","pre-release-"):null}:ve(e)?e:{id:"unknown",article:null}}const Re=["1.15","1.16","1.17","1.18"],Fe={},We={},Je={1.15:_,1.16:v,1.17:w,1.18:y};let Ue,Ge;async function Ye(e){return Fe[e]||(Fe[e]=(async()=>{try{const t=Je[e].getCollections(),n={};await async function(e,t,n){const r=Z.versions.find((t=>t.id===e));if(!r)return void console.error(`[fetchData] Unknown version ${r} in ${JSON.stringify(Z.versions)}`);console.debug(`[fetchData] ${JSON.stringify(r)}`),r.dynamic&&await Promise.all(Qe.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${r.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const r of await t.keys())e(r.url)&&n.push(t.delete(r));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${Le(t)}`)}}((t=>t.startsWith(`${e.url}/${r.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)})));await Promise.all([et(r,t),tt(r,n),nt(r,t),rt(r,t)])}(e,t,n);const r=Je[e].getSchemas(t);return Fe[e]={collections:t,schemas:r,blockStates:n},Fe[e]}catch(t){throw new Error(`Cannot get version "${e}": ${Le(t)}`)}})()),Fe[e]}function qe(e,t,n){const r=Z.versions.findIndex((t=>t.id===e)),a=t?Z.versions.findIndex((e=>e.id===t)):0,o=n?Z.versions.findIndex((e=>e.id===n)):Z.versions.length-1;return a<=r&&r<=o}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const Ze="https://raw.githubusercontent.com/Arcensoth/mcdata",Ke="https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets",Xe="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",Qe=[{id:"mcdata_master",hash:"046df35a9e111156742c285d345b3323f8557983",url:Ze},{id:"vanilla_datapack_summary",hash:"d2b06eedd26642f6d93c369b263aca491ec40459",url:Xe}];async function et(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=Z.registries.filter((e=>!e.dynamic&&!e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));if(qe(e.id,void 0,"1.15")){const a=`${Ze}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await it(a,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var r;t.register(n.id,null!=(r=e[n.id])?r:[])}))}catch(r){console.warn("Error occurred while fetching registries:",Le(r))}}else await Promise.all(n.map((async n=>{try{const r=n.path?`${Ze}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${Ze}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await it(r,(e=>e.values)))}catch(r){console.warn(`Error occurred while fetching registry ${n.id}:`,Le(r))}})))}async function tt(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),qe(e.id,void 0,"1.16")){const r=qe(e.id,void 0,"1.15")?`${Ze}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${Ze}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await it(r,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Le(n))}}else{const r=`${Ze}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await it(r);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Le(n))}}}async function nt(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=Z.registries.filter((e=>e.dynamic&&!e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));if(qe(e.id,"1.16")){const a=`${Xe}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await it(a);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(r){console.warn("Error occurred while fetching dynamic registries:",Le(r))}}qe(e.id,"1.18")&&(t.register("worldgen/noise",st),t.register("worldgen/placed_feature",lt))}async function rt(e,t){console.debug(`[fetchAssetsRegistries] ${e.id}`);const n=Z.registries.filter((e=>e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));await Promise.all(n.map((async n=>{var r;try{const a=async t=>{const n=`${Ke}/${e.refs.mcassets}/assets/minecraft/${t}/_list.json`,r=await it(n);if(0===r.directories.length)return r.files;const o=await Promise.all(r.directories.map((async e=>(await a(`${t}/${e}`)).map((t=>`${e}/${t}`)))));return[...r.files,...o.flat()]},o=(await a(null!=(r=n.path)?r:n.id)).filter((e=>e.endsWith(".json")||e.endsWith(".png"))).map((e=>`minecraft:${e.replace(/\.(json|png)$/,"")}`));t.register(n.id,o)}catch(a){console.warn(`Error occurred while fetching assets registry ${n.id}:`,Le(a))}})))}async function at(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const r=Z.versions.find((t=>t.id===e));try{const a=["blockstates","models"].includes(t)?`${Ke}/${r.refs.mcassets}/assets/minecraft/${t}/${n}.json`:`${Xe}/${r.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,o=await fetch(a);if("worldgen/noise_settings"===t&&"1.18"===e){let e=await o.text();e=e.replaceAll('"max_threshold": Infinity','"max_threshold": 100');const t=JSON.parse(e);return"overworld"!==n&&"large_biomes"!==n&&(t.noise.terrain_shaper={offset:0,factor:0,jaggedness:0}),t}return await o.json()}catch(a){throw new Error(`Error occurred while fetching ${t} preset ${n}: ${Le(a)}`)}}function ot(e){return`https://misode-cors-anywhere.herokuapp.com/https://resources.download.minecraft.net/${e.slice(0,2)}/${e}`}async function it(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const r=await n.match(e);if(r&&r.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await r.json();console.debug(`[getData] fetching data ${e}`);const a=await fetch(e),o=t(await a.json());return await n.put(e,new Response(JSON.stringify(o))),o}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${Le(n)}`),console.debug(`[getData] fetching data ${e}`);const r=await fetch(e);return t(await r.json())}}const st=["minecraft:aquifer_barrier","minecraft:aquifer_fluid_level_floodedness","minecraft:aquifer_fluid_level_spread","minecraft:aquifer_lava","minecraft:badlands_pillar","minecraft:badlands_pillar_roof","minecraft:badlands_surface","minecraft:calcite","minecraft:cave_cheese","minecraft:cave_entrance","minecraft:cave_layer","minecraft:clay_bands_offset","minecraft:continentalness","minecraft:continentalness_large","minecraft:erosion","minecraft:erosion_large","minecraft:gravel","minecraft:gravel_layer","minecraft:ice","minecraft:iceberg_pillar","minecraft:iceberg_pillar_roof","minecraft:iceberg_surface","minecraft:jagged","minecraft:nether_state_selector","minecraft:nether_wart","minecraft:netherrack","minecraft:noodle","minecraft:noodle_ridge_a","minecraft:noodle_ridge_b","minecraft:noodle_thickness","minecraft:offset","minecraft:ore_gap","minecraft:ore_vein_a","minecraft:ore_vein_b","minecraft:ore_veininess","minecraft:packed_ice","minecraft:patch","minecraft:pillar","minecraft:pillar_rareness","minecraft:pillar_thickness","minecraft:powder_snow","minecraft:ridge","minecraft:soul_sand_layer","minecraft:spaghetti_2d","minecraft:spaghetti_2d_elevation","minecraft:spaghetti_2d_modulator","minecraft:spaghetti_2d_thickness","minecraft:spaghetti_3d_1","minecraft:spaghetti_3d_2","minecraft:spaghetti_3d_rarity","minecraft:spaghetti_3d_thickness","minecraft:spaghetti_roughness","minecraft:spaghetti_roughness_modulator","minecraft:surface","minecraft:surface_secondary","minecraft:surface_swamp","minecraft:temperature","minecraft:temperature_large","minecraft:vegetation","minecraft:vegetation_large"],lt=["minecraft:acacia_checked","minecraft:amethyst_geode","minecraft:bamboo","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_checked","minecraft:birch_tall","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_old_growth","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:cave_vines","minecraft:chorus_plant","minecraft:classic_vines_cave_feature","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi","minecraft:dark_forest_vegetation","minecraft:dark_oak_checked","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:dripstone_cluster","minecraft:end_gateway_return","minecraft:end_island_decorated","minecraft:end_spike","minecraft:fancy_oak_bees","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_checked","minecraft:flower_default","minecraft:flower_flower_forest","minecraft:flower_forest_flowers","minecraft:flower_meadow","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flowers","minecraft:forest_rock","minecraft:fossil_lower","minecraft:fossil_upper","minecraft:freeze_top_layer","minecraft:glow_lichen","minecraft:glowstone","minecraft:glowstone_extra","minecraft:grass_bonemeal","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava_surface","minecraft:lake_lava_underground","minecraft:large_basalt_columns","minecraft:large_dripstone","minecraft:lush_caves_ceiling_vegetation","minecraft:lush_caves_clay","minecraft:lush_caves_vegetation","minecraft:mega_jungle_tree_checked","minecraft:mega_pine_checked","minecraft:mega_spruce_checked","minecraft:monster_room","minecraft:monster_room_deep","minecraft:mushroom_island_vegetation","minecraft:nether_sprouts","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_checked","minecraft:ore_ancient_debris_large","minecraft:ore_andesite_lower","minecraft:ore_andesite_upper","minecraft:ore_blackstone","minecraft:ore_clay","minecraft:ore_coal_lower","minecraft:ore_coal_upper","minecraft:ore_copper","minecraft:ore_copper_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diamond_buried","minecraft:ore_diamond_large","minecraft:ore_diorite_lower","minecraft:ore_diorite_upper","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_lower","minecraft:ore_gold_nether","minecraft:ore_granite_lower","minecraft:ore_granite_upper","minecraft:ore_gravel","minecraft:ore_gravel_nether","minecraft:ore_infested","minecraft:ore_iron_middle","minecraft:ore_iron_small","minecraft:ore_iron_upper","minecraft:ore_lapis","minecraft:ore_lapis_buried","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_redstone_lower","minecraft:ore_soul_sand","minecraft:ore_tuff","minecraft:patch_berry_common","minecraft:patch_berry_rare","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_crimson_roots","minecraft:patch_dead_bush","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga","minecraft:patch_grass_taiga_2","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_soul_fire","minecraft:patch_sugar_cane","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sunflower","minecraft:patch_tall_grass","minecraft:patch_tall_grass_2","minecraft:patch_waterlily","minecraft:pine_checked","minecraft:pine_on_snow","minecraft:pointed_dripstone","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_old_growth","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:rooted_azalea_tree","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spore_blossom","minecraft:spring_closed","minecraft:spring_closed_double","minecraft:spring_delta","minecraft:spring_lava","minecraft:spring_lava_frozen","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_checked","minecraft:spruce_on_snow","minecraft:super_birch_bees","minecraft:super_birch_bees_0002","minecraft:trees_badlands","minecraft:trees_birch","minecraft:trees_birch_and_oak","minecraft:trees_flower_forest","minecraft:trees_grove","minecraft:trees_jungle","minecraft:trees_meadow","minecraft:trees_old_growth_pine_taiga","minecraft:trees_old_growth_spruce_taiga","minecraft:trees_plains","minecraft:trees_savanna","minecraft:trees_snowy","minecraft:trees_sparse_jungle","minecraft:trees_swamp","minecraft:trees_taiga","minecraft:trees_water","minecraft:trees_windswept_forest","minecraft:trees_windswept_hills","minecraft:trees_windswept_savanna","minecraft:twisting_vines","minecraft:underwater_magma","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi","minecraft:weeping_vines"];let ct=null;const dt={},ut={};async function mt(){return ct||(ct=async function(){try{const e=await fetch("https://launchermeta.mojang.com/mc/game/version_manifest.json");return await e.json()}catch(e){throw new Error(`Error occurred while fetching version manifest: ${Le(e)}`)}}()),ct}async function ht(e){return dt[e]||(dt[e]=(async()=>{const t=await mt();return await async function(e,t){var n;const r=Z.versions.find((t=>t.id===e)),a=null!=(n=null==r?void 0:r.latest)?n:t.latest.snapshot;try{const e=await it(t.versions.find((e=>e.id===a)).url);return(await it(e.assetIndex.url)).objects}catch(o){throw new Error(`Error occurred while fetching assets for ${r}: ${Le(o)}`)}}(e,t)})()),dt[e]}async function ft(e){return ut[e]||(ut[e]=(async()=>{const t=await ht(e);return await async function(e,t){try{const e=t["minecraft/sounds.json"].hash;return await it(ot(e))}catch(n){throw new Error(`Error occurred while fetching sounds for ${e}: ${Le(n)}`)}}(e,t)})()),ut[e]}let pt=!1;const gt={temperature:[-1,1],humidity:[-1,1],continentalness:[-1.1,1],erosion:[-1,1],weirdness:[-1,1],offset:[-1,1],factor:[0,12],jaggedness:[0,1]};let _t,vt;async function wt(e,t){const n=[e,t.octaves,t.shaper.toJson(),`${t.seed}`,t.version];return De(n,_t)||(_t=Pe(n),vt=await async function(e,t){var n,r,a,o,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new j(e.biome);case"checkerboard":const n=(null!=(r=e.scale)?r:2)+2,l=null!=(o=null==(a=e.biomes)?void 0:a.length)?o:0;return{getBiome(t,r,a){var o;const i=(((t>>n)+(a>>n))%l+l)%l;return null==(o=e.biomes)?void 0:o[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?xt:kt;break;case"overworld":e="1.18"===t.version?await async function(){return(await at("1.18","dimension","overworld")).generator.biome_source}():e}if(e=f.DataModel.unwrapLists(e),"1.18"===t.version){await async function(){pt||(await $(V),pt=!0,console.debug(`Loaded deepslate-rs from "${V}"`))}();const n=new Se,r=e=>"number"==typeof e?[e,e]:e,[a,o,i,l,c,d,u,m,h,f,p,g,_,v]=[[],[],[],[],[],[],[],[],[],[],[],[],[],[]];for(const t of e.biomes){const{temperature:e,humidity:s,continentalness:w,erosion:y,weirdness:b,depth:k,offset:x}=t.parameters;a.push(r(e)[0]),o.push(r(e)[1]),i.push(r(s)[0]),l.push(r(s)[1]),c.push(r(w)[0]),d.push(r(w)[1]),u.push(r(y)[0]),m.push(r(y)[1]),h.push(r(b)[0]),f.push(r(b)[1]),p.push(r(k)[0]),g.push(r(k)[1]),_.push(x),v.push(n.getOrPut(t.biome,Math.floor(2147483647*Math.random())))}const w=b(new Float64Array(a),new Float64Array(o),new Float64Array(i),new Float64Array(l),new Float64Array(c),new Float64Array(d),new Float64Array(u),new Float64Array(m),new Float64Array(h),new Float64Array(f),new Float64Array(p),new Float64Array(g),new Float64Array(_),new Int32Array(v)),y=k(t.seed,t.octaves.temperature.firstOctave,new Float64Array(t.octaves.temperature.amplitudes),t.octaves.humidity.firstOctave,new Float64Array(t.octaves.humidity.amplitudes),t.octaves.continentalness.firstOctave,new Float64Array(t.octaves.continentalness.amplitudes),t.octaves.erosion.firstOctave,new Float64Array(t.octaves.erosion.amplitudes),t.octaves.weirdness.firstOctave,new Float64Array(t.octaves.weirdness.amplitudes),t.octaves.shift.firstOctave,new Float64Array(t.octaves.shift.amplitudes));return{getBiome(e,t,r){var a;const o=x(w,y,e,e+1,1,t,t+1,1,r,r+1,1);return null!=(a=n.getA(o[0]))?a:"unknown"},getBiomes:(e,t,r,a,o,i,s,l,c)=>[...x(w,y,e,t,r,a,o,i,s,l,c)].map((e=>{var t;return null!=(t=n.getA(e))?t:"unknown"})),getClimate(e,n,r,a,o,i,l,c,d,u){const m=C(y,n,r,a,o,i,l,c,d,u),h=[];for(let f=0;f{var a;const o=e[`${n}_noise`];return o.firstOctave=Ee(null!=(a=o.firstOctave)?a:-7,-100,-1),new M(new z(t.seed+BigInt(r)),o)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,r,a){const o=n.map((e=>e.sample(t,a,0)));let i=1/0,s="";for(const{biome:n,parameters:l}of e.biomes){const e=Ve(l.altitude-o[0])+Ve(l.temperature-o[1])+Ve(l.humidity-o[2])+Ve(l.weirdness-o[3])+Ve(l.offset);er.nextFloat(),nextInt:e=>r.nextInt(e),sampleInt(e){return $t(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],r=s{It(t,null==e?void 0:e.decorator,n).forEach((t=>Et(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{Et(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var r,a;for(const o of null!=(r=null==e?void 0:e.features)?r:[])if(n.nextFloat()<(null!=(a=null==o?void 0:o.chance)?a:0))return void Et(t,o.feature,n);Et(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var r,a,o;Et(t,null==(o=null==e?void 0:e.features)?void 0:o[n.nextInt(null!=(a=null==(r=null==e?void 0:e.features)?void 0:r.length)?a:0)],n)}},Lt={chance:(e,t,n)=>{var r;return n.nextFloat()<1/(null!=(r=null==e?void 0:e.chance)?r:1)?[t]:[]},count:(e,t,n)=>{var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t)},count_extra:(e,t,n)=>{var r,a;let o=null!=(r=null==e?void 0:e.count)?r:1;return n.nextFloat(){var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const r=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var r;const a=Math.max(1,e.noise_factor),o=n.biomeInfoNoise.sample(t[0]/a,0,t[2]/a),i=Math.max(0,Math.ceil((o+(null!=(r=e.noise_offset)?r:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,r)=>{const a=4*Math.floor(r/4)+1+n.nextInt(3)+t[0];return[a,Math.max(n.seaLevel,Ct[Ee(0,63,a)]),4*Math.floor(r%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>It(t,null==e?void 0:e.outer,n).flatMap((t=>It(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var r,a,o,i;return jt(t,n.nextInt(null!=(r=null==e?void 0:e.spread)?r:0)+n.nextInt(null!=(a=null==e?void 0:e.spread)?a:0)-(null!=(o=e.spread)?o:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const r=3+n.nextInt(6);return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const r=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const r=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>jt(t,Math.max(n.seaLevel,Ct[Ee(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const r=Math.max(n.seaLevel,Ct[Ee(0,63,t[0])]);return jt(t,n.nextInt(2*r))},heightmap_world_surface:(e,t,n)=>jt(t,Math.max(n.seaLevel,Ct[Ee(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var r,a;if(0===n.nextInt((null!=(r=e.chance)?r:1)/10)){const r=n.nextInt(n.nextInt(248)+8);if(r[t],range:(e,t,n)=>{var r,a,o;return jt(t,n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0))},range_biased:(e,t,n)=>{var r,a,o;return jt(t,n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0)))},range_very_biased:(e,t,n)=>{var r,a,o,i;return jt(t,n.nextInt(n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>jt(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>jt(t,Ct[Ee(0,63,t[0])]),magma:(e,t,n)=>jt(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,r;const a=Ct[Ee(0,63,t[0])],o=a+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=a+(null!=(r=null==e?void 0:e.max_inclusive)?r:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var r;return 0===n.nextInt(null!=(r=e.chance)?r:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class Pt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new z(e);this.minLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new E(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,r,a){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(a).fill(null),this.xOffset=r}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),r=Math.floor(e%this.chunkWidth)/this.chunkWidth,a=this.fillNoiseColumn(n),o=this.fillNoiseColumn(n+1);for(let m=this.chunkCountY-1;m>=0;m-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[m*this.chunkHeight+e]=(i=n,s=r,l=a[m],c=a[m+1],d=o[m],u=o[m+1],Oe(s,Oe(i,l,c),Oe(i,d,u)))}var i,s,l,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),r=684.412*this.settings.sampling.xz_scale,a=684.412*this.settings.sampling.y_scale,o=r/this.settings.sampling.xz_factor,i=a/this.settings.sampling.y_factor,s=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let l=0;l<=this.chunkCountY;l+=1){let t=this.sampleAndClampNoise(e,l,this.mainPerlinNoise.getOctaveNoise(0).zo,r,a,o,i);const c=((1-2*l/this.chunkCountY+s)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=Ie(this.settings.top_slide.target,t,(this.chunkCountY-l-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=Ie(this.settings.bottom_slide.target,t,(l-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[l]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,r,a,o,i){let s=0,l=0,c=0,d=1;for(let u=0;u<16;u+=1){const m=E.wrap(e*r*d),h=E.wrap(t*a*d),f=E.wrap(n*r*d),p=a*d,g=this.minLimitPerlinNoise.getOctaveNoise(u);g&&(s+=g.sample(m,h,f,p,t*p)/d);const _=this.maxLimitPerlinNoise.getOctaveNoise(u);if(_&&(l+=_.sample(m,h,f,p,t*p)/d),u<8){const r=this.mainPerlinNoise.getOctaveNoise(u);r&&(c+=r.sample(E.wrap(e*o*d),E.wrap(t*i*d),E.wrap(n*o*d),i*d,t*i*d)/d)}d/=2}return Ie(s/512,l/512,(c/10+1)/2)}}const Dt={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let St,Tt,Nt=[];function Bt(e,t,n){var r,a,o;if(qe(n.version,"1.18")){const{settings:a,generator:o}=function(e,t){const n=I.fromJson(f.DataModel.unwrapLists(e));n.octaves=Ut(n);const r=[e,`${t.seed}`];if(!De(r,St)){St=Pe(r),Nt=[];const e=new j("unknown");Tt=new O(t.seed,e,n)}return{settings:n,generator:Tt}}(e,n),i=new Rt(-n.offset,n.width,a.noise.minY,a.noise.height);i.fill(o);const s=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class Rt{constructor(e,t,n,r){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,a)=>{const o=(e>>4)+a,i=Nt.find((e=>e.pos[0]===o));return i?(this.filled[a]=!0,i):new L(n,r,P.create(o,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,Nt.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const Ft=["biomes","temperature","humidity","continentalness","erosion","weirdness","offset","factor","jaggedness"],Wt=A.overworld(),Jt=({model:e,data:t,shown:n,lang:r,version:a})=>{var o;const[i,s]=m(2),[l,h]=m(void 0),[p,g]=m(new Set(["biomes"])),_=u([0,0]),v=u(1),w=u(void 0),y=BigInt(e.get(new f.Path(["generator","seed"]))),b=Ut(e.get(new f.Path(["generator","settings"]))),k=function(e){var t;if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return Wt;default:return A.fromJson({offset:0,factor:0,jaggedness:0})}return A.fromJson(f.DataModel.unwrapLists(null==(t=null==e?void 0:e.noise)?void 0:t.terrain_shaper))}(e.get(new f.Path(["generator","settings"]))),x=n?function(e,t,n){return JSON.stringify([e,t,n.toJson()])}(t,b,k):"",C=null==(o=t.type)?void 0:o.replace(/^minecraft:/,""),{canvas:M,redraw:z}=ee({size:()=>[200/v.current,200/v.current],async draw(e){const n={octaves:b,shaper:k,biomeColors:{},layers:p,offset:_.current,scale:i,seed:y,res:v.current,version:a};await async function(e,t,n){var r,a,o;const{biomeSource:i}=await wt(e,n),s=t.data,l=-Math.round(n.offset[0])-100+n.res/2,c=-Math.round(n.offset[1])-100+n.res/2,d=4*t.width/n.res,u=4/n.res,m=[l*n.scale,(200+l)*n.scale,n.res*n.scale],h=[c*n.scale,(200+c)*n.scale,n.res*n.scale],f=n.layers.has("biomes")?null==(r=i.getBiomes)?void 0:r.call(i,...m,64,65,1,...h):void 0,p=[...n.layers].filter((e=>"biomes"!==e)),g=0===p.length||null==(a=i.getClimate)?void 0:a.call(i,new Set(p),...m,64,65,1,...h);for(let _=0;_<200;_+=n.res)for(let e=0;e<200;e+=n.res){const t=e*d+_*u,r=_/n.res*200/n.res+e/n.res,a=(_+l)*n.scale,m=(e+c)*n.scale;let h=[50,50,50];if(n.layers.has("biomes"))h=yt(null!=(o=null==f?void 0:f[r])?o:i.getBiome(a,64,m),n.biomeColors);else if(g&&p[0]){const e=g[r][p[0]],[t,n]=gt[p[0]],a=(e-t)/(n-t)*256;h=[a,a,a]}s[t]=h[0],s[t+1]=h[1],s[t+2]=h[2],s[t+3]=255}}(t,e,n),4===v.current&&(clearTimeout(w.current),w.current=setTimeout((()=>{v.current=1,z()}),150))},async onDrag(e,t){_.current[0]=_.current[0]+200*e,_.current[1]=_.current[1]+200*t,clearTimeout(w.current),v.current="multi_noise"===C?4:1,z()},async onHover(e,n){const r={octaves:b,shaper:k,biomeColors:{},layers:p,offset:_.current,scale:i,seed:y,res:1,version:a},o=await async function(e,t,n,r){const{biomeSource:a}=await wt(e,r),[o,i]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],r);return a.getBiome(o,64,i)}(t,Math.floor(200*e),Math.floor(200*n),r);h(o)},onLeave(){h(void 0)}},[x,i,y,p]);c((()=>{n&&(v.current="multi_noise"===C?4:1,z())}),[x,i,y,p,n]);const j=e=>{_.current[0]=_.current[0]*i/e,_.current[1]=_.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},l&&d(X,{label:l,class:"no-pointer"}),"multi_noise"===C&&d(re,{icon:"stack",tooltip:ge(r,"configure_layers")},Ft.map((e=>{const t=p.has(e);return d(X,{label:ge(r,`layer.${e}`),active:t,tooltip:ge(r,t?"enabled":"disabled"),onClick:t=>{g(new Set([e])),t.stopPropagation()}})}))),("multi_noise"===C||"checkerboard"===C)&&d(S,null,d(X,{icon:"dash",tooltip:ge(r,"zoom_out"),onClick:()=>j(1.5*i)}),d(X,{icon:"plus",tooltip:ge(r,"zoom_in"),onClick:()=>j(i/1.5)})),"multi_noise"===C&&d(X,{icon:"sync",tooltip:ge(r,"generate_new_seed"),onClick:()=>ke(e)})),d("canvas",{ref:M,width:"200",height:"200"}))};function Ut(e){if("string"!=typeof e){const t=I.fromJson(f.DataModel.unwrapLists(e));e=0===t.noise.densityFactor&&-.030078125===t.noise.densityOffset?"minecraft:nether":"minecraft:overworld"}switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}}const Gt=({data:e,version:t,shown:n,lang:r})=>{const[a,o]=m(4),[i,s]=m(be()),{canvas:l,redraw:u}=ee({size:()=>[16*a,16*a],async draw(n){Mt(e,n,{seed:i,version:t,size:[16*a,128,16*a]})}}),h=JSON.stringify(e);return c((()=>{n&&u()}),[h,a,i,n]),d(S,null,d("div",{class:"controls"},d(X,{icon:"dash",tooltip:ge(r,"zoom_out"),onClick:()=>o(Math.min(16,a+1))}),d(X,{icon:"plus",tooltip:ge(r,"zoom_in"),onClick:()=>o(Math.max(1,a-1))}),d(X,{icon:"sync",tooltip:ge(r,"generate_new_seed"),onClick:()=>s(be())})),d("canvas",{ref:l,width:"64",height:"64"}))},Yt=({lang:e,data:t,shown:n,version:r})=>{const[a,o]=m(be()),[i,s]=m(2),l=u([0,0]),h=JSON.stringify([t]),{canvas:p,redraw:g}=ee({size:()=>[256,256],async draw(e){const n={offset:l.current,scale:i,seed:a,version:r};!function(e,t,n){const r=new z(n.seed),a=D.fromJson(f.DataModel.unwrapLists(e)),o=new M(r,a),i=-n.offset[0]-100,s=-n.offset[1]-100,l=t.data;for(let c=0;c<256;c+=1)for(let e=0;e<256;e+=1){const t=4*c+4*e*256,r=(c+i)*n.scale,a=(e+s)*n.scale,d=128*(o.sample(r,a,0)+1);l[t]=d,l[t+1]=d,l[t+2]=d,l[t+3]=255}}(t,e,n)},async onDrag(e,t){l.current[0]=l.current[0]+256*e,l.current[1]=l.current[1]+256*t,g()}},[h,i,a]);c((()=>{n&&g()}),[h,i,a,n]);const _=e=>{l.current[0]=l.current[0]*i/e,l.current[1]=l.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},d(X,{icon:"dash",tooltip:ge(e,"zoom_out"),onClick:()=>_(1.5*i)}),d(X,{icon:"plus",tooltip:ge(e,"zoom_in"),onClick:()=>_(i/1.5)}),d(X,{icon:"sync",tooltip:ge(e,"generate_new_seed"),onClick:()=>o(be())})),d("canvas",{ref:p,width:"256",height:"256"}))},qt=({lang:e,data:t,shown:n,version:r})=>{var a,o;const i=ge.bind(null,e),[s,l]=m(be()),[h,f]=m(.2),[p,g]=m(.1),[_,v]=m(void 0),w=u(0),y=JSON.stringify([t,h,p]),b=null!=(o=null==(a=null==t?void 0:t.noise)?void 0:a.height)?o:256,{canvas:k,redraw:x}=ee({size:()=>[b,b],async draw(e){const n={biomeDepth:p,biomeScale:h,offset:w.current,width:e.width,seed:s,version:r};Bt(t,e,n)},async onDrag(e){w.current+=e*b,x()},async onHover(e,n){var r,a;const o=b-Math.max(1,Math.ceil(n*b))+(null!=(a=null==(r=null==t?void 0:t.noise)?void 0:r.min_y)?a:0);v(`${o}`)},onLeave(){v(void 0)}},[y,s]);return c((()=>{n&&x()}),[y,s,n]),d(S,null,d("div",{class:"controls"},_&&d(X,{label:`Y = ${_}`,class:"no-pointer"}),qe(r,void 0,"1.17")&&d(re,{icon:"gear",tooltip:ge(e,"terrain_settings")},d(Q,{label:i("preview.scale"),value:`${h}`,onChange:e=>f(Number(e))}),d(Q,{label:i("preview.depth"),value:`${p}`,onChange:e=>g(Number(e))})),d(X,{icon:"sync",tooltip:ge(e,"generate_new_seed"),onClick:()=>l(be())})),d("canvas",{ref:k,width:b,height:b}))},Zt=["dimension","worldgen/noise","worldgen/noise_settings","worldgen/configured_feature"];function Kt({lang:e,model:t,version:n,id:r,shown:a}){var o;const[,i]=m(0);if(ne(t,(()=>{i((e=>e+1))})),"dimension"===r&&(null==(o=null==t?void 0:t.get(new f.Path(["generator","type"])))?void 0:o.endsWith("noise"))){const r=t.get(new f.Path(["generator","biome_source"]));if(r)return d(Jt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/noise"===r&&t){const r=t.get(new f.Path([]));if(r)return d(Yt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/noise_settings"===r&&t){const r=t.get(new f.Path([]));if(r)return d(qt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/configured_feature"===r&&t){const r=t.get(new f.Path([]));if(r)return d(Gt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}return d(S,null)}const Xt={base:({},e,t)=>t,choice({switchNode:e},t,n,r){return e.hook(this,t,n,r)},list({children:e},t,n,r){if(!Array.isArray(n))return n;const a=n.map(((n,a)=>e.hook(this,t.push(a),n.node,r)));for(const o of Object.getOwnPropertySymbols(n))a[o]=n[o];return a},map({children:e,config:t},n,r,a){var o,i;if(void 0===r)return;const s="block_state_map"===(null==(o=t.validation)?void 0:o.validator)?null==(i=a.blockStates)?void 0:i[f.relativePath(n,t.validation.params.id).get()]:null,l={};Object.keys(r).forEach((t=>{var o;s&&!Object.keys(null!=(o=s.properties)?o:{}).includes(t)||(l[t]=e.hook(this,n.push(t),r[t],a))}));for(const c of Object.getOwnPropertySymbols(r))l[c]=r[c];return l},object({getActiveFields:e},t,n,r){if(null==n||"object"!=typeof n)return n;const a={},o=e(t);Object.keys(o).filter((e=>o[e].enabled(t))).forEach((e=>{const i=o[e].hook(this,t.push(e),n[e],r);null!=i&&(a[e]=i)}));for(const i of Object.getOwnPropertySymbols(n))a[i]=n[i];return a}};var Qt,en;(en=Qt||(Qt={})).ID_LANGUAGE="language",en.ID_THEME="theme",en.ID_VERSION="schema_version",en.ID_INDENT="indentation",en.ID_FORMAT="output_format",en.ID_SOUNDS_VERSION="minecraft_sounds_version",en.getLanguage=function(){var e;return null!=(e=localStorage.getItem(en.ID_LANGUAGE))?e:"en"},en.getTheme=function(){var e;return null!=(e=localStorage.getItem(en.ID_THEME))?e:"dark"},en.getVersion=function(){const e=localStorage.getItem(en.ID_VERSION);return e&&Re.includes(e)?e:"1.17"},en.getIndent=function(){var e;return null!=(e=localStorage.getItem(en.ID_INDENT))?e:"2_spaces"},en.getFormat=function(){var e;return null!=(e=localStorage.getItem(en.ID_FORMAT))?e:"json"},en.getSoundsVersion=function(){var e;return null!=(e=localStorage.getItem(en.ID_SOUNDS_VERSION))?e:"latest"},en.setLanguage=function(e){e&&localStorage.setItem(en.ID_LANGUAGE,e)},en.setTheme=function(e){e&&localStorage.setItem(en.ID_THEME,e)},en.setVersion=function(e){e&&localStorage.setItem(en.ID_VERSION,e)},en.setIndent=function(e){e&&localStorage.setItem(en.ID_INDENT,e)},en.setFormat=function(e){e&&localStorage.setItem(en.ID_FORMAT,e)},en.setSoundsVersion=function(e){e&&localStorage.setItem(en.ID_SOUNDS_VERSION,e)};const tn={"2_spaces":2,"4_spaces":4,tabs:"\t",minified:void 0},nn={json:{parse:N.parse,stringify:(e,t)=>N.stringify(e,null,t)},yaml:{parse:B.load,stringify:(e,t)=>B.dump(e,{flowLevel:void 0===t?0:-1,indent:"string"==typeof t?4:t})}};function rn({lang:e,name:t,model:n,blockStates:r,doCopy:a,doDownload:o,doImport:i,copySuccess:s,onError:l}){const h=ge.bind(null,e),[p,g]=m(Qt.getIndent()),[_,v]=m(Qt.getFormat()),w=u(null),y=u(null),b=u(),k=T(((e,t)=>{const n=e.schema.hook(Xt,new f.ModelPath(e),e.data,{blockStates:t});return nn[_].stringify(n,tn[p])+"\n"}),[p,_]);c((()=>{b.current=()=>{if(n&&r)try{const e=k(n,r);e.length>=1e4?w.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":w.current.value=e}catch(e){l(`Error getting JSON output: ${Le(e)}`),console.error(e),w.current.value=""}}})),ne(n,(()=>{b.current()})),c((()=>{n&&b.current()}),[n]),c((()=>{b.current()}),[p,_]);c((()=>{a&&n&&r&&navigator.clipboard.writeText(k(n,r)).then((()=>{s()}))}),[a]),c((()=>{if(o&&n&&r&&y.current){const e=encodeURIComponent(k(n,r));y.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),y.current.setAttribute("download",`${t}.${_}`),y.current.click()}}),[o]),c((()=>{i&&w.current&&(w.current.value="",w.current.select())}),[i]);return d(S,null,d("div",{class:"controls"},d(re,{icon:"gear",tooltip:h("output_settings")},Object.entries(tn).map((([e])=>d(X,{label:h(`indentation.${e}`),active:p===e,onClick:()=>{return t=e,Qt.setIndent(t),void g(t);var t}}))),d("hr",null),Object.keys(nn).map((e=>d(X,{label:h(`format.${e}`),active:_===e,onClick:()=>{return t=e,Qt.setFormat(t),void v(t);var t}}))))),d("textarea",{ref:w,class:"source",onBlur:()=>{if(0!==w.current.value.length)try{const e=nn[_].parse(w.current.value);null==n||n.reset(f.DataModel.wrapLists(e),!1)}catch(e){l(`Error importing: ${Le(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:h("source_placeholder")}),d("a",{ref:y,style:"display: none;"}))}class an extends f.DataModel{constructor(e,t,n,r){super(e),this.mapper=t,this.getter=n,this.setter=r}map(e){return this.mapper(e)}get(e){return this.getter(e)}set(e,t,n){return this.setter(e,t,n)}}const on=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","recipe.type","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type","block_predicate.type","material_rule.type","material_condition.type"],sn=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],ln=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state","material_rule.block.result_state"],cn=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome","block_predicate.type","material_rule.type","material_condition.type"],dn=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],un=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset","block_predicate.matching_blocks.offset","block_predicate.matching_fluids.offset","model_element.from","model_element.to","model_element.rotation.origin","model_element.faces.uv","item_transform.rotation","item_transform.translation","item_transform.scale"],mn=["noise_settings.surface_rule","noise_settings.noise.terrain_shaper"],hn=new f.DataModel(f.MapNode(f.StringNode(),f.StringNode()),{historyMax:0});function fn({model:e,lang:t,version:n,blockStates:r}){var a;const o=new f.ModelPath(e),[i,s,l]=e.schema.hook(pn,o,Pe(e.data),t,n,r,{});return(null==(a=null==s?void 0:s.props)?void 0:a.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(o)}-node`,"data-category":e.schema.category(o)},d("div",{class:"node-header"},i,s),d("div",{class:"node-body"},l)):l}const pn={base:()=>[null,null,null],boolean:(e,t,n,r,a,o,i)=>[null,d(vn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null],choice({choices:e,config:t,switchNode:n},r,a,o,i,s,l){const c=n.activeCase(r,!0),u=(null==t?void 0:t.context)?new f.ModelPath(r.getModel(),new f.Path(r.getArray(),[t.context])):r,[m,h,p]=c.node.hook(this,u,a,o,i,s,l);if(1===e.length)return[m,h,p];const g=(null==t?void 0:t.choiceContext)?new f.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new f.Path([],[t.context]):r,_=d("select",{value:c.type,onChange:n=>(n=>{var o;const i=null!=(o=e.find((e=>e.type===n)))?o:c,s=i.node.default(),l=i.change?i.change(f.DataModel.unwrapLists(a)):"feature"===t.choiceContext&&"minecraft:decorated"===(null==s?void 0:s.type)?s.config.feature:s;r.model.set(r,f.DataModel.wrapLists(l))})(n.target.value)},e.map((e=>d("option",{value:e.type},Cn(o,g.contextPush(e.type))))));return[m,d(S,null,_,h),p]},list({children:e,config:t},n,r,a,o,i,c){const{expand:u,collapse:h,isToggled:p}=_n(),[g,_]=m(50),v=n.getContext().join(".");if(un.includes(v)){return[d(S,null,[...Array(t.maxLength)].map(((e,t)=>d(An,{lang:a,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(S,null,[...Array(t.maxLength)].map(((t,s)=>{var l;return e.hook(this,n.modelPush(s),null==(l=null==r?void 0:r[s])?void 0:l.node,a,o,i,c)[1]}))),null]}return[null,d("button",{class:"add tooltipped tip-se","aria-label":ge(a,"add_top"),onClick:()=>{Array.isArray(r)||(r=[]);const t=f.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:ye()},...r])}},ae.plus_circle),d(S,null,r&&Array.isArray(r)&&r.map((({node:t,id:m},f)=>{if(f===g)return d("div",{class:"node node-header"},d("label",null,ge(a,"entries_hidden",""+(r.length-g))),d("button",{onClick:()=>_(Math.min(g+50,r.length))},ge(a,"entries_hidden.more","50")),d("button",{onClick:()=>_(r.length)},ge(a,"entries_hidden.all")));if(f>g)return null;const v=n.push(f).contextPush("entry"),w="object"===e.type(v),y=p(m);if(w&&(!1===y||void 0===y&&r.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(An,{lang:a,path:v,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(a,"expand")}\n${ge(a,"expand_all","Ctrl")}`,onClick:u(m)},ae.chevron_right),d("label",null,Cn(a,v,`${f}`)),d(gn,{key:m,path:v,value:t,schema:e}));return d(bn,l(s({key:m,path:v,schema:e,value:t},{lang:a,version:o,states:i,actions:[{icon:"duplicate",label:"duplicate",onSelect:()=>{const e=[...n.get()];e.splice(f,0,{id:ye(),node:Pe(t)}),n.model.set(n,e)}}]}),{ctx:l(s({},c),{index:(0===f?1:0)+(f===r.length-1?2:0)})}),w&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(a,"collapse")}\n${ge(a,"collapse_all","Ctrl")}`,onClick:h(m)},ae.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":ge(a,"remove"),onClick:()=>v.set(void 0)},ae.trashcan),r.length>1&&d("div",{class:"node-move"},d("button",{class:"move tooltipped tip-se","aria-label":ge(a,"move_up"),onClick:()=>{const e=[...n.get()];[e[f-1],e[f]]=[e[f],e[f-1]],n.model.set(n,e)},disabled:0===f},ae.chevron_up),d("button",{class:"move tooltipped tip-se","aria-label":ge(a,"move_down"),onClick:()=>{const e=[...n.get()];[e[f+1],e[f]]=[e[f],e[f+1]],n.model.set(n,e)},disabled:f===r.length-1},ae.chevron_down)))})),r&&r.length>0&&r.length<=g&&d("div",{class:"node node-header"},d("button",{class:"add tooltipped tip-se","aria-label":ge(a,"add_bottom"),onClick:()=>{Array.isArray(r)||(r=[]);const t=f.DataModel.wrapLists(e.default());n.model.set(n,[...r,{node:t,id:ye()}])}},ae.plus_circle)))]},map({children:e,keys:t,config:n},r,a,o,i,c,u){var m,h,p,g,_;const{expand:v,collapse:w,isToggled:y}=_n(),b=new f.ModelPath(hn,new f.Path([xn(r.toString())])),k="block_state_map"===(null==(m=n.validation)?void 0:m.validator)?null==c?void 0:c[f.relativePath(r,n.validation.params.id).get()]:null,x=(null==k?void 0:k.properties)?f.StringNode(null,{enum:Object.keys(null!=(h=k.properties)?h:{})}):t;if(k&&"Properties"===r.last()){"object"!=typeof a&&(a={});const e=Object.entries(null!=(p=k.properties)?p:{}).map((([e,t])=>[e,f.StringNode(null,{enum:t})]));return Object.entries(null!=(g=k.properties)?g:{}).forEach((([e,t])=>{"string"!=typeof a[e]?r.model.errors.add(r.push(e),"error.expected_string"):t.includes(a[e])||r.model.errors.add(r.push(e),"error.invalid_enum_option",a[e])})),f.ObjectNode(Object.fromEntries(e)).hook(this,r,a,o,i,c,u)}return[null,d(S,null,x.hook(this,b,null!=(_=b.get())?_:"",o,i,c,u)[1],d("button",{class:"add tooltipped tip-se","aria-label":ge(o,"add"),onClick:()=>{const t=b.get();r.model.set(r.push(t),f.DataModel.wrapLists(e.default()))}},ae.plus_circle)),d(S,null,"object"==typeof a&&Object.entries(a).map((([t,n])=>{var m,h,p,g;const _=r.modelPush(t),b="object"===e.type(_),x=y(t);if(b&&(!1===x||void 0===x&&a.length>20))return d("div",{class:"node node-header","data-category":e.category(_)},d(An,{lang:o,path:_,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(o,"expand")}\n${ge(o,"expand_all","Ctrl")}`,onClick:v(t)},ae.chevron_right),d("label",null,t),d(gn,{key:t,path:_,value:n,schema:e}));const C=k?f.StringNode(null,{enum:null!=(h=null==(m=k.properties)?void 0:m[t])?h:[]}):e;(null==(p=null==k?void 0:k.properties)?void 0:p[t])&&"string"==typeof n&&!(null==(g=k.properties)?void 0:g[t].includes(n))&&r.model.errors.add(_,"error.invalid_enum_option",n);return d(bn,l(s({key:t,schema:C,path:_,value:n},{lang:o,version:i,states:c,ctx:u}),{label:t}),b&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(o,"collapse")}\n${ge(o,"collapse_all","Ctrl")}`,onClick:w(t)},ae.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":ge(o,"remove"),onClick:()=>_.set(void 0)},ae.trashcan))})))]},number:(e,t,n,r,a,o,i)=>[null,d(wn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null],object({node:e,config:t,getActiveFields:n,getChildModelPath:r},a,o,i,c,u,m){var h;const{expand:p,collapse:g,isToggled:_}=_n();if(0==a.getArray().length&&function(e,t){var n;return"feature"===e&&"decorated"===(null==(n=null==t?void 0:t.type)?void 0:n.replace(/^minecraft:/,""))&&ve(null==t?void 0:t.config)}(t.context,o)){const{wrapper:e,fields:t}=function(e,t,n){const r=[],a=jn(n,r),o={type:e.type,config:f.ObjectNode({decorators:f.ListNode(Ue),feature:Ge},{context:"feature.decorated"})},i=f.ObjectNode(o,{context:"feature"}),s=new f.Path(["config","feature"]),l=new f.Path(["config","decorators"]),c=t.getModel(),d=new an(i,(e=>{if(e.startsWith(s))return new f.Path([...[...Array(r.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);if(e.startsWith(l)){if(2===e.modelArr.length)return new f.Path([]);const t=e.modelArr[2];if("number"==typeof t)return new f.Path([...[...Array(t)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)])}return e}),(e=>{if(e.equals(l)){const e=[];return jn(c.data,e),e}return c.get(d.map(e))}),((e,t,n)=>{if(e.startsWith(s)){const r=[];jn(c.data,r);const a=new f.Path([...[...Array(r.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);return c.set(a,t,n)}if(e.startsWith(l)){const r=e.modelArr[2];if(2===e.modelArr.length){const e=d.get(s);return c.set(new f.Path,$n(e,t),n)}if("number"==typeof r){if(3===e.modelArr.length&&void 0===t){const e=d.get(s),t=[];jn(c.data,t),t.splice(r,1);const a=$n(e,t);return c.set(new f.Path,a,n)}{const a=new f.Path([...[...Array(r)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)]);return c.set(a,t,n)}}}c.set(e,t,n)}));return d.data={type:c.data.type,config:{decorators:r,feature:a}},d.errors=c.errors,{fields:o,wrapper:d}}(n(a),a,o);o=e.data,n=()=>t,r=(t,n)=>new f.ModelPath(e,new f.Path(t.getArray(),["feature"])).push(n)}let v=null,w=null;if(e.optional())if(void 0===o){const t=()=>a.set(f.DataModel.wrapLists(e.default()));w=d("button",{class:"collapse closed tooltipped tip-se","aria-label":ge(i,"expand"),onClick:t},ae.plus_circle)}else{const e=()=>a.set(void 0);w=d("button",{class:"collapse open tooltipped tip-se","aria-label":ge(i,"remove"),onClick:e},ae.trashcan)}const y=a.getContext().join(".");if(mn.includes(y)){const e=_("");if(v=d(S,null,d("button",{class:"toggle tooltipped tip-se","aria-label":ge(i,e?"collapse":"expand"),onClick:e?g(""):p("")},e?ae.chevron_down:ae.chevron_right)),!e)return[v,w,null]}const b="object"==typeof o&&null!==o&&(null==(h=e.default())?void 0:h.pools)?l(s({},m),{loot:null==o?void 0:o.type}):m,k=d(S,null,"object"==typeof o&&null!==o&&!(e.optional()&&void 0===o)&&Object.entries(n(a)).filter((([e,t])=>t.enabled(a))).map((([e,t])=>{var n,l,m;const h=r(a,e),f=h.getContext().join(".");if(sn.includes(f))return null;const[p,g,_]=t.hook(this,h,o[e],i,c,u,b);if(!(p||g||(null!=(m=null==(l=null==(n=null==_?void 0:_.props)?void 0:n.children)?void 0:l.length)?m:0)>0))return null;const y="object"===t.type(h)&&ln.includes(f),k=cn.includes(f);return y||k?(v=d(S,null,v,d(An,{lang:i,path:h}),d(Mn,{lang:i,path:h}),p),w=d(S,null,w,g),y?_:null):d(bn,s({key:e,schema:t,path:h,value:o[e]},{lang:i,version:c,states:u,ctx:b}))})));return[v,w,k]},string:(e,t,n,r,a,o,i)=>[null,d(yn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null]};function gn({path:e,value:t}){var n,r,a,o,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(r=null==(n=null==t?void 0:t.entries)?void 0:n.length)?r:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(a=null==t?void 0:t.name)?void 0:a.replace(/^minecraft:/,""))?i:null==(o=null==t?void 0:t.type)?void 0:o.replace(/^minecraft:/,""))}for(const s of Object.values(null!=t?t:{}))if("string"==typeof s)return d("label",null,s.replace(/^minecraft:/,""));return null}function _n(){const[e,t]=m(new Map),[n,r]=m(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),r(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),r(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var r;return e instanceof Map&&(null!=(r=e.get(t))?r:n)}}}function vn({path:e,node:t,value:n,lang:r}){const a=r=>{e.model.set(e,t.optional()&&n===r?void 0:r)};return d(S,null,d("button",{class:!1===n?"selected":"",onClick:()=>a(!1)},ge(r,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>a(!0)},ge(r,"true")))}function wn({path:e,config:t,integer:n,value:r,lang:a}){var o;const i=t=>{const r=t.target.value,a=n?parseInt(r):parseFloat(r);e.model.set(e,a)};return d(S,null,d("input",{type:"text",value:null!=r?r:"",onBlur:i,onKeyDown:e=>{"Enter"===e.key&&i(e)}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(o=null==r?void 0:r.toString(16).padStart(6,"0"))?o:"000000"),onChange:t=>{const n=t.target.value,r=parseInt(n.slice(1),16);e.model.set(e,r)}}),["dimension.generator.seed","dimension.generator.biome_source.seed","world_settings.seed"].includes(e.getContext().join("."))&&d("button",{onClick:()=>ke(e.model),class:"tooltipped tip-se","aria-label":ge(a,"generate_new_seed")},ae.sync))}function yn({path:e,getValues:t,config:n,node:r,value:a,lang:o,version:i,states:s}){var l;const c=t=>{t.stopPropagation();const n=t.target.value;n!==a&&e.model.set(e,0===n.length?void 0:n)},u=t(),m=e.getContext().join("."),h=kn(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool?void 0:n.params.pool;if(dn.includes(m))return d("textarea",{value:null!=a?a:"",onBlur:c});if(kn(n)&&!n.additional||on.includes(m)){let t=new f.Path([]);return kn(n)&&"string"==typeof n.enum?t=t.contextPush(n.enum):h?t=t.contextPush(h):kn(n)&&(t=e),d("select",{value:null!=a?a:"",onChange:c},r.optional()&&d("option",{value:""},ge(o,"unset")),u.map((e=>d("option",{value:e},Cn(o,t.contextPush(e.replace(/^minecraft:/,"")))))))}if(kn(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=ye(),t=h?(e=>Z.generators.find((t=>t.id===e.replace(/^\$/,""))))(h):void 0;return d(S,null,d("input",{value:null!=a?a:"",onBlur:c,onKeyDown:e=>{"Enter"===e.key&&c(e)},list:u.length>0?e:""}),u.length>0&&d("datalist",{id:e},u.map((e=>d("option",{value:e})))),t&&u.includes(a)&&a.startsWith("minecraft:")&&d("a",{href:`/${t.url}/?version=${i}&preset=${a.replace(/^minecraft:/,"")}`,class:"tooltipped tip-se","aria-label":ge(o,"follow_reference")},ae.link_external))}{const t=null==s?void 0:s[f.relativePath(e,n.params.id).get()],r=Object.keys(null!=(l=null==t?void 0:t.properties)?l:{});return d("select",{value:null!=a?a:"",onChange:c},r.map((e=>d("option",null,e))))}}const bn=H((function({label:e,schema:t,path:n,value:r,lang:a,version:o,states:i,ctx:c,actions:u,children:m}){var h;const f=t.type(n),p=t.category(n),g=n.getContext().join("."),[_,v]=te(),w=l(s({},c),{depth:(null!=(h=c.depth)?h:0)+1});delete w.index;const[y,b,k]=t.hook(pn,n,r,a,o,i,w);return d("div",{class:`node ${f}-node`,"data-category":p},d("div",{class:"node-header",onContextMenu:e=>{e.preventDefault(),v()}},d(An,{lang:a,path:n}),d(Mn,{lang:a,path:n}),m,y,d("label",null,null!=e?e:Cn(a,n,`${n.last()}`),_&&d("div",{class:"node-menu"},null==u?void 0:u.map((e=>{var t;return d("div",{key:e.label,class:"menu-item"},d(X,{icon:e.icon,tooltip:ge(a,e.label),tooltipLoc:"se",onClick:()=>e.onSelect()}),d("span",null,null!=(t=e.description)?t:ge(a,e.label)))})),d("div",{class:"menu-item"},d(X,{icon:"clippy",tooltip:ge(a,"copy_context"),tooltipLoc:"se",onClick:()=>navigator.clipboard.writeText(g)}),d("span",null,g)))),b),k&&d("div",{class:"node-body"},k))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&De(e.ctx,t.ctx)&&De(e.value,t.value)));function kn(e){return!!(null==e?void 0:e.enum)}function xn(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===a.length)return null;const o=ge(e,a[0].error,...null!=(r=a[0].params)?r:[]);return zn("node-error","issue_opened",o)}function Mn({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),r=ge(e,n);return r===n?null:zn("node-help","info",r)}const zn=(e,t,n)=>{const[r,a]=te();return d("div",{class:`node-icon ${e}${r?" show":""}`,onClick:a},ae[t],d("span",{class:"icon-popup"},n))};function jn(e,t){var n,r;return"decorated"!==(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,""))?e:ve(null==e?void 0:e.config)?(t.push({id:t.length,node:e.config.decorator}),jn(null!=(r=e.config.feature)?r:"",t)):e}function $n(e,t){return 0===t.length?e:{type:"minecraft:decorated",config:{decorator:t.shift().node,feature:$n(e,t)}}}function Vn({lang:e,version:t,model:n,blockStates:r,onError:a}){if(!n||!r||"none"===e)return d(S,null);const[o]=R((e=>{a(`Error rendering the tree: ${e.message}`),console.error(e)}));if(o)return d(S,null);const[,i]=m(0);return ne(n,(()=>{i((e=>e+1))})),d("div",{class:"tree"},d(fn,s({},{model:n,lang:e,version:t,blockStates:r})))}const En={system:"device_desktop",dark:"moon",light:"sun"};function In({lang:e,title:t,version:n,theme:r,changeTheme:a,language:o,changeLanguage:i}){const s=ge.bind(null,e),l=Me(p());return d("header",null,d("div",{class:"title"},d(F,{class:"home-link",href:"/","aria-label":s("home")},On.home),d("h1",null,t),l&&d(re,{icon:"chevron_down",tooltip:s("switch_generator")},Z.generators.filter((e=>e.category===(null==l?void 0:l.category)&&qe(n,e.minVersion))).map((e=>d(X,{label:s(e.id),active:e.id===l.id,onClick:()=>g(Ce(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(re,{icon:"globe",tooltip:s("language")},Z.languages.map((({code:e,name:t})=>d(X,{label:t,active:e===o,onClick:()=>i(e)}))))),d("li",null,d(re,{icon:En[r],tooltip:s("theme")},Object.entries(En).map((([e,t])=>d(X,{icon:t,label:s(`theme.${e}`),active:e===r,onClick:()=>a(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",class:"tooltipped tip-sw","aria-label":s("github")},ae.mark_github)))))}const On={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};function Ln({lang:e,assets:t,sounds:n,sound:r,delay:a,pitch:o,volume:i,onEdit:s,onDelete:l,delayedPlay:h}){const f=ge.bind(null,e),[p,g]=m(!0),[_,v]=m(!1),[w,y]=m(!1),b=u([]),k=`playsound minecraft:${r} master @s ~ ~ ~ ${i} ${o}`;c((()=>{var e,a,s;const l=n[r];y(0===(null!=(a=null==(e=null==l?void 0:l.sounds)?void 0:e.length)?a:0)),b.current.forEach((e=>e.stop())),b.current=(null!=(s=null==l?void 0:l.sounds)?s:[]).map((e=>{const n="string"==typeof e?e:e.name,r=ot(t[`minecraft/sounds/${n}.ogg`].hash),a=new W.Howl({src:[r],format:["ogg"],volume:i,rate:o});a.on("end",(()=>{v(!1)}));const s=()=>{p&&b.current.every((e=>"loaded"===e.state()))&&g(!1)};return"loaded"===a.state()?setTimeout((()=>s())):a.on("load",(()=>{s()})),a})),g(!0)}),[r,n]),c((()=>{b.current.forEach((e=>e.rate(o)))}),[o]),c((()=>{b.current.forEach((e=>e.volume(i)))}),[i]);const x=()=>{if(p||w)return;C();const e=Math.floor(Math.random()*b.current.length);b.current[e].play(),v(!0)},C=()=>{b.current.forEach((e=>e.stop()))};c((()=>{h&&setTimeout((()=>x()),50*a)}),[h]),c((()=>()=>C()),[]);const[A,M]=m(!1),z=u(void 0);return d("div",{class:`sound-config${p?" loading":_?" playing":""}${w?" invalid":""}`},d(X,{class:"play",icon:w?"alert":p?"sync":"play",label:f("sounds.play"),onClick:x,tooltip:f(w?"sounds.unknown_sound":p?"sounds.loading_sound":"sounds.play_sound"),tooltipLoc:"se"}),d(se,{class:"btn btn-input sound",list:"sound-list",spellcheck:!1,value:r,onChange:e=>s({sound:e})}),d("label",{class:"delay-label"},f("sounds.delay"),": "),d(le,{class:"btn btn-input delay",min:0,value:a,onChange:e=>s({delay:e})}),d("label",{class:"pitch-label"},f("sounds.pitch"),": "),d(ce,{class:"pitch tooltipped tip-s",min:.5,max:2,step:.01,"aria-label":o.toFixed(2),style:`--x: ${100/1.5*(o-.5)}%`,value:o,onChange:e=>s({pitch:e})}),d("label",{class:"volume-label"},f("sounds.volume"),": "),d(ce,{class:"volume tooltipped tip-s",min:0,max:1,step:.01,"aria-label":i.toFixed(2),style:`--x: ${100*i}%`,value:i,onChange:e=>s({volume:e})}),d(X,{class:"copy"+(A?" active":""),icon:A?"check":"terminal",label:f("copy"),tooltip:f(A?"copied":"sounds.copy_command"),onClick:()=>{navigator.clipboard.writeText(k),M(!0),void 0!==z.current&&clearTimeout(z.current),z.current=setTimeout((()=>{M(!1)}),2e3)}}),d(X,{class:"remove",icon:"trashcan",tooltip:f("sounds.remove_sound"),onClick:()=>{l(),C()}}))}function Pn({title:e,desc:t,link:n,icon:r,children:a}){const o=d(S,null,d("div",{class:"tool-head"},r&&On[r],d("div",null,d("h3",null,e),d("p",null,t))),a&&d("div",{class:"tool-body"},a));return n?d("a",{class:"tool-card",href:n},o):d("div",{class:"tool-card"},o)}function Dn({category:e,lang:t,changeTitle:n}){const r=ge.bind(null,t);return n(r("title.generator_category",r(e))),d("main",null,d("div",{class:"category"},Z.generators.filter((t=>t.category===e)).map((e=>d(Pn,{title:r(e.id),link:Ce(e.url)})))))}function Sn({lang:e,changeTitle:t}){const n=ge.bind(null,e),[r,a]=m(null);t(n("title.changelog"));const[o,i]=m([]);c((()=>{Be().then((e=>i(e))).catch((e=>{console.error(e),a(e)}))}),[]);const[s,l]=m(""),[u,h]=m([]),f=e=>{u.includes(e)?h(u.filter((t=>t!==e))):h([...u,e])},p=J((()=>{const e=s.split(" ").map((e=>e.trim().toLowerCase())).filter((e=>e.length>0));return 0===e.length&&0===u.length?o:o.filter((t=>{if(!u.every((e=>t.tags.includes(e))))return!1;const n=t.tags.join(" ")+" "+t.content.toLowerCase();return e.every((e=>e.startsWith("!")?1===e.length||!n.includes(e.slice(1)):n.includes(e)))}))}),[o,s,u]),[g,_]=m(!0),v=J((()=>p.sort(((e,t)=>g?t.order-e.order:e.order-t.order))),[p,g]);return d("main",null,d(K,{type:"text",id:"changelog"}),r&&d(oe,{error:r,onDismiss:()=>a(null)}),d("div",{class:"changelog-controls"},d("div",{class:"changelog-query"},d(se,{class:"btn btn-input changelog-search",list:"sound-list",placeholder:n("changelog.search"),value:s,onChange:l}),d(X,{icon:g?"sort_desc":"sort_asc",label:g?"Newest first":"Oldest first",onClick:()=>_(!g)})),u.length>0&&d("div",{class:"changelog-tags"},u.map((e=>d(Bn,{label:e,onClick:()=>h(u.filter((t=>t!==e)))}))))),d("div",{class:"changelog"},v.map((e=>d(Tn,{change:e,activeTags:u,toggleTag:f})))))}function Tn({change:e,activeTags:t,toggleTag:n}){return d("div",{class:"changelog-entry"},d("div",{class:"changelog-version"},d(Nn,s({},e.version)),d(Nn,s({},e.group))),d("div",{class:"changelog-tags"},e.tags.map((e=>d(Bn,{label:e,onClick:()=>n(e),active:t.includes(e)})))),d("div",{class:"changelog-content",dangerouslySetInnerHTML:{__html:U(e.content)}}))}function Nn({id:e,article:t}){return null===t?d("span",null,e):d("a",{href:`https://www.minecraft.net/en-us/article/${t}`,target:"_blank"},e)}function Bn({label:e,active:t,onClick:n}){const r="breaking"===e?5:xe(e)%360;return d("div",{class:`changelog-tag${t?" active":""}${n?" clickable":""}`,style:`--tint: ${r}`,onClick:n},"breaking"===e&&ae.alert,e)}function Hn({lang:e,changeTitle:t,version:n,changeVersion:r}){var a;const o=ge.bind(null,e),[i,h]=m(null),[g,_]=R();if(g)return d("main",null,d(oe,{error:`Something went wrong rendering the generator: ${g.message}`,onDismiss:_}));const v=Me(p());if(!v)return d("main",null,d(oe,{error:`Cannot find generator "${p()}"`}));const w=Z.versions.filter((e=>qe(e.id,v.minVersion,v.maxVersion))).map((e=>e.id));t(o("title.generator",o(v.id)),w),qe(n,v.minVersion)||h(`The minimum version for this generator is ${v.minVersion}`);const y=ze(p()).get("preset");c((()=>{b&&y&&V(y)}),[y]);const[b,k]=m(null),[x,C]=m(null);c((()=>{h(null),k(null),async function(e){return(await Ye(e)).blockStates}(n).then((e=>C(e))),async function(e,t){var n;if(!We[t]||We[t].version!==e){const a=await Ye(e);Ue=f.Reference(a.schemas,"configured_decorator"),Ge=f.ChoiceNode([{type:"string",node:f.StringNode(a.collections,{validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:f.Reference(a.schemas,"configured_feature")}],{choiceContext:"feature"});const o=null==(n=Z.generators.find((e=>e.id===t)))?void 0:n.schema;if(!o)throw new Error(`Cannot find model ${t}`);try{const n=a.schemas.get(o),r=new f.DataModel(n,{wrapLists:!0});We[t]?r.reset(We[t].model.data,!1):(r.validate(!0),r.history=[JSON.stringify(r.data)]),We[t]={model:r,version:e}}catch(r){const n=new Error(`Cannot get generator "${t}" for version "${e}": ${Le(r)}`);throw r instanceof Error&&(n.stack=r.stack),n}}return We[t].model}(n,v.id).then((async e=>{if(q.setGenerator(v.id),y){const t=await E(y);e.reset(f.DataModel.wrapLists(t),!1)}k(e)})).catch((e=>{console.error(e),h(Le(e))}))}),[n,v.id]),ne(b,(()=>{je({version:void 0,preset:void 0}),h(null)}));const A=e=>{e.ctrlKey&&"z"===e.key?(q.generatorEvent("undo","Hotkey"),null==b||b.undo()):e.ctrlKey&&"y"===e.key&&(q.generatorEvent("redo","Hotkey"),null==b||b.redo())};c((()=>(document.addEventListener("keyup",A),()=>{document.removeEventListener("keyup",A)})),[b]);const[M,z]=m(""),[j,$]=m([]);c((()=>{(async function(e){return(await Ye(e)).collections})(n).then((e=>{const t=(null!=M?M:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&$(n)})).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id,M]);const V=e=>{E(e).then((t=>{null==b||b.reset(f.DataModel.wrapLists(t),!1),je({version:n,preset:e})}))},E=async e=>{var t,r,a;q.generatorEvent("load-preset",e);try{const o=await at(n,null!=(t=v.path)?t:v.id,e),i=null==b?void 0:b.get(new f.Path(["generator","seed"]));return void 0!==(null==(r=null==o?void 0:o.generator)?void 0:r.seed)&&void 0!==i&&(o.generator.seed=i,void 0!==(null==(a=o.generator.biome_source)?void 0:a.seed)&&(o.generator.biome_source.seed=i)),o}catch(o){h(Le(o))}},[I,O]=m(window.innerWidth>820),[L,P]=m(0),[D,T]=m(0),[N,B]=m(0),[H,F]=m(!1),W=u(void 0),[J,U]=m(!1),G=Zt.includes(v.id);J&&!G&&U(!1);let Y=1;G&&(Y+=1),I&&(Y+=2);return d(S,null,d("main",{class:J?"has-preview":""},d(K,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(X,{icon:"upload",label:o("import"),onClick:()=>{q.generatorEvent("import"),O(!0),B(N+1)}}),d(re,{icon:"archive",label:o("presets"),relative:!1},d(Q,{icon:"search",large:!0,value:M,onChange:z,doSelect:1,placeholder:o("search")}),d("div",{class:"result-list"},j.map((e=>d(X,{label:e,onClick:()=>V(e)})))),0===j.length&&d(X,{label:o("no_presets")})),d(re,{icon:"tag",label:n},w.reverse().map((e=>d(X,{label:e,active:e===n,onClick:()=>r(e)})))),d(re,{icon:"kebab_horizontal",tooltip:o("more")},d(X,{icon:"history",label:o("reset"),onClick:()=>{q.generatorEvent("reset"),null==b||b.reset(f.DataModel.wrapLists(b.schema.default()),!0)}}),d(X,{icon:"arrow_left",label:o("undo"),onClick:e=>{e.stopPropagation(),q.generatorEvent("undo","Menu"),null==b||b.undo()}}),d(X,{icon:"arrow_right",label:o("redo"),onClick:e=>{e.stopPropagation(),q.generatorEvent("redo","Menu"),null==b||b.redo()}}))),i&&d(oe,{error:i,onDismiss:()=>h(null)}),d(Vn,l(s({},{lang:e,model:b,version:n,blockStates:x}),{onError:h}))),d("div",{class:"popup-actions",style:`--offset: -${8+50*Y}px;`},d("div",{class:`popup-action action-preview${G?" shown":""} tooltipped tip-nw`,"aria-label":o(J?"hide_preview":"show_preview"),onClick:()=>{q.generatorEvent("toggle-preview",J?"hidden":"visible"),U(!J)}},J?ae.x_circle:ae.play),d("div",{class:`popup-action action-download${I?" shown":""} tooltipped tip-nw`,"aria-label":o("download"),onClick:()=>{q.generatorEvent("download"),T(D+1)}},ae.download),d("div",{class:`popup-action action-copy${I?" shown":""}${H?" active":""} tooltipped tip-nw`,"aria-label":o(H?"copied":"copy"),onClick:()=>{q.generatorEvent("copy"),P(L+1)}},H?ae.check:ae.clippy),d("div",{class:"popup-action action-code shown tooltipped tip-nw","aria-label":o(I?"hide_output":"show_output"),onClick:()=>{q.generatorEvent("toggle-output",I?"hidden":"visible"),O(!I),P(0),T(0),B(0)}},I?ae.chevron_right:ae.code)),d("div",{class:"popup-preview"+(J?" shown":"")},d(Kt,l(s({},{lang:e,model:b,version:n,id:v.id}),{shown:J,onError:h}))),d("div",{class:"popup-source"+(I?" shown":"")},d(rn,l(s({},{lang:e,model:b,blockStates:x,doCopy:L,doDownload:D,doImport:N}),{name:null!=(a=v.schema)?a:"data",copySuccess:()=>{F(!0),void 0!==W.current&&clearTimeout(W.current),W.current=setTimeout((()=>{F(!1)}),2e3)},onError:h}))))}function Rn({lang:e,changeTitle:t}){const n=ge.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},d(Pn,{title:"Data packs"},Z.generators.filter((e=>!e.category)).map((e=>d(Pn,{title:n(e.id),link:Ce(e.url)}))),d(Pn,{title:n("worldgen"),link:"/worldgen/"})),d(Pn,{title:"Resource packs"},Z.generators.filter((e=>"assets"===e.category)).map((e=>d(Pn,{title:n(e.id),link:Ce(e.url)})))),d(Pn,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/",desc:"Analyse your performance reports"}),d(Pn,{title:"Minecraft Sounds",icon:"sounds",link:"/sounds/",desc:"Browse through and mix all the vanilla sounds"}),d(Pn,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/",desc:"Convert your 1.16 data packs to 1.17"}),d(Pn,{title:"Technical Changelog",link:"/changelog/"})))}function Fn({lang:e,changeTitle:t,version:n,changeVersion:r}){const a=ge.bind(null,e),[o,i]=m(null);t(a("title.sounds"));const[h,f]=m({}),[p,g]=m({}),_=Object.keys(null!=p?p:{});c((()=>{ht(n).then((e=>(f(e),ft(n)))).then((e=>{e&&g(e)})).catch((e=>{console.error(e),i(Le(e))}))}),[n]);const[v,w]=m(""),[y,b]=m([]),k=()=>{b([{id:ye(),sound:v,delay:0,pitch:1,volume:1},...y])},x=e=>()=>{b(y.filter((t=>t.id!==e)))},[C,A]=m(0),M=u(null);return d("main",null,d(K,{type:"text",id:"sounds"}),o&&d(oe,{error:o,onDismiss:()=>i(null)}),_.length>0&&d(S,null,d("div",{class:"controls sounds-controls"},d("div",{class:"sound-search-group"},d(se,{class:"btn btn-input sound-search",list:"sound-list",placeholder:a("sounds.search"),value:v,onChange:w,onEnter:k}),d(X,{icon:"plus",tooltip:a("sounds.add_sound"),class:"add-sound",onClick:k})),y.length>1&&d(X,{icon:"play",label:a("sounds.play_all"),class:"play-all-sounds",onClick:()=>{A(C+1)}}),d("div",{class:"spacer"}),d(X,{icon:"download",label:a("download"),tooltip:a("sounds.download_function"),class:"download-sounds",onClick:()=>{const e=y.some((e=>e.delay>0)),t=y.sort(((e,t)=>e.delay-t.delay)).map((t=>`${e?`execute if score @s delay matches ${t.delay} run `:""}playsound minecraft:${t.sound} master @s ~ ~ ~ ${t.volume} ${t.pitch}`)).join("\n");M.current.setAttribute("href","data:text/plain;charset=utf-8,"+t+"%0A"),M.current.setAttribute("download","sounds.mcfunction"),M.current.click()}}),d(re,{icon:"tag",label:n},Z.versions.reverse().map((e=>d(X,{label:e.id,active:e.id===n,onClick:()=>r(e.id)}))))),d("div",{class:"sounds"},y.map((t=>{return d(Ln,l(s(s({key:t.id},t),{lang:e,assets:h,sounds:p,delayedPlay:C}),{onEdit:(n=t.id,e=>{b(y.map((t=>t.id===n?s(s({},t),e):t)))}),onDelete:x(t.id)}));var n}))),d("a",{ref:M,style:"display: none;"})),d("datalist",{id:"sound-list"},_.map((e=>d("option",{key:e,value:e})))))}function Wn(){const[e,t]=m("none");c((()=>{(async()=>{const e=Qt.getLanguage();await Promise.all([_e("en"),..."en"!==e?[_e(e)]:[]]),t(e)})()}),[]);const[n,r]=m(Qt.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const a=ze(p()).get("version"),[o,i]=m(Qt.getVersion()),l=T((e=>{ze(p()).has("version")&&je({version:e}),q.setVersion(e),Qt.setVersion(e),i(e)}),[a]);c((()=>{Re.includes(a)&&o!==a&&i(a)}),[o,a]);const[u,h]=m(ge(e,"title.home")),f=(e,t)=>{null!=t||(t=Z.versions.map((e=>e.id)));const n=t.slice(t.length-3);document.title=`${e} Minecraft ${n.join(", ")}`,h(e)};return d(S,null,d(In,s({},{lang:e,title:u,version:o,theme:n,language:e,changeLanguage:async e=>{pe[e]||await _e(e),q.setLanguage(e),Qt.setLanguage(e),t(e)},changeTheme:e=>{q.setTheme(e),Qt.setTheme(e),r(e)}})),d(Y,{onChange:e=>{setTimeout((()=>q.pageview(Ce(e.url))))}},d(Rn,s({path:"/"},{lang:e,changeTitle:f})),d(Dn,s({path:"/worldgen",category:"worldgen"},{lang:e,changeTitle:f})),d(Dn,s({path:"/assets",category:"assets"},{lang:e,changeTitle:f})),d(Fn,s({path:"/sounds"},{lang:e,version:o,changeTitle:f,changeVersion:l})),d(Sn,s({path:"/changelog"},{lang:e,changeTitle:f})),d(Hn,s({default:!0},{lang:e,version:o,changeTitle:f,changeVersion:l}))))}G(d(Wn,null),document.body); -//# sourceMappingURL=index.4b6d67ca.js.map diff --git a/assets/index.e5f6d834.js b/assets/index.e5f6d834.js new file mode 100644 index 00000000..c2341fc2 --- /dev/null +++ b/assets/index.e5f6d834.js @@ -0,0 +1,2 @@ +var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,s=(e,t)=>{for(var n in t||(t={}))a.call(t,n)&&i(e,n,t[n]);if(r)for(var n of r(t))o.call(t,n)&&i(e,n,t[n]);return e},l=(e,r)=>t(e,n(r));import{y as c,a as d,s as u,l as m,r as h,b as f,g as p,c as g,j as _,d as v,e as w,f as y,h as b,i as k,m as x,k as C,L as A,G as M,V as z,O as j,n as V,w as $,Z as E,o as I,z as O,T as L,E as P,C as D,p as S,A as T,q as N,t as B,u as R,v as H,x as F,B as W,D as J,F as U,N as G,R as Y}from"./vendor.e7812f3b.js";var q,Z=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","latest":"1.15.2","refs":{"mcdata_master":"13355f7","mcassets":"1.15.2"}},{"id":"1.16","latest":"1.16.5","refs":{"mcdata_master":"1.16.4","mcassets":"1.16.5","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","latest":"1.17.1","refs":{"mcdata_master":"1.17.1","mcassets":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","mcassets":"21w44a","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"recipe","url":"recipe","path":"recipes","schema":"recipe"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/placed_feature","url":"worldgen/placed-feature","category":"worldgen","schema":"placed_feature","minVersion":"1.18"},{"id":"worldgen/noise","url":"worldgen/noise","category":"worldgen","schema":"noise_parameters","minVersion":"1.18"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"},{"id":"block_definition","url":"assets/blockstate","path":"blockstates","category":"assets","schema":"block_definition","minVersion":"1.18"},{"id":"model","url":"assets/model","path":"models","category":"assets","schema":"model","minVersion":"1.18"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"block_definition","path":"blockstates","asset":true},{"id":"block_entity_type","minVersion":"1.18"},{"id":"block_predicate_type","minVersion":"1.18"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"model","path":"models","asset":true},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"recipe_serializer"},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"texture","path":"textures","asset":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/material_condition","minVersion":"1.18"},{"id":"worldgen/material_rule","minVersion":"1.18"},{"id":"worldgen/noise","minVersion":"1.18","dynamic":true},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/placed_feature","minVersion":"1.18","dynamic":true},{"id":"worldgen/placement_modifier_type","minVersion":"1.18"},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","maxVersion":"1.17","path":"processed/reports/biomes"},{"id":"worldgen/biome","minVersion":"1.18","path":"processed/reports/worldgen/minecraft/worldgen/biome"}]}');function K({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function X({icon:e,label:t,active:n,class:r,tooltip:a,tooltipLoc:o,onClick:i}){return d("div",{class:`btn${n?" active":""}${r?` ${r}`:""}${a?` tooltipped tip-${null!=o?o:"sw"}`:""}`,onClick:i,"aria-label":a},e&&ae[e],t&&d("span",null,t))}function Q({icon:e,label:t,large:n,doSelect:r,value:a,placeholder:o,onChange:i}){const s=void 0===i?()=>{}:e=>{const t=e.target.value;null==i||i(t)},l=u(null);return c((()=>{r&&l.current&&l.current.select()}),[r]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&ae[e],t&&d("span",null,t),d("input",{ref:l,type:"text",value:a,onChange:s,placeholder:o}))}function ee({size:e,draw:t,onDrag:n,onHover:r,onLeave:a},o){const i=u(null),s=u(),l=u(),d=u([0,0]),m=u(!1);c((()=>{const e=e=>{s.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===s.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==r||r(t,n))}if(!n)return;const t=e.offsetX-s.current[0],a=e.offsetY-s.current[1];0===t&&0===a||(d.current=[d.current[0]+t,d.current[1]+a],m.current||(cancelAnimationFrame(l.current),l.current=requestAnimationFrame((async()=>{m.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),m.current=!1})))),s.current=[e.offsetX,e.offsetY]},o=()=>{s.current=void 0},c=()=>{null==a||a()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",o),()=>{var n,r,a;null==(n=i.current)||n.removeEventListener("mousedown",e),null==(r=i.current)||r.removeEventListener("mousemove",t),null==(a=i.current)||a.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",o)}}),[...null!=o?o:[],i.current]);const h=u(),f=u(0);return h.current=async()=>{const n=i.current.getContext("2d"),r=e();i.current.width=r[0],i.current.height=r[1];const a=n.getImageData(0,0,r[0],r[1]),o=f.current+=1;await t(a),o===f.current&&n.putImageData(a,0,0)},{canvas:i,redraw:h.current}}function te(){const[e,t]=m(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function ne(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function re({icon:e,label:t,relative:n,tooltip:r,children:a}){const[o,i]=te();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(X,l(s({},{icon:e,label:t,tooltip:r}),{onClick:i})),o&&d("div",{class:"btn-group"},a))}!function(e){const t="Site",n="Generator";function r(e,t,n){ga("send","event",e,t,n)}function a(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){a(4,e),r(t,"set-language",e)},e.setTheme=function(e){a(1,e),r(t,"set-theme",e)},e.setVersion=function(e){a(3,e),r(n,"set-version",e)},e.setPreview=function(e){a(5,e),r(n,"set-preview",e)},e.setGenerator=function(e){a(6,e)},e.generatorEvent=function(e,t){r(n,e,t)}}(q||(q={}));const ae={alert:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"})),archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),duplicate:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M10.5 3a.75.75 0 01.75.75v1h1a.75.75 0 010 1.5h-1v1a.75.75 0 01-1.5 0v-1h-1a.75.75 0 010-1.5h1v-1A.75.75 0 0110.5 3z"}),d("path",{"fill-rule":"evenodd",d:"M6.75 0A1.75 1.75 0 005 1.75v7.5c0 .966.784 1.75 1.75 1.75h7.5A1.75 1.75 0 0016 9.25v-7.5A1.75 1.75 0 0014.25 0h-7.5zM6.5 1.75a.25.25 0 01.25-.25h7.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5z"}),d("path",{d:"M1.75 5A1.75 1.75 0 000 6.75v7.5C0 15.216.784 16 1.75 16h7.5A1.75 1.75 0 0011 14.25v-1.5a.75.75 0 00-1.5 0v1.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25h1.5a.75.75 0 000-1.5h-1.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),link_external:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),sort_asc:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 4.25a.75.75 0 01.75-.75h2.5a.75.75 0 010 1.5H.75A.75.75 0 010 4.25zm0 4a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5H.75A.75.75 0 010 8.25zm0 4a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5H.75a.75.75 0 01-.75-.75zm12.927-9.677a.25.25 0 00-.354 0l-3 3A.25.25 0 009.75 6H12v6.75a.75.75 0 001.5 0V6h2.25a.25.25 0 00.177-.427l-3-3z"})),sort_desc:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 4.25a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5H.75A.75.75 0 010 4.25zm0 4a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5H.75A.75.75 0 010 8.25zm0 4a.75.75 0 01.75-.75h2.5a.75.75 0 010 1.5H.75a.75.75 0 01-.75-.75z"}),d("path",{d:"M13.5 10h2.25a.25.25 0 01.177.427l-3 3a.25.25 0 01-.354 0l-3-3A.25.25 0 019.75 10H12V3.75a.75.75 0 011.5 0V10z"})),stack:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.122.392a1.75 1.75 0 011.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 01-1.756 0L2.119 5.456a1.25 1.25 0 010-2.162L7.122.392zM8.125 1.69a.25.25 0 00-.25 0l-4.63 2.685 4.63 2.685a.25.25 0 00.25 0l4.63-2.685-4.63-2.685zM1.601 7.789a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0L1.874 8.814A.75.75 0 011.6 7.789zm0 3.5a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0l-5.248-3.044a.75.75 0 01-.273-1.025z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),terminal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function oe({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},ae.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}function ie(e,t,n){const r=e=>{const r=e.onChange&&(t=>{var r;const a=t.target.value;null==(r=e.onChange)||r.call(e,n(a))}),a=e.onEnter&&(t=>{var r;if("Enter"===t.key){const a=t.target.value;null==(r=e.onEnter)||r.call(e,n(a))}});return d("input",s(s({},e),{type:t,onChange:r,onKeyDown:a}))};return r.displayName=e,r}const se=ie("TextInput","text",(e=>e)),le=ie("NumberInput","number",(e=>Number(e))),ce=ie("RangeInput","range",(e=>Number(e)));let de;const ue={},me=function(e,t){if(!t)return e();if(void 0===de){const e=document.createElement("link").relList;de=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in ue)return;ue[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const r=document.createElement("link");return r.rel=t?"stylesheet":de,t||(r.as="script",r.crossOrigin=""),r.href=e,document.head.appendChild(r),t?new Promise(((e,t)=>{r.addEventListener("load",e),r.addEventListener("error",t)})):void 0}))).then((()=>e()))};var he=JSON.parse('{"add":"Add","add_bottom":"Add to bottom","add_top":"Add to top","advancement":"Advancement","assets":"Assets","block_definition":"Blockstate","changelog.search":"Search changes","collapse":"Collapse","collapse_all":"Hold %0% to collapse all","configure_layers":"Configure layers","copy":"Copy","copied":"Copied!","copy_context":"Copy context","dimension_type":"Dimension Type","dimension":"Dimension","disabled":"Disabled","download":"Download","duplicate":"Duplicate","enabled":"Enabled","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","expand":"Expand","expand_all":"Hold %0% to expand all","feature.decorated.decorators":"Decorators","feature.decorated.decorators.entry":"Decorator","follow_reference":"Follow reference","format.json":"JSON","format.yaml":"YAML","fields":"Fields","generate_new_seed":"Generate new seed","github":"GitHub","hide_output":"Hide output","hide_preview":"Hide preview","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.minified":"Minified","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","layer.biomes":"Biomes","layer.temperature":"Temperature","layer.humidity":"Humidity","layer.continentalness":"Continentalness","layer.erosion":"Erosion","layer.weirdness":"Weirdness","layer.offset":"Offset","layer.factor":"Factor","layer.jaggedness":"Jaggedness","loot_table":"Loot Table","model":"Model","more":"More","move_down":"Move down","move_up":"Move up","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","output_settings":"Output settings","predicate":"Predicate","recipe":"Recipe","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme":"Theme","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.changelog":"Technical Changelog","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","title.sounds":"Sound Explorer","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","remove":"Remove","search":"Search","show_output":"Show output","show_preview":"Show preview","sounds.play":"Play","sounds.play_sound":"Play sound","sounds.play_all":"Play all","sounds.search":"Search sounds","sounds.download_function":"Download Mcfunction","sounds.delay":"Delay","sounds.pitch":"Pitch","sounds.volume":"Volume","sounds.copy_command":"Copy command","sounds.add_sound":"Add sound","sounds.remove_sound":"Remove sound","sounds.unknown_sound":"Unknown sound","sounds.loading_sound":"Loading sound","source_placeholder":"Paste raw content here","switch_generator":"Switch generator","terrain_settings":"Terrain settings","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/placed_feature":"Placed Feature","worldgen/noise":"Noise","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool","zoom_in":"Zoom in","zoom_out":"Zoom out"}'),fe=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:he});const pe={fallback:he};function ge(e,t,...n){var r,a,o,i,s;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(s=null!=(i=null!=(o=null==(r=pe[e])?void 0:r[t])?o:null==(a=pe.en)?void 0:a[t])?i:pe.fallback[t])?s:t,n)}async function _e(e){const t=Z.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/cs.json":return me((()=>import("./cs.651d27b2.js")),void 0);case"../locales/de.json":return me((()=>import("./de.1d005dc8.js")),void 0);case"../locales/en.json":return me((()=>Promise.resolve().then((function(){return fe}))),void 0);case"../locales/es.json":return me((()=>import("./es.d3abba45.js")),void 0);case"../locales/fr.json":return me((()=>import("./fr.f5531eea.js")),void 0);case"../locales/it.json":return me((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return me((()=>import("./ja.2d7ab812.js")),void 0);case"../locales/pl.json":return me((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return me((()=>import("./pt.1a04bd2d.js")),void 0);case"../locales/ru.json":return me((()=>import("./ru.3104e71e.js")),void 0);case"../locales/sk.json":return me((()=>import("./sk.96bbf351.js")),void 0);case"../locales/zh-cn.json":return me((()=>import("./zh-cn.b233fc7e.js")),void 0);case"../locales/zh-tw.json":return me((()=>import("./zh-tw.298bd51e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),r=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/cs.json":return me((()=>import("./cs.37c115ad.js")),void 0);case"../../node_modules/@mcschema/locales/src/de.json":return me((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return me((()=>import("./en.e6e6bb17.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return me((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return me((()=>import("./fr.e316b1e2.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return me((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return me((()=>import("./ja.3170354d.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return me((()=>import("./pl.ae1f6791.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return me((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return me((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/sk.json":return me((()=>import("./sk.d4265232.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return me((()=>import("./zh-cn.4129665a.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return me((()=>import("./zh-tw.292626d0.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);pe[e]=s(s({},n.default),r.default)}function ve(e){return"object"==typeof e&&null!==e}const we=e=>("0"+e.toString(16)).substr(-2);function ye(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,we).join("")}function be(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function ke(e){const t=Math.floor(4294967296*Math.random())-2147483648,n=e.get(new f.Path(["dimensions"]));e.set(new f.Path(["seed"]),t,!0),"object"==typeof n&&null!==n&&Object.keys(n).forEach((n=>{e.set(new f.Path(["dimensions",n,"generator","seed"]),t,!0),e.set(new f.Path(["dimensions",n,"generator","biome_source","seed"]),t,!0)})),e.set(new f.Path(["generator","seed"]),t,!0),e.set(new f.Path(["generator","biome_source","seed"]),t)}function xe(e){let t=0;for(let n=0;n=0&&(e=e.slice(0,t)),Ce(e)}function Me(e){const t=Ae(e).replace(/^\//,"").replace(/\/$/,"");return Z.generators.find((e=>e.url===t))}function ze(e){const t=e.indexOf("?");return t>=0?(e=e.slice(t+1),new Map(e.split("&").map((e=>{const t=e.indexOf("=");return-1===t?[e,"true"]:[decodeURIComponent(e.slice(0,t)),decodeURIComponent(e.slice(t+1))]})))):new Map}function je(e,t){const n=p(),r=ze(n);Object.entries(e).forEach((([e,t])=>{void 0===t?r.delete(e):r.set(e,t)}));const a=Array.from(r).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`));g(`${t?Ce(t):Ae(n)}${0===a.length?"":`?${a.join("&")}`}`,!0)}function Ve(e){const t=Math.abs(xe(e));return[t%256,(t>>8)%256,(t>>16)%256]}function $e(e){return e*e}function Ee(e,t,n){return Math.max(e,Math.min(t,n))}function Ie(e,t,n){return n<0?e:n>1?t:Oe(n,e,t)}function Oe(e,t,n){return t+e*(n-t)}function Le(e){return e instanceof Error?e.message:`${e}`}const Pe=h();function De(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,r;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=0;rasync function(e,t){const n=await(await fetch(`${Te}/${e.id}/index.json`)).json();return(await Promise.all(n.map(((n,r)=>async function(e,t,n,r){return function(e){return e.split("\n\n").map((e=>{const t=e.indexOf("|");return{tags:e.substring(0,t).trim().split(" "),content:e.slice(t+1).trim().replaceAll("->","→").replaceAll("\n...\n","\n\n")}}))}(await(await fetch(`${Te}/${e.id}/${t.id}.md`)).text()).map((a=>s({version:t,group:e,order:1e3*n+r},a)))}(e,Re(n),t,r))))).flat()}(Re(e),t))))).flat().map((e=>l(s({},e),{tags:[e.group.id,...e.tags]})))}return Ne}function Re(e){return"string"==typeof e?{id:e,article:e.match(/\d\dw\d\d[a-z]/)?"minecraft-snapshot-"+e:e.match(/\d+\.\d+(\.\d+)?-pre[0-9]+/)?"minecraft-"+e.replaceAll(".","-").replaceAll("pre","pre-release-"):null}:ve(e)?e:{id:"unknown",article:null}}const He=["1.15","1.16","1.17","1.18"],Fe={},We={},Je={1.15:_,1.16:v,1.17:w,1.18:y};let Ue,Ge;async function Ye(e){return Fe[e]||(Fe[e]=(async()=>{try{const t=Je[e].getCollections(),n={};await async function(e,t,n){const r=Z.versions.find((t=>t.id===e));if(!r)return void console.error(`[fetchData] Unknown version ${r} in ${JSON.stringify(Z.versions)}`);console.debug(`[fetchData] ${JSON.stringify(r)}`),r.dynamic&&await Promise.all(Qe.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${r.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const r of await t.keys())e(r.url)&&n.push(t.delete(r));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${Le(t)}`)}}((t=>t.startsWith(`${e.url}/${r.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)})));await Promise.all([et(r,t),tt(r,n),nt(r,t),rt(r,t)])}(e,t,n);const r=Je[e].getSchemas(t);return Fe[e]={collections:t,schemas:r,blockStates:n},Fe[e]}catch(t){throw new Error(`Cannot get version "${e}": ${Le(t)}`)}})()),Fe[e]}function qe(e,t,n){const r=Z.versions.findIndex((t=>t.id===e)),a=t?Z.versions.findIndex((e=>e.id===t)):0,o=n?Z.versions.findIndex((e=>e.id===n)):Z.versions.length-1;return a<=r&&r<=o}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const Ze="https://raw.githubusercontent.com/Arcensoth/mcdata",Ke="https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets",Xe="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",Qe=[{id:"mcdata_master",hash:"a46bcc659c557faef6fe189c5ef864da79f8e6d0",url:Ze},{id:"vanilla_datapack_summary",hash:"d2b06eedd26642f6d93c369b263aca491ec40459",url:Xe}];async function et(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=Z.registries.filter((e=>!e.dynamic&&!e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));if(qe(e.id,void 0,"1.15")){const a=`${Ze}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await it(a,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var r;t.register(n.id,null!=(r=e[n.id])?r:[])}))}catch(r){console.warn("Error occurred while fetching registries:",Le(r))}}else await Promise.all(n.map((async n=>{try{const r=n.path?`${Ze}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${Ze}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await it(r,(e=>e.values)))}catch(r){console.warn(`Error occurred while fetching registry ${n.id}:`,Le(r))}})))}async function tt(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),qe(e.id,void 0,"1.16")){const r=qe(e.id,void 0,"1.15")?`${Ze}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${Ze}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await it(r,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Le(n))}}else{const r=`${Ze}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await it(r);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Le(n))}}}async function nt(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=Z.registries.filter((e=>e.dynamic&&!e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));if(qe(e.id,"1.16")){const a=`${Xe}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await it(a);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(r){console.warn("Error occurred while fetching dynamic registries:",Le(r))}}qe(e.id,"1.18")&&(t.register("worldgen/noise",st),t.register("worldgen/placed_feature",lt))}async function rt(e,t){console.debug(`[fetchAssetsRegistries] ${e.id}`);const n=Z.registries.filter((e=>e.asset)).filter((t=>qe(e.id,t.minVersion,t.maxVersion)));await Promise.all(n.map((async n=>{var r;try{const a=async t=>{const n=`${Ke}/${e.refs.mcassets}/assets/minecraft/${t}/_list.json`,r=await it(n);if(0===r.directories.length)return r.files;const o=await Promise.all(r.directories.map((async e=>(await a(`${t}/${e}`)).map((t=>`${e}/${t}`)))));return[...r.files,...o.flat()]},o=(await a(null!=(r=n.path)?r:n.id)).filter((e=>e.endsWith(".json")||e.endsWith(".png"))).map((e=>`minecraft:${e.replace(/\.(json|png)$/,"")}`));t.register(n.id,o)}catch(a){console.warn(`Error occurred while fetching assets registry ${n.id}:`,Le(a))}})))}async function at(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const r=Z.versions.find((t=>t.id===e));try{const a=["blockstates","models"].includes(t)?`${Ke}/${r.refs.mcassets}/assets/minecraft/${t}/${n}.json`:`${Xe}/${r.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,o=await fetch(a);if("worldgen/noise_settings"===t&&"1.18"===e){let e=await o.text();e=e.replaceAll('"max_threshold": Infinity','"max_threshold": 100');const t=JSON.parse(e);return"overworld"!==n&&"large_biomes"!==n&&(t.noise.terrain_shaper={offset:0,factor:0,jaggedness:0}),t}return await o.json()}catch(a){throw new Error(`Error occurred while fetching ${t} preset ${n}: ${Le(a)}`)}}function ot(e){return`https://misode-cors-anywhere.herokuapp.com/https://resources.download.minecraft.net/${e.slice(0,2)}/${e}`}async function it(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const r=await n.match(e);if(r&&r.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await r.json();console.debug(`[getData] fetching data ${e}`);const a=await fetch(e),o=t(await a.json());return await n.put(e,new Response(JSON.stringify(o))),o}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${Le(n)}`),console.debug(`[getData] fetching data ${e}`);const r=await fetch(e);return t(await r.json())}}const st=["minecraft:aquifer_barrier","minecraft:aquifer_fluid_level_floodedness","minecraft:aquifer_fluid_level_spread","minecraft:aquifer_lava","minecraft:badlands_pillar","minecraft:badlands_pillar_roof","minecraft:badlands_surface","minecraft:calcite","minecraft:cave_cheese","minecraft:cave_entrance","minecraft:cave_layer","minecraft:clay_bands_offset","minecraft:continentalness","minecraft:continentalness_large","minecraft:erosion","minecraft:erosion_large","minecraft:gravel","minecraft:gravel_layer","minecraft:ice","minecraft:iceberg_pillar","minecraft:iceberg_pillar_roof","minecraft:iceberg_surface","minecraft:jagged","minecraft:nether_state_selector","minecraft:nether_wart","minecraft:netherrack","minecraft:noodle","minecraft:noodle_ridge_a","minecraft:noodle_ridge_b","minecraft:noodle_thickness","minecraft:offset","minecraft:ore_gap","minecraft:ore_vein_a","minecraft:ore_vein_b","minecraft:ore_veininess","minecraft:packed_ice","minecraft:patch","minecraft:pillar","minecraft:pillar_rareness","minecraft:pillar_thickness","minecraft:powder_snow","minecraft:ridge","minecraft:soul_sand_layer","minecraft:spaghetti_2d","minecraft:spaghetti_2d_elevation","minecraft:spaghetti_2d_modulator","minecraft:spaghetti_2d_thickness","minecraft:spaghetti_3d_1","minecraft:spaghetti_3d_2","minecraft:spaghetti_3d_rarity","minecraft:spaghetti_3d_thickness","minecraft:spaghetti_roughness","minecraft:spaghetti_roughness_modulator","minecraft:surface","minecraft:surface_secondary","minecraft:surface_swamp","minecraft:temperature","minecraft:temperature_large","minecraft:vegetation","minecraft:vegetation_large"],lt=["minecraft:acacia_checked","minecraft:amethyst_geode","minecraft:bamboo","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_checked","minecraft:birch_tall","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_old_growth","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:cave_vines","minecraft:chorus_plant","minecraft:classic_vines_cave_feature","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi","minecraft:dark_forest_vegetation","minecraft:dark_oak_checked","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:dripstone_cluster","minecraft:end_gateway_return","minecraft:end_island_decorated","minecraft:end_spike","minecraft:fancy_oak_bees","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_checked","minecraft:flower_default","minecraft:flower_flower_forest","minecraft:flower_forest_flowers","minecraft:flower_meadow","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flowers","minecraft:forest_rock","minecraft:fossil_lower","minecraft:fossil_upper","minecraft:freeze_top_layer","minecraft:glow_lichen","minecraft:glowstone","minecraft:glowstone_extra","minecraft:grass_bonemeal","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava_surface","minecraft:lake_lava_underground","minecraft:large_basalt_columns","minecraft:large_dripstone","minecraft:lush_caves_ceiling_vegetation","minecraft:lush_caves_clay","minecraft:lush_caves_vegetation","minecraft:mega_jungle_tree_checked","minecraft:mega_pine_checked","minecraft:mega_spruce_checked","minecraft:monster_room","minecraft:monster_room_deep","minecraft:mushroom_island_vegetation","minecraft:nether_sprouts","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_checked","minecraft:ore_ancient_debris_large","minecraft:ore_andesite_lower","minecraft:ore_andesite_upper","minecraft:ore_blackstone","minecraft:ore_clay","minecraft:ore_coal_lower","minecraft:ore_coal_upper","minecraft:ore_copper","minecraft:ore_copper_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diamond_buried","minecraft:ore_diamond_large","minecraft:ore_diorite_lower","minecraft:ore_diorite_upper","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_lower","minecraft:ore_gold_nether","minecraft:ore_granite_lower","minecraft:ore_granite_upper","minecraft:ore_gravel","minecraft:ore_gravel_nether","minecraft:ore_infested","minecraft:ore_iron_middle","minecraft:ore_iron_small","minecraft:ore_iron_upper","minecraft:ore_lapis","minecraft:ore_lapis_buried","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_redstone_lower","minecraft:ore_soul_sand","minecraft:ore_tuff","minecraft:patch_berry_common","minecraft:patch_berry_rare","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_crimson_roots","minecraft:patch_dead_bush","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga","minecraft:patch_grass_taiga_2","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_soul_fire","minecraft:patch_sugar_cane","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sunflower","minecraft:patch_tall_grass","minecraft:patch_tall_grass_2","minecraft:patch_waterlily","minecraft:pine_checked","minecraft:pine_on_snow","minecraft:pointed_dripstone","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_old_growth","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:rooted_azalea_tree","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spore_blossom","minecraft:spring_closed","minecraft:spring_closed_double","minecraft:spring_delta","minecraft:spring_lava","minecraft:spring_lava_frozen","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_checked","minecraft:spruce_on_snow","minecraft:super_birch_bees","minecraft:super_birch_bees_0002","minecraft:trees_badlands","minecraft:trees_birch","minecraft:trees_birch_and_oak","minecraft:trees_flower_forest","minecraft:trees_grove","minecraft:trees_jungle","minecraft:trees_meadow","minecraft:trees_old_growth_pine_taiga","minecraft:trees_old_growth_spruce_taiga","minecraft:trees_plains","minecraft:trees_savanna","minecraft:trees_snowy","minecraft:trees_sparse_jungle","minecraft:trees_swamp","minecraft:trees_taiga","minecraft:trees_water","minecraft:trees_windswept_forest","minecraft:trees_windswept_hills","minecraft:trees_windswept_savanna","minecraft:twisting_vines","minecraft:underwater_magma","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi","minecraft:weeping_vines"];let ct=null;const dt={},ut={};async function mt(){return ct||(ct=async function(){try{const e=await fetch("https://launchermeta.mojang.com/mc/game/version_manifest.json");return await e.json()}catch(e){throw new Error(`Error occurred while fetching version manifest: ${Le(e)}`)}}()),ct}async function ht(e){return dt[e]||(dt[e]=(async()=>{const t=await mt();return await async function(e,t){var n;const r=Z.versions.find((t=>t.id===e)),a=null!=(n=null==r?void 0:r.latest)?n:t.latest.snapshot;try{const e=await it(t.versions.find((e=>e.id===a)).url);return(await it(e.assetIndex.url)).objects}catch(o){throw new Error(`Error occurred while fetching assets for ${r}: ${Le(o)}`)}}(e,t)})()),dt[e]}async function ft(e){return ut[e]||(ut[e]=(async()=>{const t=await ht(e);return await async function(e,t){try{const e=t["minecraft/sounds.json"].hash;return await it(ot(e))}catch(n){throw new Error(`Error occurred while fetching sounds for ${e}: ${Le(n)}`)}}(e,t)})()),ut[e]}let pt=!1;const gt={temperature:[-1,1],humidity:[-1,1],continentalness:[-1.1,1],erosion:[-1,1],weirdness:[-1,1],offset:[-1,1],factor:[0,12],jaggedness:[0,1]};let _t,vt;async function wt(e,t){const n=[e,t.octaves,t.shaper.toJson(),`${t.seed}`,t.version];return De(n,_t)||(_t=Pe(n),vt=await async function(e,t){var n,r,a,o,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new j(e.biome);case"checkerboard":const n=(null!=(r=e.scale)?r:2)+2,l=null!=(o=null==(a=e.biomes)?void 0:a.length)?o:0;return{getBiome(t,r,a){var o;const i=(((t>>n)+(a>>n))%l+l)%l;return null==(o=e.biomes)?void 0:o[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?xt:kt;break;case"overworld":e="1.18"===t.version?await async function(){return(await at("1.18","dimension","overworld")).generator.biome_source}():e}if(e=f.DataModel.unwrapLists(e),"1.18"===t.version){await async function(){pt||(await V($),pt=!0,console.debug(`Loaded deepslate-rs from "${$}"`))}();const n=new Se,r=e=>"number"==typeof e?[e,e]:e,[a,o,i,l,c,d,u,m,h,f,p,g,_,v]=[[],[],[],[],[],[],[],[],[],[],[],[],[],[]];for(const t of e.biomes){const{temperature:e,humidity:s,continentalness:w,erosion:y,weirdness:b,depth:k,offset:x}=t.parameters;a.push(r(e)[0]),o.push(r(e)[1]),i.push(r(s)[0]),l.push(r(s)[1]),c.push(r(w)[0]),d.push(r(w)[1]),u.push(r(y)[0]),m.push(r(y)[1]),h.push(r(b)[0]),f.push(r(b)[1]),p.push(r(k)[0]),g.push(r(k)[1]),_.push(x),v.push(n.getOrPut(t.biome,Math.floor(2147483647*Math.random())))}const w=b(new Float64Array(a),new Float64Array(o),new Float64Array(i),new Float64Array(l),new Float64Array(c),new Float64Array(d),new Float64Array(u),new Float64Array(m),new Float64Array(h),new Float64Array(f),new Float64Array(p),new Float64Array(g),new Float64Array(_),new Int32Array(v)),y=k(t.seed,t.octaves.temperature.firstOctave,new Float64Array(t.octaves.temperature.amplitudes),t.octaves.humidity.firstOctave,new Float64Array(t.octaves.humidity.amplitudes),t.octaves.continentalness.firstOctave,new Float64Array(t.octaves.continentalness.amplitudes),t.octaves.erosion.firstOctave,new Float64Array(t.octaves.erosion.amplitudes),t.octaves.weirdness.firstOctave,new Float64Array(t.octaves.weirdness.amplitudes),t.octaves.shift.firstOctave,new Float64Array(t.octaves.shift.amplitudes));return{getBiome(e,t,r){var a;const o=x(w,y,e,e+1,1,t,t+1,1,r,r+1,1);return null!=(a=n.getA(o[0]))?a:"unknown"},getBiomes:(e,t,r,a,o,i,s,l,c)=>[...x(w,y,e,t,r,a,o,i,s,l,c)].map((e=>{var t;return null!=(t=n.getA(e))?t:"unknown"})),getClimate(e,n,r,a,o,i,l,c,d,u){const m=C(y,n,r,a,o,i,l,c,d,u),h=[];for(let f=0;f{var a;const o=e[`${n}_noise`];return o.firstOctave=Ee(null!=(a=o.firstOctave)?a:-7,-100,-1),new M(new z(t.seed+BigInt(r)),o)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,r,a){const o=n.map((e=>e.sample(t,a,0)));let i=1/0,s="";for(const{biome:n,parameters:l}of e.biomes){const e=$e(l.altitude-o[0])+$e(l.temperature-o[1])+$e(l.humidity-o[2])+$e(l.weirdness-o[3])+$e(l.offset);er.nextFloat(),nextInt:e=>r.nextInt(e),sampleInt(e){return Vt(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],r=s{It(t,null==e?void 0:e.decorator,n).forEach((t=>Et(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{Et(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var r,a;for(const o of null!=(r=null==e?void 0:e.features)?r:[])if(n.nextFloat()<(null!=(a=null==o?void 0:o.chance)?a:0))return void Et(t,o.feature,n);Et(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var r,a,o;Et(t,null==(o=null==e?void 0:e.features)?void 0:o[n.nextInt(null!=(a=null==(r=null==e?void 0:e.features)?void 0:r.length)?a:0)],n)}},Lt={chance:(e,t,n)=>{var r;return n.nextFloat()<1/(null!=(r=null==e?void 0:e.chance)?r:1)?[t]:[]},count:(e,t,n)=>{var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t)},count_extra:(e,t,n)=>{var r,a;let o=null!=(r=null==e?void 0:e.count)?r:1;return n.nextFloat(){var r;return new Array(n.sampleInt(null!=(r=null==e?void 0:e.count)?r:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const r=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var r;const a=Math.max(1,e.noise_factor),o=n.biomeInfoNoise.sample(t[0]/a,0,t[2]/a),i=Math.max(0,Math.ceil((o+(null!=(r=e.noise_offset)?r:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,r)=>{const a=4*Math.floor(r/4)+1+n.nextInt(3)+t[0];return[a,Math.max(n.seaLevel,Ct[Ee(0,63,a)]),4*Math.floor(r%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>It(t,null==e?void 0:e.outer,n).flatMap((t=>It(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var r,a,o,i;return jt(t,n.nextInt(null!=(r=null==e?void 0:e.spread)?r:0)+n.nextInt(null!=(a=null==e?void 0:e.spread)?a:0)-(null!=(o=e.spread)?o:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const r=3+n.nextInt(6);return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const r=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const r=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(r)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>jt(t,Math.max(n.seaLevel,Ct[Ee(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const r=Math.max(n.seaLevel,Ct[Ee(0,63,t[0])]);return jt(t,n.nextInt(2*r))},heightmap_world_surface:(e,t,n)=>jt(t,Math.max(n.seaLevel,Ct[Ee(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var r,a;if(0===n.nextInt((null!=(r=e.chance)?r:1)/10)){const r=n.nextInt(n.nextInt(248)+8);if(r[t],range:(e,t,n)=>{var r,a,o;return jt(t,n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0))},range_biased:(e,t,n)=>{var r,a,o;return jt(t,n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0)))},range_very_biased:(e,t,n)=>{var r,a,o,i;return jt(t,n.nextInt(n.nextInt(n.nextInt((null!=(r=null==e?void 0:e.maximum)?r:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(o=null==e?void 0:e.bottom_offset)?o:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>jt(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>jt(t,Ct[Ee(0,63,t[0])]),magma:(e,t,n)=>jt(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,r;const a=Ct[Ee(0,63,t[0])],o=a+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=a+(null!=(r=null==e?void 0:e.max_inclusive)?r:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var r;return 0===n.nextInt(null!=(r=e.chance)?r:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class Pt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new z(e);this.minLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new E(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,r,a){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(a).fill(null),this.xOffset=r}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),r=Math.floor(e%this.chunkWidth)/this.chunkWidth,a=this.fillNoiseColumn(n),o=this.fillNoiseColumn(n+1);for(let m=this.chunkCountY-1;m>=0;m-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[m*this.chunkHeight+e]=(i=n,s=r,l=a[m],c=a[m+1],d=o[m],u=o[m+1],Oe(s,Oe(i,l,c),Oe(i,d,u)))}var i,s,l,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),r=684.412*this.settings.sampling.xz_scale,a=684.412*this.settings.sampling.y_scale,o=r/this.settings.sampling.xz_factor,i=a/this.settings.sampling.y_factor,s=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let l=0;l<=this.chunkCountY;l+=1){let t=this.sampleAndClampNoise(e,l,this.mainPerlinNoise.getOctaveNoise(0).zo,r,a,o,i);const c=((1-2*l/this.chunkCountY+s)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=Ie(this.settings.top_slide.target,t,(this.chunkCountY-l-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=Ie(this.settings.bottom_slide.target,t,(l-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[l]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,r,a,o,i){let s=0,l=0,c=0,d=1;for(let u=0;u<16;u+=1){const m=E.wrap(e*r*d),h=E.wrap(t*a*d),f=E.wrap(n*r*d),p=a*d,g=this.minLimitPerlinNoise.getOctaveNoise(u);g&&(s+=g.sample(m,h,f,p,t*p)/d);const _=this.maxLimitPerlinNoise.getOctaveNoise(u);if(_&&(l+=_.sample(m,h,f,p,t*p)/d),u<8){const r=this.mainPerlinNoise.getOctaveNoise(u);r&&(c+=r.sample(E.wrap(e*o*d),E.wrap(t*i*d),E.wrap(n*o*d),i*d,t*i*d)/d)}d/=2}return Ie(s/512,l/512,(c/10+1)/2)}}const Dt={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let St,Tt,Nt=[];function Bt(e,t,n){var r,a,o;if(qe(n.version,"1.18")){const{settings:a,generator:o}=function(e,t){const n=I.fromJson(f.DataModel.unwrapLists(e));n.octaves=Ut(n);const r=[e,`${t.seed}`];if(!De(r,St)){St=Pe(r),Nt=[];const e=new j("unknown");Tt=new O(t.seed,e,n)}return{settings:n,generator:Tt}}(e,n),i=new Ht(-n.offset,n.width,a.noise.minY,a.noise.height);i.fill(o);const s=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class Ht{constructor(e,t,n,r){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,a)=>{const o=(e>>4)+a,i=Nt.find((e=>e.pos[0]===o));return i?(this.filled[a]=!0,i):new L(n,r,P.create(o,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,Nt.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const Ft=["biomes","temperature","humidity","continentalness","erosion","weirdness","offset","factor","jaggedness"],Wt=A.overworld(),Jt=({model:e,data:t,shown:n,lang:r,version:a})=>{var o;const[i,s]=m(2),[l,h]=m(void 0),[p,g]=m(new Set(["biomes"])),_=u([0,0]),v=u(1),w=u(void 0),y=BigInt(e.get(new f.Path(["generator","seed"]))),b=Ut(e.get(new f.Path(["generator","settings"]))),k=function(e){var t;if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return Wt;default:return A.fromJson({offset:0,factor:0,jaggedness:0})}return A.fromJson(f.DataModel.unwrapLists(null==(t=null==e?void 0:e.noise)?void 0:t.terrain_shaper))}(e.get(new f.Path(["generator","settings"]))),x=n?function(e,t,n){return JSON.stringify([e,t,n.toJson()])}(t,b,k):"",C=null==(o=t.type)?void 0:o.replace(/^minecraft:/,""),{canvas:M,redraw:z}=ee({size:()=>[200/v.current,200/v.current],async draw(e){const n={octaves:b,shaper:k,biomeColors:{},layers:p,offset:_.current,scale:i,seed:y,res:v.current,version:a};await async function(e,t,n){var r,a,o;const{biomeSource:i}=await wt(e,n),s=t.data,l=-Math.round(n.offset[0])-100+n.res/2,c=-Math.round(n.offset[1])-100+n.res/2,d=4*t.width/n.res,u=4/n.res,m=[l*n.scale,(200+l)*n.scale,n.res*n.scale],h=[c*n.scale,(200+c)*n.scale,n.res*n.scale],f=n.layers.has("biomes")?null==(r=i.getBiomes)?void 0:r.call(i,...m,64,65,1,...h):void 0,p=[...n.layers].filter((e=>"biomes"!==e)),g=0===p.length||null==(a=i.getClimate)?void 0:a.call(i,new Set(p),...m,64,65,1,...h);for(let _=0;_<200;_+=n.res)for(let e=0;e<200;e+=n.res){const t=e*d+_*u,r=_/n.res*200/n.res+e/n.res,a=(_+l)*n.scale,m=(e+c)*n.scale;let h=[50,50,50];if(n.layers.has("biomes"))h=yt(null!=(o=null==f?void 0:f[r])?o:i.getBiome(a,64,m),n.biomeColors);else if(g&&p[0]){const e=g[r][p[0]],[t,n]=gt[p[0]],a=(e-t)/(n-t)*256;h=[a,a,a]}s[t]=h[0],s[t+1]=h[1],s[t+2]=h[2],s[t+3]=255}}(t,e,n),4===v.current&&(clearTimeout(w.current),w.current=setTimeout((()=>{v.current=1,z()}),150))},async onDrag(e,t){_.current[0]=_.current[0]+200*e,_.current[1]=_.current[1]+200*t,clearTimeout(w.current),v.current="multi_noise"===C?4:1,z()},async onHover(e,n){const r={octaves:b,shaper:k,biomeColors:{},layers:p,offset:_.current,scale:i,seed:y,res:1,version:a},o=await async function(e,t,n,r){const{biomeSource:a}=await wt(e,r),[o,i]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],r);return a.getBiome(o,64,i)}(t,Math.floor(200*e),Math.floor(200*n),r);h(o)},onLeave(){h(void 0)}},[x,i,y,p]);c((()=>{n&&(v.current="multi_noise"===C?4:1,z())}),[x,i,y,p,n]);const j=e=>{_.current[0]=_.current[0]*i/e,_.current[1]=_.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},l&&d(X,{label:l,class:"no-pointer"}),"multi_noise"===C&&d(re,{icon:"stack",tooltip:ge(r,"configure_layers")},Ft.map((e=>{const t=p.has(e);return d(X,{label:ge(r,`layer.${e}`),active:t,tooltip:ge(r,t?"enabled":"disabled"),onClick:t=>{g(new Set([e])),t.stopPropagation()}})}))),("multi_noise"===C||"checkerboard"===C)&&d(S,null,d(X,{icon:"dash",tooltip:ge(r,"zoom_out"),onClick:()=>j(1.5*i)}),d(X,{icon:"plus",tooltip:ge(r,"zoom_in"),onClick:()=>j(i/1.5)})),"multi_noise"===C&&d(X,{icon:"sync",tooltip:ge(r,"generate_new_seed"),onClick:()=>ke(e)})),d("canvas",{ref:M,width:"200",height:"200"}))};function Ut(e){if("string"!=typeof e){const t=I.fromJson(f.DataModel.unwrapLists(e));e=0===t.noise.densityFactor&&-.030078125===t.noise.densityOffset?"minecraft:nether":"minecraft:overworld"}switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}}const Gt=({data:e,version:t,shown:n,lang:r})=>{const[a,o]=m(4),[i,s]=m(be()),{canvas:l,redraw:u}=ee({size:()=>[16*a,16*a],async draw(n){Mt(e,n,{seed:i,version:t,size:[16*a,128,16*a]})}}),h=JSON.stringify(e);return c((()=>{n&&u()}),[h,a,i,n]),d(S,null,d("div",{class:"controls"},d(X,{icon:"dash",tooltip:ge(r,"zoom_out"),onClick:()=>o(Math.min(16,a+1))}),d(X,{icon:"plus",tooltip:ge(r,"zoom_in"),onClick:()=>o(Math.max(1,a-1))}),d(X,{icon:"sync",tooltip:ge(r,"generate_new_seed"),onClick:()=>s(be())})),d("canvas",{ref:l,width:"64",height:"64"}))},Yt=({lang:e,data:t,shown:n,version:r})=>{const[a,o]=m(be()),[i,s]=m(2),l=u([0,0]),h=JSON.stringify([t]),{canvas:p,redraw:g}=ee({size:()=>[256,256],async draw(e){const n={offset:l.current,scale:i,seed:a,version:r};!function(e,t,n){const r=new z(n.seed),a=D.fromJson(f.DataModel.unwrapLists(e)),o=new M(r,a),i=-n.offset[0]-100,s=-n.offset[1]-100,l=t.data;for(let c=0;c<256;c+=1)for(let e=0;e<256;e+=1){const t=4*c+4*e*256,r=(c+i)*n.scale,a=(e+s)*n.scale,d=128*(o.sample(r,a,0)+1);l[t]=d,l[t+1]=d,l[t+2]=d,l[t+3]=255}}(t,e,n)},async onDrag(e,t){l.current[0]=l.current[0]+256*e,l.current[1]=l.current[1]+256*t,g()}},[h,i,a]);c((()=>{n&&g()}),[h,i,a,n]);const _=e=>{l.current[0]=l.current[0]*i/e,l.current[1]=l.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},d(X,{icon:"dash",tooltip:ge(e,"zoom_out"),onClick:()=>_(1.5*i)}),d(X,{icon:"plus",tooltip:ge(e,"zoom_in"),onClick:()=>_(i/1.5)}),d(X,{icon:"sync",tooltip:ge(e,"generate_new_seed"),onClick:()=>o(be())})),d("canvas",{ref:p,width:"256",height:"256"}))},qt=({lang:e,data:t,shown:n,version:r})=>{var a,o;const i=ge.bind(null,e),[s,l]=m(be()),[h,f]=m(.2),[p,g]=m(.1),[_,v]=m(void 0),w=u(0),y=JSON.stringify([t,h,p]),b=null!=(o=null==(a=null==t?void 0:t.noise)?void 0:a.height)?o:256,{canvas:k,redraw:x}=ee({size:()=>[b,b],async draw(e){const n={biomeDepth:p,biomeScale:h,offset:w.current,width:e.width,seed:s,version:r};Bt(t,e,n)},async onDrag(e){w.current+=e*b,x()},async onHover(e,n){var r,a;const o=b-Math.max(1,Math.ceil(n*b))+(null!=(a=null==(r=null==t?void 0:t.noise)?void 0:r.min_y)?a:0);v(`${o}`)},onLeave(){v(void 0)}},[y,s]);return c((()=>{n&&x()}),[y,s,n]),d(S,null,d("div",{class:"controls"},_&&d(X,{label:`Y = ${_}`,class:"no-pointer"}),qe(r,void 0,"1.17")&&d(re,{icon:"gear",tooltip:ge(e,"terrain_settings")},d(Q,{label:i("preview.scale"),value:`${h}`,onChange:e=>f(Number(e))}),d(Q,{label:i("preview.depth"),value:`${p}`,onChange:e=>g(Number(e))})),d(X,{icon:"sync",tooltip:ge(e,"generate_new_seed"),onClick:()=>l(be())})),d("canvas",{ref:k,width:b,height:b}))},Zt=["dimension","worldgen/noise","worldgen/noise_settings","worldgen/configured_feature"];function Kt({lang:e,model:t,version:n,id:r,shown:a}){var o;const[,i]=m(0);if(ne(t,(()=>{i((e=>e+1))})),"dimension"===r&&(null==(o=null==t?void 0:t.get(new f.Path(["generator","type"])))?void 0:o.endsWith("noise"))){const r=t.get(new f.Path(["generator","biome_source"]));if(r)return d(Jt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/noise"===r&&t){const r=t.get(new f.Path([]));if(r)return d(Yt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/noise_settings"===r&&t){const r=t.get(new f.Path([]));if(r)return d(qt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}if("worldgen/configured_feature"===r&&t){const r=t.get(new f.Path([]));if(r)return d(Gt,s({},{lang:e,model:t,version:n,shown:a,data:r}))}return d(S,null)}const Xt={base:({},e,t)=>t,choice({switchNode:e},t,n,r){return e.hook(this,t,n,r)},list({children:e},t,n,r){if(!Array.isArray(n))return n;const a=n.map(((n,a)=>e.hook(this,t.push(a),n.node,r)));for(const o of Object.getOwnPropertySymbols(n))a[o]=n[o];return a},map({children:e,config:t},n,r,a){var o,i;if(void 0===r)return;const s="block_state_map"===(null==(o=t.validation)?void 0:o.validator)?null==(i=a.blockStates)?void 0:i[f.relativePath(n,t.validation.params.id).get()]:null,l={};Object.keys(r).forEach((t=>{var o;s&&!Object.keys(null!=(o=s.properties)?o:{}).includes(t)||(l[t]=e.hook(this,n.push(t),r[t],a))}));for(const c of Object.getOwnPropertySymbols(r))l[c]=r[c];return l},object({getActiveFields:e},t,n,r){if(null==n||"object"!=typeof n)return n;const a={},o=e(t);Object.keys(o).filter((e=>o[e].enabled(t))).forEach((e=>{const i=o[e].hook(this,t.push(e),n[e],r);null!=i&&(a[e]=i)}));for(const i of Object.getOwnPropertySymbols(n))a[i]=n[i];return a}};var Qt,en;(en=Qt||(Qt={})).ID_LANGUAGE="language",en.ID_THEME="theme",en.ID_VERSION="schema_version",en.ID_INDENT="indentation",en.ID_FORMAT="output_format",en.ID_SOUNDS_VERSION="minecraft_sounds_version",en.getLanguage=function(){var e;return null!=(e=localStorage.getItem(en.ID_LANGUAGE))?e:"en"},en.getTheme=function(){var e;return null!=(e=localStorage.getItem(en.ID_THEME))?e:"dark"},en.getVersion=function(){const e=localStorage.getItem(en.ID_VERSION);return e&&He.includes(e)?e:"1.17"},en.getIndent=function(){var e;return null!=(e=localStorage.getItem(en.ID_INDENT))?e:"2_spaces"},en.getFormat=function(){var e;return null!=(e=localStorage.getItem(en.ID_FORMAT))?e:"json"},en.getSoundsVersion=function(){var e;return null!=(e=localStorage.getItem(en.ID_SOUNDS_VERSION))?e:"latest"},en.setLanguage=function(e){e&&localStorage.setItem(en.ID_LANGUAGE,e)},en.setTheme=function(e){e&&localStorage.setItem(en.ID_THEME,e)},en.setVersion=function(e){e&&localStorage.setItem(en.ID_VERSION,e)},en.setIndent=function(e){e&&localStorage.setItem(en.ID_INDENT,e)},en.setFormat=function(e){e&&localStorage.setItem(en.ID_FORMAT,e)},en.setSoundsVersion=function(e){e&&localStorage.setItem(en.ID_SOUNDS_VERSION,e)};const tn={"2_spaces":2,"4_spaces":4,tabs:"\t",minified:void 0},nn={json:{parse:N.parse,stringify:(e,t)=>N.stringify(e,null,t)},yaml:{parse:B.load,stringify:(e,t)=>B.dump(e,{flowLevel:void 0===t?0:-1,indent:"string"==typeof t?4:t})}};function rn({lang:e,name:t,model:n,blockStates:r,doCopy:a,doDownload:o,doImport:i,copySuccess:s,onError:l}){const h=ge.bind(null,e),[p,g]=m(Qt.getIndent()),[_,v]=m(Qt.getFormat()),w=u(null),y=u(null),b=u(),k=T(((e,t)=>{const n=e.schema.hook(Xt,new f.ModelPath(e),e.data,{blockStates:t});return nn[_].stringify(n,tn[p])+"\n"}),[p,_]);c((()=>{b.current=()=>{if(n&&r)try{const e=k(n,r);e.length>=1e4?w.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":w.current.value=e}catch(e){l(`Error getting JSON output: ${Le(e)}`),console.error(e),w.current.value=""}}})),ne(n,(()=>{b.current()})),c((()=>{n&&b.current()}),[n]),c((()=>{b.current()}),[p,_]);c((()=>{a&&n&&r&&navigator.clipboard.writeText(k(n,r)).then((()=>{s()}))}),[a]),c((()=>{if(o&&n&&r&&y.current){const e=encodeURIComponent(k(n,r));y.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),y.current.setAttribute("download",`${t}.${_}`),y.current.click()}}),[o]),c((()=>{i&&w.current&&(w.current.value="",w.current.select())}),[i]);return d(S,null,d("div",{class:"controls"},d(re,{icon:"gear",tooltip:h("output_settings")},Object.entries(tn).map((([e])=>d(X,{label:h(`indentation.${e}`),active:p===e,onClick:()=>{return t=e,Qt.setIndent(t),void g(t);var t}}))),d("hr",null),Object.keys(nn).map((e=>d(X,{label:h(`format.${e}`),active:_===e,onClick:()=>{return t=e,Qt.setFormat(t),void v(t);var t}}))))),d("textarea",{ref:w,class:"source",onBlur:()=>{if(0!==w.current.value.length)try{const e=nn[_].parse(w.current.value);null==n||n.reset(f.DataModel.wrapLists(e),!1)}catch(e){l(`Error importing: ${Le(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:h("source_placeholder")}),d("a",{ref:y,style:"display: none;"}))}class an extends f.DataModel{constructor(e,t,n,r){super(e),this.mapper=t,this.getter=n,this.setter=r}map(e){return this.mapper(e)}get(e){return this.getter(e)}set(e,t,n){return this.setter(e,t,n)}}const on=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","recipe.type","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type","block_predicate.type","material_rule.type","material_condition.type"],sn=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],ln=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state","material_rule.block.result_state"],cn=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome","block_predicate.type","material_rule.type","material_condition.type"],dn=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],un=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset","block_predicate.matching_blocks.offset","block_predicate.matching_fluids.offset","model_element.from","model_element.to","model_element.rotation.origin","model_element.faces.uv","item_transform.rotation","item_transform.translation","item_transform.scale"],mn=["noise_settings.surface_rule","noise_settings.noise.terrain_shaper"],hn=new f.DataModel(f.MapNode(f.StringNode(),f.StringNode()),{historyMax:0});function fn({model:e,lang:t,version:n,blockStates:r}){var a;const o=new f.ModelPath(e),[i,s,l]=e.schema.hook(pn,o,Pe(e.data),t,n,r,{});return(null==(a=null==s?void 0:s.props)?void 0:a.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(o)}-node`,"data-category":e.schema.category(o)},d("div",{class:"node-header"},i,s),d("div",{class:"node-body"},l)):l}const pn={base:()=>[null,null,null],boolean:(e,t,n,r,a,o,i)=>[null,d(vn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null],choice({choices:e,config:t,switchNode:n},r,a,o,i,s,l){const c=n.activeCase(r,!0),u=(null==t?void 0:t.context)?new f.ModelPath(r.getModel(),new f.Path(r.getArray(),[t.context])):r,[m,h,p]=c.node.hook(this,u,a,o,i,s,l);if(1===e.length)return[m,h,p];const g=(null==t?void 0:t.choiceContext)?new f.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new f.Path([],[t.context]):r,_=d("select",{value:c.type,onChange:n=>(n=>{var o;const i=null!=(o=e.find((e=>e.type===n)))?o:c,s=i.node.default(),l=i.change?i.change(f.DataModel.unwrapLists(a)):"feature"===t.choiceContext&&"minecraft:decorated"===(null==s?void 0:s.type)?s.config.feature:s;r.model.set(r,f.DataModel.wrapLists(l))})(n.target.value)},e.map((e=>d("option",{value:e.type},Cn(o,g.contextPush(e.type))))));return[m,d(S,null,_,h),p]},list({children:e,config:t},n,r,a,o,i,c){const{expand:u,collapse:h,isToggled:p}=_n(),[g,_]=m(50),v=n.getContext().join(".");if(un.includes(v)){return[d(S,null,[...Array(t.maxLength)].map(((e,t)=>d(An,{lang:a,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(S,null,[...Array(t.maxLength)].map(((t,s)=>{var l;return e.hook(this,n.modelPush(s),null==(l=null==r?void 0:r[s])?void 0:l.node,a,o,i,c)[1]}))),null]}return[null,d("button",{class:"add tooltipped tip-se","aria-label":ge(a,"add_top"),onClick:()=>{Array.isArray(r)||(r=[]);const t=f.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:ye()},...r])}},ae.plus_circle),d(S,null,r&&Array.isArray(r)&&r.map((({node:t,id:m},f)=>{if(f===g)return d("div",{class:"node node-header"},d("label",null,ge(a,"entries_hidden",""+(r.length-g))),d("button",{onClick:()=>_(Math.min(g+50,r.length))},ge(a,"entries_hidden.more","50")),d("button",{onClick:()=>_(r.length)},ge(a,"entries_hidden.all")));if(f>g)return null;const v=n.push(f).contextPush("entry"),w="object"===e.type(v),y=p(m);if(w&&(!1===y||void 0===y&&r.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(An,{lang:a,path:v,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(a,"expand")}\n${ge(a,"expand_all","Ctrl")}`,onClick:u(m)},ae.chevron_right),d("label",null,Cn(a,v,`${f}`)),d(gn,{key:m,path:v,value:t,schema:e}));return d(bn,l(s({key:m,path:v,schema:e,value:t},{lang:a,version:o,states:i,actions:[{icon:"duplicate",label:"duplicate",onSelect:()=>{const e=[...n.get()];e.splice(f,0,{id:ye(),node:Pe(t)}),n.model.set(n,e)}}]}),{ctx:l(s({},c),{index:(0===f?1:0)+(f===r.length-1?2:0)})}),w&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(a,"collapse")}\n${ge(a,"collapse_all","Ctrl")}`,onClick:h(m)},ae.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":ge(a,"remove"),onClick:()=>v.set(void 0)},ae.trashcan),r.length>1&&d("div",{class:"node-move"},d("button",{class:"move tooltipped tip-se","aria-label":ge(a,"move_up"),onClick:()=>{const e=[...n.get()];[e[f-1],e[f]]=[e[f],e[f-1]],n.model.set(n,e)},disabled:0===f},ae.chevron_up),d("button",{class:"move tooltipped tip-se","aria-label":ge(a,"move_down"),onClick:()=>{const e=[...n.get()];[e[f+1],e[f]]=[e[f],e[f+1]],n.model.set(n,e)},disabled:f===r.length-1},ae.chevron_down)))})),r&&r.length>0&&r.length<=g&&d("div",{class:"node node-header"},d("button",{class:"add tooltipped tip-se","aria-label":ge(a,"add_bottom"),onClick:()=>{Array.isArray(r)||(r=[]);const t=f.DataModel.wrapLists(e.default());n.model.set(n,[...r,{node:t,id:ye()}])}},ae.plus_circle)))]},map({children:e,keys:t,config:n},r,a,o,i,c,u){var m,h,p,g,_;const{expand:v,collapse:w,isToggled:y}=_n(),b=new f.ModelPath(hn,new f.Path([xn(r.toString())])),k="block_state_map"===(null==(m=n.validation)?void 0:m.validator)?null==c?void 0:c[f.relativePath(r,n.validation.params.id).get()]:null,x=(null==k?void 0:k.properties)?f.StringNode(null,{enum:Object.keys(null!=(h=k.properties)?h:{})}):t;if(k&&"Properties"===r.last()){"object"!=typeof a&&(a={});const e=Object.entries(null!=(p=k.properties)?p:{}).map((([e,t])=>[e,f.StringNode(null,{enum:t})]));return Object.entries(null!=(g=k.properties)?g:{}).forEach((([e,t])=>{"string"!=typeof a[e]?r.model.errors.add(r.push(e),"error.expected_string"):t.includes(a[e])||r.model.errors.add(r.push(e),"error.invalid_enum_option",a[e])})),f.ObjectNode(Object.fromEntries(e)).hook(this,r,a,o,i,c,u)}return[null,d(S,null,x.hook(this,b,null!=(_=b.get())?_:"",o,i,c,u)[1],d("button",{class:"add tooltipped tip-se","aria-label":ge(o,"add"),onClick:()=>{const t=b.get();r.model.set(r.push(t),f.DataModel.wrapLists(e.default()))}},ae.plus_circle)),d(S,null,"object"==typeof a&&Object.entries(a).map((([t,n])=>{var m,h,p,g;const _=r.modelPush(t),b="object"===e.type(_),x=y(t);if(b&&(!1===x||void 0===x&&a.length>20))return d("div",{class:"node node-header","data-category":e.category(_)},d(An,{lang:o,path:_,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(o,"expand")}\n${ge(o,"expand_all","Ctrl")}`,onClick:v(t)},ae.chevron_right),d("label",null,t),d(gn,{key:t,path:_,value:n,schema:e}));const C=k?f.StringNode(null,{enum:null!=(h=null==(m=k.properties)?void 0:m[t])?h:[]}):e;(null==(p=null==k?void 0:k.properties)?void 0:p[t])&&"string"==typeof n&&!(null==(g=k.properties)?void 0:g[t].includes(n))&&r.model.errors.add(_,"error.invalid_enum_option",n);return d(bn,l(s({key:t,schema:C,path:_,value:n},{lang:o,version:i,states:c,ctx:u}),{label:t}),b&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${ge(o,"collapse")}\n${ge(o,"collapse_all","Ctrl")}`,onClick:w(t)},ae.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":ge(o,"remove"),onClick:()=>_.set(void 0)},ae.trashcan))})))]},number:(e,t,n,r,a,o,i)=>[null,d(wn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null],object({node:e,config:t,getActiveFields:n,getChildModelPath:r},a,o,i,c,u,m){var h;const{expand:p,collapse:g,isToggled:_}=_n();if(0==a.getArray().length&&function(e,t){var n;return"feature"===e&&"decorated"===(null==(n=null==t?void 0:t.type)?void 0:n.replace(/^minecraft:/,""))&&ve(null==t?void 0:t.config)}(t.context,o)){const{wrapper:e,fields:t}=function(e,t,n){const r=[],a=jn(n,r),o={type:e.type,config:f.ObjectNode({decorators:f.ListNode(Ue),feature:Ge},{context:"feature.decorated"})},i=f.ObjectNode(o,{context:"feature"}),s=new f.Path(["config","feature"]),l=new f.Path(["config","decorators"]),c=t.getModel(),d=new an(i,(e=>{if(e.startsWith(s))return new f.Path([...[...Array(r.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);if(e.startsWith(l)){if(2===e.modelArr.length)return new f.Path([]);const t=e.modelArr[2];if("number"==typeof t)return new f.Path([...[...Array(t)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)])}return e}),(e=>{if(e.equals(l)){const e=[];return jn(c.data,e),e}return c.get(d.map(e))}),((e,t,n)=>{if(e.startsWith(s)){const r=[];jn(c.data,r);const a=new f.Path([...[...Array(r.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);return c.set(a,t,n)}if(e.startsWith(l)){const r=e.modelArr[2];if(2===e.modelArr.length){const e=d.get(s);return c.set(new f.Path,Vn(e,t),n)}if("number"==typeof r){if(3===e.modelArr.length&&void 0===t){const e=d.get(s),t=[];jn(c.data,t),t.splice(r,1);const a=Vn(e,t);return c.set(new f.Path,a,n)}{const a=new f.Path([...[...Array(r)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)]);return c.set(a,t,n)}}}c.set(e,t,n)}));return d.data={type:c.data.type,config:{decorators:r,feature:a}},d.errors=c.errors,{fields:o,wrapper:d}}(n(a),a,o);o=e.data,n=()=>t,r=(t,n)=>new f.ModelPath(e,new f.Path(t.getArray(),["feature"])).push(n)}let v=null,w=null;if(e.optional())if(void 0===o){const t=()=>a.set(f.DataModel.wrapLists(e.default()));w=d("button",{class:"collapse closed tooltipped tip-se","aria-label":ge(i,"expand"),onClick:t},ae.plus_circle)}else{const e=()=>a.set(void 0);w=d("button",{class:"collapse open tooltipped tip-se","aria-label":ge(i,"remove"),onClick:e},ae.trashcan)}const y=a.getContext().join(".");if(mn.includes(y)){const e=_("");if(v=d(S,null,d("button",{class:"toggle tooltipped tip-se","aria-label":ge(i,e?"collapse":"expand"),onClick:e?g(""):p("")},e?ae.chevron_down:ae.chevron_right)),!e)return[v,w,null]}const b="object"==typeof o&&null!==o&&(null==(h=e.default())?void 0:h.pools)?l(s({},m),{loot:null==o?void 0:o.type}):m,k=d(S,null,"object"==typeof o&&null!==o&&!(e.optional()&&void 0===o)&&Object.entries(n(a)).filter((([e,t])=>t.enabled(a))).map((([e,t])=>{var n,l,m;const h=r(a,e),f=h.getContext().join(".");if(sn.includes(f))return null;const[p,g,_]=t.hook(this,h,o[e],i,c,u,b);if(!(p||g||(null!=(m=null==(l=null==(n=null==_?void 0:_.props)?void 0:n.children)?void 0:l.length)?m:0)>0))return null;const y="object"===t.type(h)&&ln.includes(f),k=cn.includes(f);return y||k?(v=d(S,null,v,d(An,{lang:i,path:h}),d(Mn,{lang:i,path:h}),p),w=d(S,null,w,g),y?_:null):d(bn,s({key:e,schema:t,path:h,value:o[e]},{lang:i,version:c,states:u,ctx:b}))})));return[v,w,k]},string:(e,t,n,r,a,o,i)=>[null,d(yn,s({},l(s({},e),{path:t,value:n,lang:r,version:a,states:o,ctx:i}))),null]};function gn({path:e,value:t}){var n,r,a,o,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(r=null==(n=null==t?void 0:t.entries)?void 0:n.length)?r:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(a=null==t?void 0:t.name)?void 0:a.replace(/^minecraft:/,""))?i:null==(o=null==t?void 0:t.type)?void 0:o.replace(/^minecraft:/,""))}for(const s of Object.values(null!=t?t:{}))if("string"==typeof s)return d("label",null,s.replace(/^minecraft:/,""));return null}function _n(){const[e,t]=m(new Map),[n,r]=m(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),r(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),r(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var r;return e instanceof Map&&(null!=(r=e.get(t))?r:n)}}}function vn({path:e,node:t,value:n,lang:r}){const a=r=>{e.model.set(e,t.optional()&&n===r?void 0:r)};return d(S,null,d("button",{class:!1===n?"selected":"",onClick:()=>a(!1)},ge(r,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>a(!0)},ge(r,"true")))}function wn({path:e,config:t,integer:n,value:r,lang:a}){var o;const i=t=>{const r=t.target.value,a=n?parseInt(r):parseFloat(r);e.model.set(e,a)};return d(S,null,d("input",{type:"text",value:null!=r?r:"",onBlur:i,onKeyDown:e=>{"Enter"===e.key&&i(e)}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(o=null==r?void 0:r.toString(16).padStart(6,"0"))?o:"000000"),onChange:t=>{const n=t.target.value,r=parseInt(n.slice(1),16);e.model.set(e,r)}}),["dimension.generator.seed","dimension.generator.biome_source.seed","world_settings.seed"].includes(e.getContext().join("."))&&d("button",{onClick:()=>ke(e.model),class:"tooltipped tip-se","aria-label":ge(a,"generate_new_seed")},ae.sync))}function yn({path:e,getValues:t,config:n,node:r,value:a,lang:o,version:i,states:s}){var l;const c=t=>{t.stopPropagation();const n=t.target.value;n!==a&&e.model.set(e,0===n.length?void 0:n)},u=t(),m=e.getContext().join("."),h=kn(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool?void 0:n.params.pool;if(dn.includes(m))return d("textarea",{value:null!=a?a:"",onBlur:c});if(kn(n)&&!n.additional||on.includes(m)){let t=new f.Path([]);return kn(n)&&"string"==typeof n.enum?t=t.contextPush(n.enum):h?t=t.contextPush(h):kn(n)&&(t=e),d("select",{value:null!=a?a:"",onChange:c},r.optional()&&d("option",{value:""},ge(o,"unset")),u.map((e=>d("option",{value:e},Cn(o,t.contextPush(e.replace(/^minecraft:/,"")))))))}if(kn(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=ye(),t=h?(e=>Z.generators.find((t=>t.id===e.replace(/^\$/,""))))(h):void 0;return d(S,null,d("input",{value:null!=a?a:"",onBlur:c,onKeyDown:e=>{"Enter"===e.key&&c(e)},list:u.length>0?e:""}),u.length>0&&d("datalist",{id:e},u.map((e=>d("option",{value:e})))),t&&u.includes(a)&&a.startsWith("minecraft:")&&d("a",{href:`/${t.url}/?version=${i}&preset=${a.replace(/^minecraft:/,"")}`,class:"tooltipped tip-se","aria-label":ge(o,"follow_reference")},ae.link_external))}{const t=null==s?void 0:s[f.relativePath(e,n.params.id).get()],r=Object.keys(null!=(l=null==t?void 0:t.properties)?l:{});return d("select",{value:null!=a?a:"",onChange:c},r.map((e=>d("option",null,e))))}}const bn=R((function({label:e,schema:t,path:n,value:r,lang:a,version:o,states:i,ctx:c,actions:u,children:m}){var h;const f=t.type(n),p=t.category(n),g=n.getContext().join("."),[_,v]=te(),w=l(s({},c),{depth:(null!=(h=c.depth)?h:0)+1});delete w.index;const[y,b,k]=t.hook(pn,n,r,a,o,i,w);return d("div",{class:`node ${f}-node`,"data-category":p},d("div",{class:"node-header",onContextMenu:e=>{e.preventDefault(),v()}},d(An,{lang:a,path:n}),d(Mn,{lang:a,path:n}),m,y,d("label",null,null!=e?e:Cn(a,n,`${n.last()}`),_&&d("div",{class:"node-menu"},null==u?void 0:u.map((e=>{var t;return d("div",{key:e.label,class:"menu-item"},d(X,{icon:e.icon,tooltip:ge(a,e.label),tooltipLoc:"se",onClick:()=>e.onSelect()}),d("span",null,null!=(t=e.description)?t:ge(a,e.label)))})),d("div",{class:"menu-item"},d(X,{icon:"clippy",tooltip:ge(a,"copy_context"),tooltipLoc:"se",onClick:()=>navigator.clipboard.writeText(g)}),d("span",null,g)))),b),k&&d("div",{class:"node-body"},k))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&De(e.ctx,t.ctx)&&De(e.value,t.value)));function kn(e){return!!(null==e?void 0:e.enum)}function xn(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===a.length)return null;const o=ge(e,a[0].error,...null!=(r=a[0].params)?r:[]);return zn("node-error","issue_opened",o)}function Mn({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),r=ge(e,n);return r===n?null:zn("node-help","info",r)}const zn=(e,t,n)=>{const[r,a]=te();return d("div",{class:`node-icon ${e}${r?" show":""}`,onClick:a},ae[t],d("span",{class:"icon-popup"},n))};function jn(e,t){var n,r;return"decorated"!==(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,""))?e:ve(null==e?void 0:e.config)?(t.push({id:t.length,node:e.config.decorator}),jn(null!=(r=e.config.feature)?r:"",t)):e}function Vn(e,t){return 0===t.length?e:{type:"minecraft:decorated",config:{decorator:t.shift().node,feature:Vn(e,t)}}}function $n({lang:e,version:t,model:n,blockStates:r,onError:a}){if(!n||!r||"none"===e)return d(S,null);const[o]=H((e=>{a(`Error rendering the tree: ${e.message}`),console.error(e)}));if(o)return d(S,null);const[,i]=m(0);return ne(n,(()=>{i((e=>e+1))})),d("div",{class:"tree"},d(fn,s({},{model:n,lang:e,version:t,blockStates:r})))}const En={system:"device_desktop",dark:"moon",light:"sun"};function In({lang:e,title:t,version:n,theme:r,changeTheme:a,language:o,changeLanguage:i}){const s=ge.bind(null,e),l=Me(p());return d("header",null,d("div",{class:"title"},d(F,{class:"home-link",href:"/","aria-label":s("home")},On.home),d("h1",null,t),l&&d(re,{icon:"chevron_down",tooltip:s("switch_generator")},Z.generators.filter((e=>e.category===(null==l?void 0:l.category)&&qe(n,e.minVersion))).map((e=>d(X,{label:s(e.id),active:e.id===l.id,onClick:()=>g(Ce(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(re,{icon:"globe",tooltip:s("language")},Z.languages.map((({code:e,name:t})=>d(X,{label:t,active:e===o,onClick:()=>i(e)}))))),d("li",null,d(re,{icon:En[r],tooltip:s("theme")},Object.entries(En).map((([e,t])=>d(X,{icon:t,label:s(`theme.${e}`),active:e===r,onClick:()=>a(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",class:"tooltipped tip-sw","aria-label":s("github")},ae.mark_github)))))}const On={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};function Ln({lang:e,assets:t,sounds:n,sound:r,delay:a,pitch:o,volume:i,onEdit:s,onDelete:l,delayedPlay:h}){const f=ge.bind(null,e),[p,g]=m(!0),[_,v]=m(!1),[w,y]=m(!1),b=u([]),k=`playsound minecraft:${r} master @s ~ ~ ~ ${i} ${o}`;c((()=>{var e,a,s;const l=n[r];y(0===(null!=(a=null==(e=null==l?void 0:l.sounds)?void 0:e.length)?a:0)),b.current.forEach((e=>e.stop())),b.current=(null!=(s=null==l?void 0:l.sounds)?s:[]).map((e=>{const n="string"==typeof e?e:e.name,r=ot(t[`minecraft/sounds/${n}.ogg`].hash),a=new W.Howl({src:[r],format:["ogg"],volume:i,rate:o});a.on("end",(()=>{v(!1)}));const s=()=>{p&&b.current.every((e=>"loaded"===e.state()))&&g(!1)};return"loaded"===a.state()?setTimeout((()=>s())):a.on("load",(()=>{s()})),a})),g(!0)}),[r,n]),c((()=>{b.current.forEach((e=>e.rate(o)))}),[o]),c((()=>{b.current.forEach((e=>e.volume(i)))}),[i]);const x=()=>{if(p||w)return;C();const e=Math.floor(Math.random()*b.current.length);b.current[e].play(),v(!0)},C=()=>{b.current.forEach((e=>e.stop()))};c((()=>{h&&setTimeout((()=>x()),50*a)}),[h]),c((()=>()=>C()),[]);const[A,M]=m(!1),z=u(void 0);return d("div",{class:`sound-config${p?" loading":_?" playing":""}${w?" invalid":""}`},d(X,{class:"play",icon:w?"alert":p?"sync":"play",label:f("sounds.play"),onClick:x,tooltip:f(w?"sounds.unknown_sound":p?"sounds.loading_sound":"sounds.play_sound"),tooltipLoc:"se"}),d(se,{class:"btn btn-input sound",list:"sound-list",spellcheck:!1,value:r,onChange:e=>s({sound:e})}),d("label",{class:"delay-label"},f("sounds.delay"),": "),d(le,{class:"btn btn-input delay",min:0,value:a,onChange:e=>s({delay:e})}),d("label",{class:"pitch-label"},f("sounds.pitch"),": "),d(ce,{class:"pitch tooltipped tip-s",min:.5,max:2,step:.01,"aria-label":o.toFixed(2),style:`--x: ${100/1.5*(o-.5)}%`,value:o,onChange:e=>s({pitch:e})}),d("label",{class:"volume-label"},f("sounds.volume"),": "),d(ce,{class:"volume tooltipped tip-s",min:0,max:1,step:.01,"aria-label":i.toFixed(2),style:`--x: ${100*i}%`,value:i,onChange:e=>s({volume:e})}),d(X,{class:"copy"+(A?" active":""),icon:A?"check":"terminal",label:f("copy"),tooltip:f(A?"copied":"sounds.copy_command"),onClick:()=>{navigator.clipboard.writeText(k),M(!0),void 0!==z.current&&clearTimeout(z.current),z.current=setTimeout((()=>{M(!1)}),2e3)}}),d(X,{class:"remove",icon:"trashcan",tooltip:f("sounds.remove_sound"),onClick:()=>{l(),C()}}))}function Pn({title:e,desc:t,link:n,icon:r,children:a}){const o=d(S,null,d("div",{class:"tool-head"},r&&On[r],d("div",null,d("h3",null,e),d("p",null,t))),a&&d("div",{class:"tool-body"},a));return n?d("a",{class:"tool-card",href:n},o):d("div",{class:"tool-card"},o)}function Dn({category:e,lang:t,changeTitle:n}){const r=ge.bind(null,t);return n(r("title.generator_category",r(e))),d("main",null,d("div",{class:"category"},Z.generators.filter((t=>t.category===e)).map((e=>d(Pn,{title:r(e.id),link:Ce(e.url)})))))}function Sn({lang:e,changeTitle:t}){const n=ge.bind(null,e),[r,a]=m(null);t(n("title.changelog"));const[o,i]=m([]);c((()=>{Be().then((e=>i(e))).catch((e=>{console.error(e),a(e)}))}),[]);const[s,l]=m(""),[u,h]=m([]),f=e=>{u.includes(e)?h(u.filter((t=>t!==e))):h([...u,e])},p=J((()=>{const e=s.split(" ").map((e=>e.trim().toLowerCase())).filter((e=>e.length>0));return 0===e.length&&0===u.length?o:o.filter((t=>{if(!u.every((e=>t.tags.includes(e))))return!1;const n=t.tags.join(" ")+" "+t.content.toLowerCase();return e.every((e=>e.startsWith("!")?1===e.length||!n.includes(e.slice(1)):n.includes(e)))}))}),[o,s,u]),[g,_]=m(!0),v=J((()=>p.sort(((e,t)=>g?t.order-e.order:e.order-t.order))),[p,g]);return d("main",null,d(K,{type:"text",id:"changelog"}),r&&d(oe,{error:r,onDismiss:()=>a(null)}),d("div",{class:"changelog-controls"},d("div",{class:"changelog-query"},d(se,{class:"btn btn-input changelog-search",list:"sound-list",placeholder:n("changelog.search"),value:s,onChange:l}),d(X,{icon:g?"sort_desc":"sort_asc",label:g?"Newest first":"Oldest first",onClick:()=>_(!g)})),u.length>0&&d("div",{class:"changelog-tags"},u.map((e=>d(Bn,{label:e,onClick:()=>h(u.filter((t=>t!==e)))}))))),d("div",{class:"changelog"},v.map((e=>d(Tn,{change:e,activeTags:u,toggleTag:f})))))}function Tn({change:e,activeTags:t,toggleTag:n}){return d("div",{class:"changelog-entry"},d("div",{class:"changelog-version"},d(Nn,s({},e.version)),d(Nn,s({},e.group))),d("div",{class:"changelog-tags"},e.tags.map((e=>d(Bn,{label:e,onClick:()=>n(e),active:t.includes(e)})))),d("div",{class:"changelog-content",dangerouslySetInnerHTML:{__html:U(e.content)}}))}function Nn({id:e,article:t}){return null===t?d("span",null,e):d("a",{href:`https://www.minecraft.net/en-us/article/${t}`,target:"_blank"},e)}function Bn({label:e,active:t,onClick:n}){const r="breaking"===e?5:xe(e)%360;return d("div",{class:`changelog-tag${t?" active":""}${n?" clickable":""}`,style:`--tint: ${r}`,onClick:n},"breaking"===e&&ae.alert,e)}function Rn({lang:e,changeTitle:t,version:n,changeVersion:r}){var a;const o=ge.bind(null,e),[i,h]=m(null),[g,_]=H();if(g)return d("main",null,d(oe,{error:`Something went wrong rendering the generator: ${g.message}`,onDismiss:_}));const v=Me(p());if(!v)return d("main",null,d(oe,{error:`Cannot find generator "${p()}"`}));const w=Z.versions.filter((e=>qe(e.id,v.minVersion,v.maxVersion))).map((e=>e.id));t(o("title.generator",o(v.id)),w),qe(n,v.minVersion)||h(`The minimum version for this generator is ${v.minVersion}`);const y=ze(p()).get("preset");c((()=>{b&&y&&$(y)}),[y]);const[b,k]=m(null),[x,C]=m(null);c((()=>{h(null),k(null),async function(e){return(await Ye(e)).blockStates}(n).then((e=>C(e))),async function(e,t){var n;if(!We[t]||We[t].version!==e){const a=await Ye(e);Ue=f.Reference(a.schemas,"configured_decorator"),Ge=f.ChoiceNode([{type:"string",node:f.StringNode(a.collections,{validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:f.Reference(a.schemas,"configured_feature")}],{choiceContext:"feature"});const o=null==(n=Z.generators.find((e=>e.id===t)))?void 0:n.schema;if(!o)throw new Error(`Cannot find model ${t}`);try{const n=a.schemas.get(o),r=new f.DataModel(n,{wrapLists:!0});We[t]?r.reset(We[t].model.data,!1):(r.validate(!0),r.history=[JSON.stringify(r.data)]),We[t]={model:r,version:e}}catch(r){const n=new Error(`Cannot get generator "${t}" for version "${e}": ${Le(r)}`);throw r instanceof Error&&(n.stack=r.stack),n}}return We[t].model}(n,v.id).then((async e=>{if(q.setGenerator(v.id),y){const t=await E(y);e.reset(f.DataModel.wrapLists(t),!1)}k(e)})).catch((e=>{console.error(e),h(Le(e))}))}),[n,v.id]),ne(b,(()=>{je({version:void 0,preset:void 0}),h(null)}));const A=e=>{e.ctrlKey&&"z"===e.key?(q.generatorEvent("undo","Hotkey"),null==b||b.undo()):e.ctrlKey&&"y"===e.key&&(q.generatorEvent("redo","Hotkey"),null==b||b.redo())};c((()=>(document.addEventListener("keyup",A),()=>{document.removeEventListener("keyup",A)})),[b]);const[M,z]=m(""),[j,V]=m([]);c((()=>{(async function(e){return(await Ye(e)).collections})(n).then((e=>{const t=(null!=M?M:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&V(n)})).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id,M]);const $=e=>{E(e).then((t=>{null==b||b.reset(f.DataModel.wrapLists(t),!1),je({version:n,preset:e})}))},E=async e=>{var t,r,a;q.generatorEvent("load-preset",e);try{const o=await at(n,null!=(t=v.path)?t:v.id,e),i=null==b?void 0:b.get(new f.Path(["generator","seed"]));return void 0!==(null==(r=null==o?void 0:o.generator)?void 0:r.seed)&&void 0!==i&&(o.generator.seed=i,void 0!==(null==(a=o.generator.biome_source)?void 0:a.seed)&&(o.generator.biome_source.seed=i)),o}catch(o){h(Le(o))}},[I,O]=m(window.innerWidth>820),[L,P]=m(0),[D,T]=m(0),[N,B]=m(0),[R,F]=m(!1),W=u(void 0),[J,U]=m(!1),G=Zt.includes(v.id);J&&!G&&U(!1);let Y=1;G&&(Y+=1),I&&(Y+=2);return d(S,null,d("main",{class:J?"has-preview":""},d(K,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(X,{icon:"upload",label:o("import"),onClick:()=>{q.generatorEvent("import"),O(!0),B(N+1)}}),d(re,{icon:"archive",label:o("presets"),relative:!1},d(Q,{icon:"search",large:!0,value:M,onChange:z,doSelect:1,placeholder:o("search")}),d("div",{class:"result-list"},j.map((e=>d(X,{label:e,onClick:()=>$(e)})))),0===j.length&&d(X,{label:o("no_presets")})),d(re,{icon:"tag",label:n},w.reverse().map((e=>d(X,{label:e,active:e===n,onClick:()=>r(e)})))),d(re,{icon:"kebab_horizontal",tooltip:o("more")},d(X,{icon:"history",label:o("reset"),onClick:()=>{q.generatorEvent("reset"),null==b||b.reset(f.DataModel.wrapLists(b.schema.default()),!0)}}),d(X,{icon:"arrow_left",label:o("undo"),onClick:e=>{e.stopPropagation(),q.generatorEvent("undo","Menu"),null==b||b.undo()}}),d(X,{icon:"arrow_right",label:o("redo"),onClick:e=>{e.stopPropagation(),q.generatorEvent("redo","Menu"),null==b||b.redo()}}))),i&&d(oe,{error:i,onDismiss:()=>h(null)}),d($n,l(s({},{lang:e,model:b,version:n,blockStates:x}),{onError:h}))),d("div",{class:"popup-actions",style:`--offset: -${8+50*Y}px;`},d("div",{class:`popup-action action-preview${G?" shown":""} tooltipped tip-nw`,"aria-label":o(J?"hide_preview":"show_preview"),onClick:()=>{q.generatorEvent("toggle-preview",J?"hidden":"visible"),U(!J)}},J?ae.x_circle:ae.play),d("div",{class:`popup-action action-download${I?" shown":""} tooltipped tip-nw`,"aria-label":o("download"),onClick:()=>{q.generatorEvent("download"),T(D+1)}},ae.download),d("div",{class:`popup-action action-copy${I?" shown":""}${R?" active":""} tooltipped tip-nw`,"aria-label":o(R?"copied":"copy"),onClick:()=>{q.generatorEvent("copy"),P(L+1)}},R?ae.check:ae.clippy),d("div",{class:"popup-action action-code shown tooltipped tip-nw","aria-label":o(I?"hide_output":"show_output"),onClick:()=>{q.generatorEvent("toggle-output",I?"hidden":"visible"),O(!I),P(0),T(0),B(0)}},I?ae.chevron_right:ae.code)),d("div",{class:"popup-preview"+(J?" shown":"")},d(Kt,l(s({},{lang:e,model:b,version:n,id:v.id}),{shown:J,onError:h}))),d("div",{class:"popup-source"+(I?" shown":"")},d(rn,l(s({},{lang:e,model:b,blockStates:x,doCopy:L,doDownload:D,doImport:N}),{name:null!=(a=v.schema)?a:"data",copySuccess:()=>{F(!0),void 0!==W.current&&clearTimeout(W.current),W.current=setTimeout((()=>{F(!1)}),2e3)},onError:h}))))}function Hn({lang:e,changeTitle:t}){const n=ge.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},d(Pn,{title:"Data packs"},Z.generators.filter((e=>!e.category)).map((e=>d(Pn,{title:n(e.id),link:Ce(e.url)}))),d(Pn,{title:n("worldgen"),link:"/worldgen/"})),d(Pn,{title:"Resource packs"},Z.generators.filter((e=>"assets"===e.category)).map((e=>d(Pn,{title:n(e.id),link:Ce(e.url)})))),d(Pn,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/",desc:"Analyse your performance reports"}),d(Pn,{title:"Minecraft Sounds",icon:"sounds",link:"/sounds/",desc:"Browse through and mix all the vanilla sounds"}),d(Pn,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/",desc:"Convert your 1.16 data packs to 1.17"}),d(Pn,{title:"Technical Changelog",link:"/changelog/"})))}function Fn({lang:e,changeTitle:t,version:n,changeVersion:r}){const a=ge.bind(null,e),[o,i]=m(null);t(a("title.sounds"));const[h,f]=m({}),[p,g]=m({}),_=Object.keys(null!=p?p:{});c((()=>{ht(n).then((e=>(f(e),ft(n)))).then((e=>{e&&g(e)})).catch((e=>{console.error(e),i(Le(e))}))}),[n]);const[v,w]=m(""),[y,b]=m([]),k=()=>{b([{id:ye(),sound:v,delay:0,pitch:1,volume:1},...y])},x=e=>()=>{b(y.filter((t=>t.id!==e)))},[C,A]=m(0),M=u(null);return d("main",null,d(K,{type:"text",id:"sounds"}),o&&d(oe,{error:o,onDismiss:()=>i(null)}),_.length>0&&d(S,null,d("div",{class:"controls sounds-controls"},d("div",{class:"sound-search-group"},d(se,{class:"btn btn-input sound-search",list:"sound-list",placeholder:a("sounds.search"),value:v,onChange:w,onEnter:k}),d(X,{icon:"plus",tooltip:a("sounds.add_sound"),class:"add-sound",onClick:k})),y.length>1&&d(X,{icon:"play",label:a("sounds.play_all"),class:"play-all-sounds",onClick:()=>{A(C+1)}}),d("div",{class:"spacer"}),d(X,{icon:"download",label:a("download"),tooltip:a("sounds.download_function"),class:"download-sounds",onClick:()=>{const e=y.some((e=>e.delay>0)),t=y.sort(((e,t)=>e.delay-t.delay)).map((t=>`${e?`execute if score @s delay matches ${t.delay} run `:""}playsound minecraft:${t.sound} master @s ~ ~ ~ ${t.volume} ${t.pitch}`)).join("\n");M.current.setAttribute("href","data:text/plain;charset=utf-8,"+t+"%0A"),M.current.setAttribute("download","sounds.mcfunction"),M.current.click()}}),d(re,{icon:"tag",label:n},Z.versions.reverse().map((e=>d(X,{label:e.id,active:e.id===n,onClick:()=>r(e.id)}))))),d("div",{class:"sounds"},y.map((t=>{return d(Ln,l(s(s({key:t.id},t),{lang:e,assets:h,sounds:p,delayedPlay:C}),{onEdit:(n=t.id,e=>{b(y.map((t=>t.id===n?s(s({},t),e):t)))}),onDelete:x(t.id)}));var n}))),d("a",{ref:M,style:"display: none;"})),d("datalist",{id:"sound-list"},_.map((e=>d("option",{key:e,value:e})))))}function Wn(){const[e,t]=m("none");c((()=>{(async()=>{const e=Qt.getLanguage();await Promise.all([_e("en"),..."en"!==e?[_e(e)]:[]]),t(e)})()}),[]);const[n,r]=m(Qt.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const a=ze(p()).get("version"),[o,i]=m(Qt.getVersion()),l=T((e=>{ze(p()).has("version")&&je({version:e}),q.setVersion(e),Qt.setVersion(e),i(e)}),[a]);c((()=>{He.includes(a)&&o!==a&&i(a)}),[o,a]);const[u,h]=m(ge(e,"title.home")),f=(e,t)=>{null!=t||(t=Z.versions.map((e=>e.id)));const n=t.slice(t.length-3);document.title=`${e} Minecraft ${n.join(", ")}`,h(e)};return d(S,null,d(In,s({},{lang:e,title:u,version:o,theme:n,language:e,changeLanguage:async e=>{pe[e]||await _e(e),q.setLanguage(e),Qt.setLanguage(e),t(e)},changeTheme:e=>{q.setTheme(e),Qt.setTheme(e),r(e)}})),d(Y,{onChange:e=>{setTimeout((()=>q.pageview(Ce(e.url))))}},d(Hn,s({path:"/"},{lang:e,changeTitle:f})),d(Dn,s({path:"/worldgen",category:"worldgen"},{lang:e,changeTitle:f})),d(Dn,s({path:"/assets",category:"assets"},{lang:e,changeTitle:f})),d(Fn,s({path:"/sounds"},{lang:e,version:o,changeTitle:f,changeVersion:l})),d(Sn,s({path:"/changelog"},{lang:e,changeTitle:f})),d(Rn,s({default:!0},{lang:e,version:o,changeTitle:f,changeVersion:l}))))}G(d(Wn,null),document.body); +//# sourceMappingURL=index.e5f6d834.js.map diff --git a/assets/index.4b6d67ca.js.map b/assets/index.e5f6d834.js.map similarity index 99% rename from assets/index.4b6d67ca.js.map rename to assets/index.e5f6d834.js.map index 6b305724..dfc7545f 100644 --- a/assets/index.4b6d67ca.js.map +++ b/assets/index.e5f6d834.js.map @@ -1 +1 @@ -{"version":3,"file":"index.4b6d67ca.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../src/app/components/forms/Input.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/services/Changelogs.ts","../../src/app/services/Schemas.ts","../../src/app/services/DataFetcher.ts","../../src/app/services/Manifest.ts","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoisePreview.tsx","../../src/app/previews/NormalNoise.ts","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/generator/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/generator/SourcePanel.tsx","../../src/app/schema/ModelWrapper.ts","../../src/app/schema/renderHtml.tsx","../../src/app/components/generator/Tree.tsx","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/components/sounds/SoundConfig.tsx","../../src/app/components/ToolCard.tsx","../../src/app/pages/Category.tsx","../../src/app/pages/Changelog.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/pages/Sounds.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\tconst DIM_GENERATOR = 6\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function setGenerator(generator: string) {\n\t\tdimension(DIM_GENERATOR, generator)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\ttooltip?: string,\n\ttooltipLoc?: 'se' | 'sw' | 'nw',\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: clazz, tooltip, tooltipLoc, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tplaceholder?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, placeholder, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current?.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current?.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current?.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\ttooltip?: string,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, tooltip, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\talert: ,\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\tduplicate: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tlink_external: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tsort_asc: ,\n\tsort_desc: ,\n\tstack: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tterminal: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","import type { JSXInternal } from 'preact/src/jsx'\n\ntype InputProps = JSXInternal.HTMLAttributes\n\ntype BaseInputProps = Omit & {\n\tonChange?: (value: T) => unknown,\n\tonEnter?: (value: T) => unknown,\n}\nfunction BaseInput(name: string, type: string, fn: (value: string) => T) {\n\tconst component = (props: BaseInputProps) => {\n\t\tconst onChange = props.onChange && ((evt: Event) => {\n\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\tprops.onChange?.(fn(value))\n\t\t})\n\t\tconst onKeyDown = props.onEnter && ((evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Enter') {\n\t\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\t\tprops.onEnter?.(fn(value))\n\t\t\t}\n\t\t})\n\t\treturn \n\t}\n\tcomponent.displayName = name\n\treturn component\n}\n\nexport const TextInput = BaseInput('TextInput', 'text', v => v)\n\nexport const NumberInput = BaseInput('NumberInput', 'number', v => Number(v))\n\nexport const RangeInput = BaseInput('RangeInput', 'range', v => Number(v))\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { getCurrentUrl, route } from 'preact-router'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nexport function isObject(obj: any) {\n\treturn typeof obj === 'object' && obj !== null\n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tconst dimensions = model.get(new Path(['dimensions']))\n\tmodel.set(new Path(['seed']), seed, true)\n\tif (typeof dimensions === 'object' && dimensions !== null) {\n\t\tObject.keys(dimensions).forEach(id => {\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'seed']), seed, true)\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'biome_source', 'seed']), seed, true)\n\t\t})\n\t}\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getPath(url: string) {\n\tconst searchIndex = url.indexOf('?')\n\tif (searchIndex >= 0) {\n\t\turl = url.slice(0, searchIndex)\n\t}\n\treturn cleanUrl(url)\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = getPath(url).replace(/^\\//, '').replace(/\\/$/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function getSearchParams(url: string) {\n\tconst searchIndex = url.indexOf('?')\n\tif (searchIndex >= 0) {\n\t\turl = url.slice(searchIndex + 1)\n\t\treturn new Map(url.split('&').map<[string, string]>(param => {\n\t\t\tconst index = param.indexOf('=')\n\t\t\tif (index === -1) return [param, 'true']\n\t\t\treturn [decodeURIComponent(param.slice(0, index)), decodeURIComponent(param.slice(index + 1))]\n\t\t}))\n\t}\n\treturn new Map()\n}\n\nexport function setSeachParams(modifications: Record, newPath?: string) {\n\tconst url = getCurrentUrl()\n\tconst searchParams = getSearchParams(url)\n\tObject.entries(modifications).forEach(([key, value]) => {\n\t\tif (value === undefined) searchParams.delete(key)\n\t\telse searchParams.set(key, value)\n\t})\n\tconst search = Array.from(searchParams).map(([key, value]) =>\n\t\t`${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n\troute(`${newPath ? cleanUrl(newPath) : getPath(url)}${search.length === 0 ? '' : `?${search.join('&')}`}`, true)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport class BiMap {\n\tprivate readonly forward: Map\n\tprivate readonly backward: Map\n\n\tconstructor() {\n\t\tthis.forward = new Map()\n\t\tthis.backward = new Map()\n\t}\n\n\tpublic set(a: A, b: B) {\n\t\tthis.forward.set(a, b)\n\t\tthis.backward.set(b, a)\n\t}\n\n\tpublic getA(key: B) {\n\t\treturn this.backward.get(key)\n\t}\n\n\tpublic getB(key: A) {\n\t\treturn this.forward.get(key)\n\t}\n\n\tpublic getOrPut(key: A, defaultValue: B) {\n\t\tconst b = this.forward.get(key)\n\t\tif (b === undefined) {\n\t\t\tthis.set(key, defaultValue)\n\t\t\treturn defaultValue\n\t\t}\n\t\treturn b\n\t}\n}\n","import { isObject } from '../Utils'\n\nconst repo = 'https://raw.githubusercontent.com/misode/technical-changes/main'\n\nexport type ChangelogEntry = {\n\tgroup: ChangelogVersion,\n\tversion: ChangelogVersion,\n\torder: number,\n\ttags: string[],\n\tcontent: string,\n}\n\nexport type ChangelogVersion = {\n\tid: string,\n\tarticle: string | null,\n}\n\nlet Changelogs: ChangelogEntry[] | Promise | null = null\n\nexport async function getChangelogs() {\n\tif (!Changelogs) {\n\t\tconst index = await (await fetch(`${repo}/index.json`)).json() as string[]\n\t\tChangelogs = (await Promise.all(\n\t\t\tindex.map((group, i) => fetchGroup(parseVersion(group), i))\n\t\t)).flat().map(change => ({\n\t\t\t...change,\n\t\t\ttags: [change.group.id, ...change.tags],\n\t\t}))\n\t}\n\treturn Changelogs\n}\n\nasync function fetchGroup(group: ChangelogVersion, groupIndex: number) {\n\tconst index = await (await fetch(`${repo}/${group.id}/index.json`)).json() as string[]\n\treturn (await Promise.all(\n\t\tindex.map((version, i) => fetchChangelog(group, parseVersion(version), groupIndex, i))\n\t)).flat()\n}\n\nasync function fetchChangelog(group: ChangelogVersion, version: ChangelogVersion, groupIndex: number, versionIndex: number) {\n\tconst text = await (await fetch(`${repo}/${group.id}/${version.id}.md`)).text()\n\treturn parseChangelog(text).map(change => ({\n\t\tversion,\n\t\tgroup,\n\t\torder: groupIndex * 1000 + versionIndex,\n\t\t...change,\n\t}))\n}\n\nfunction parseChangelog(text: string) {\n\treturn text.split('\\n\\n')\n\t\t.map(entry => {\n\t\t\tconst i = entry.indexOf('|')\n\t\t\treturn {\n\t\t\t\ttags: entry.substring(0, i).trim().split(' '),\n\t\t\t\tcontent: entry.slice(i + 1).trim()\n\t\t\t\t\t.replaceAll('->', '→')\n\t\t\t\t\t.replaceAll('\\n...\\n', '\\n\\n'),\n\t\t\t}\n\t\t})\n}\n\nfunction parseVersion(version: unknown): ChangelogVersion {\n\tif (typeof version === 'string') {\n\t\treturn {\n\t\t\tid: version,\n\t\t\tarticle: version.match(/\\d\\dw\\d\\d[a-z]/) ? 'minecraft-snapshot-' + version : version.match(/\\d+\\.\\d+(\\.\\d+)?-pre[0-9]+/) ? 'minecraft-' + version.replaceAll('.', '-').replaceAll('pre', 'pre-release-') : null,\n\t\t}\n\t} else if (isObject(version)) {\n\t\treturn version as ChangelogVersion\n\t}\n\treturn { id: 'unknown', article: null }\n}\n","import type { CollectionRegistry, INode, SchemaRegistry } from '@mcschema/core'\nimport { ChoiceNode, DataModel, Reference, StringNode } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../../config.json'\nimport { message } from '../Utils'\nimport { fetchData } from './DataFetcher'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nexport let CachedDecorator: INode\nexport let CachedFeature: INode\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\t\n\t\tCachedDecorator = Reference(versionData.schemas, 'configured_decorator')\n\t\tCachedFeature = ChoiceNode([\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tnode: StringNode(versionData.collections, { validator: 'resource', params: { pool: '$worldgen/configured_feature' } }),\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'object',\n\t\t\t\tnode: Reference(versionData.schemas, 'configured_feature'),\n\t\t\t},\n\t\t], { choiceContext: 'feature' })\n\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tconst err = new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t\tif (e instanceof Error) err.stack = e.stack\n\t\t\tthrow err\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../../config.json'\nimport { message } from '../Utils'\nimport type { VersionAssets, VersionManifest } from './Manifest'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'mcassets' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst mcassetsUrl = 'https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\nconst manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'\nconst resourceUrl = 'https://resources.download.minecraft.net/'\nconst corsUrl = 'https://misode-cors-anywhere.herokuapp.com/'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t\tfetchAssetsRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic && !r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic && !r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n\tif (checkVersion(version.id, '1.18')) {\n\t\ttarget.register('worldgen/noise', Noises)\n\t\ttarget.register('worldgen/placed_feature', PlacedFeatures)\n\t}\n}\n\nexport async function fetchAssetsRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchAssetsRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tawait Promise.all(registries.map(async r => {\n\t\ttry {\n\t\t\tconst fetchFolder = async (path: string): Promise => {\n\t\t\t\tconst url = `${mcassetsUrl}/${version.refs.mcassets}/assets/minecraft/${path}/_list.json`\n\t\t\t\tconst data = await getData(url)\n\t\t\t\tif (data.directories.length === 0) {\n\t\t\t\t\treturn data.files\n\t\t\t\t}\n\t\t\t\tconst directories = await Promise.all(data.directories.map(async (d: string) => {\n\t\t\t\t\tconst files = await fetchFolder(`${path}/${d}`)\n\t\t\t\t\treturn files.map(v => `${d}/${v}`)\n\t\t\t\t}))\n\t\t\t\treturn [...data.files, ...directories.flat()]\n\t\t\t}\n\t\t\tconst ids = (await fetchFolder(r.path ?? r.id))\t\n\t\t\t\t.filter((v: string) => v.endsWith('.json') || v.endsWith('.png'))\n\t\t\t\t.map(v => `minecraft:${v.replace(/\\.(json|png)$/, '')}`)\n\t\t\ttarget.register(r.id, ids)\n\t\t} catch (e) {\n\t\t\tconsole.warn(`Error occurred while fetching assets registry ${r.id}:`, message(e))\n\t\t}\n\t}))\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = ['blockstates', 'models'].includes(registry)\n\t\t\t?\t`${mcassetsUrl}/${versionData.refs.mcassets}/assets/minecraft/${registry}/${id}.json`\n\t\t\t: `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\tif (registry === 'worldgen/noise_settings' && version === '1.18') {\n\t\t\tlet text = await res.text()\n\t\t\ttext = text.replaceAll('\"max_threshold\": Infinity', '\"max_threshold\": 100')\n\t\t\tconst data = JSON.parse(text)\n\t\t\tif (id !== 'overworld' && id !== 'large_biomes') {\n\t\t\t\tdata.noise.terrain_shaper = { offset: 0, factor: 0, jaggedness: 0 }\n\t\t\t}\n\t\t\treturn data\n\t\t}\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching ${registry} preset ${id}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchManifest() {\n\ttry {\n\t\tconst res = await fetch(manifestUrl)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching version manifest: ${message(e)}`)\n\t}\n}\n\nexport async function fetchAssets(versionId: VersionId, manifest: VersionManifest) {\n\tconst version = config.versions.find(v => v.id === versionId)\n\tconst id = version?.latest ?? manifest.latest.snapshot\n\ttry {\n\t\tconst versionMeta = await getData(manifest.versions.find(v => v.id === id)!.url)\n\t\n\t\treturn (await getData(versionMeta.assetIndex.url)).objects\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching assets for ${version}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchSounds(version: VersionId, assets: VersionAssets) {\n\ttry {\n\t\tconst hash = assets['minecraft/sounds.json'].hash\n\t\treturn await getData(getResourceUrl(hash))\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching sounds for ${version}: ${message(e)}`)\n\t}\n}\n\nexport function getResourceUrl(hash: string) {\n\treturn `${corsUrl}${resourceUrl}${hash.slice(0, 2)}/${hash}`\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n\nconst Noises = [\n\t'minecraft:aquifer_barrier',\n\t'minecraft:aquifer_fluid_level_floodedness',\n\t'minecraft:aquifer_fluid_level_spread',\n\t'minecraft:aquifer_lava',\n\t'minecraft:badlands_pillar',\n\t'minecraft:badlands_pillar_roof',\n\t'minecraft:badlands_surface',\n\t'minecraft:calcite',\n\t'minecraft:cave_cheese',\n\t'minecraft:cave_entrance',\n\t'minecraft:cave_layer',\n\t'minecraft:clay_bands_offset',\n\t'minecraft:continentalness',\n\t'minecraft:continentalness_large',\n\t'minecraft:erosion',\n\t'minecraft:erosion_large',\n\t'minecraft:gravel',\n\t'minecraft:gravel_layer',\n\t'minecraft:ice',\n\t'minecraft:iceberg_pillar',\n\t'minecraft:iceberg_pillar_roof',\n\t'minecraft:iceberg_surface',\n\t'minecraft:jagged',\n\t'minecraft:nether_state_selector',\n\t'minecraft:nether_wart',\n\t'minecraft:netherrack',\n\t'minecraft:noodle',\n\t'minecraft:noodle_ridge_a',\n\t'minecraft:noodle_ridge_b',\n\t'minecraft:noodle_thickness',\n\t'minecraft:offset',\n\t'minecraft:ore_gap',\n\t'minecraft:ore_vein_a',\n\t'minecraft:ore_vein_b',\n\t'minecraft:ore_veininess',\n\t'minecraft:packed_ice',\n\t'minecraft:patch',\n\t'minecraft:pillar',\n\t'minecraft:pillar_rareness',\n\t'minecraft:pillar_thickness',\n\t'minecraft:powder_snow',\n\t'minecraft:ridge',\n\t'minecraft:soul_sand_layer',\n\t'minecraft:spaghetti_2d',\n\t'minecraft:spaghetti_2d_elevation',\n\t'minecraft:spaghetti_2d_modulator',\n\t'minecraft:spaghetti_2d_thickness',\n\t'minecraft:spaghetti_3d_1',\n\t'minecraft:spaghetti_3d_2',\n\t'minecraft:spaghetti_3d_rarity',\n\t'minecraft:spaghetti_3d_thickness',\n\t'minecraft:spaghetti_roughness',\n\t'minecraft:spaghetti_roughness_modulator',\n\t'minecraft:surface',\n\t'minecraft:surface_secondary',\n\t'minecraft:surface_swamp',\n\t'minecraft:temperature',\n\t'minecraft:temperature_large',\n\t'minecraft:vegetation',\n\t'minecraft:vegetation_large',\n]\n\nconst PlacedFeatures = [\n\t'minecraft:acacia_checked',\n\t'minecraft:amethyst_geode',\n\t'minecraft:bamboo',\n\t'minecraft:bamboo_light',\n\t'minecraft:bamboo_vegetation',\n\t'minecraft:basalt_blobs',\n\t'minecraft:basalt_pillar',\n\t'minecraft:birch_bees_0002',\n\t'minecraft:birch_bees_002',\n\t'minecraft:birch_checked',\n\t'minecraft:birch_tall',\n\t'minecraft:blackstone_blobs',\n\t'minecraft:blue_ice',\n\t'minecraft:brown_mushroom_nether',\n\t'minecraft:brown_mushroom_normal',\n\t'minecraft:brown_mushroom_old_growth',\n\t'minecraft:brown_mushroom_swamp',\n\t'minecraft:brown_mushroom_taiga',\n\t'minecraft:cave_vines',\n\t'minecraft:chorus_plant',\n\t'minecraft:classic_vines_cave_feature',\n\t'minecraft:crimson_forest_vegetation',\n\t'minecraft:crimson_fungi',\n\t'minecraft:dark_forest_vegetation',\n\t'minecraft:dark_oak_checked',\n\t'minecraft:delta',\n\t'minecraft:desert_well',\n\t'minecraft:disk_clay',\n\t'minecraft:disk_gravel',\n\t'minecraft:disk_sand',\n\t'minecraft:dripstone_cluster',\n\t'minecraft:end_gateway_return',\n\t'minecraft:end_island_decorated',\n\t'minecraft:end_spike',\n\t'minecraft:fancy_oak_bees',\n\t'minecraft:fancy_oak_bees_0002',\n\t'minecraft:fancy_oak_bees_002',\n\t'minecraft:fancy_oak_checked',\n\t'minecraft:flower_default',\n\t'minecraft:flower_flower_forest',\n\t'minecraft:flower_forest_flowers',\n\t'minecraft:flower_meadow',\n\t'minecraft:flower_plain',\n\t'minecraft:flower_swamp',\n\t'minecraft:flower_warm',\n\t'minecraft:forest_flowers',\n\t'minecraft:forest_rock',\n\t'minecraft:fossil_lower',\n\t'minecraft:fossil_upper',\n\t'minecraft:freeze_top_layer',\n\t'minecraft:glow_lichen',\n\t'minecraft:glowstone',\n\t'minecraft:glowstone_extra',\n\t'minecraft:grass_bonemeal',\n\t'minecraft:ice_patch',\n\t'minecraft:ice_spike',\n\t'minecraft:iceberg_blue',\n\t'minecraft:iceberg_packed',\n\t'minecraft:jungle_bush',\n\t'minecraft:jungle_tree',\n\t'minecraft:kelp_cold',\n\t'minecraft:kelp_warm',\n\t'minecraft:lake_lava_surface',\n\t'minecraft:lake_lava_underground',\n\t'minecraft:large_basalt_columns',\n\t'minecraft:large_dripstone',\n\t'minecraft:lush_caves_ceiling_vegetation',\n\t'minecraft:lush_caves_clay',\n\t'minecraft:lush_caves_vegetation',\n\t'minecraft:mega_jungle_tree_checked',\n\t'minecraft:mega_pine_checked',\n\t'minecraft:mega_spruce_checked',\n\t'minecraft:monster_room',\n\t'minecraft:monster_room_deep',\n\t'minecraft:mushroom_island_vegetation',\n\t'minecraft:nether_sprouts',\n\t'minecraft:oak_bees_0002',\n\t'minecraft:oak_bees_002',\n\t'minecraft:oak_checked',\n\t'minecraft:ore_ancient_debris_large',\n\t'minecraft:ore_andesite_lower',\n\t'minecraft:ore_andesite_upper',\n\t'minecraft:ore_blackstone',\n\t'minecraft:ore_clay',\n\t'minecraft:ore_coal_lower',\n\t'minecraft:ore_coal_upper',\n\t'minecraft:ore_copper',\n\t'minecraft:ore_copper_large',\n\t'minecraft:ore_debris_small',\n\t'minecraft:ore_diamond',\n\t'minecraft:ore_diamond_buried',\n\t'minecraft:ore_diamond_large',\n\t'minecraft:ore_diorite_lower',\n\t'minecraft:ore_diorite_upper',\n\t'minecraft:ore_dirt',\n\t'minecraft:ore_emerald',\n\t'minecraft:ore_gold',\n\t'minecraft:ore_gold_deltas',\n\t'minecraft:ore_gold_extra',\n\t'minecraft:ore_gold_lower',\n\t'minecraft:ore_gold_nether',\n\t'minecraft:ore_granite_lower',\n\t'minecraft:ore_granite_upper',\n\t'minecraft:ore_gravel',\n\t'minecraft:ore_gravel_nether',\n\t'minecraft:ore_infested',\n\t'minecraft:ore_iron_middle',\n\t'minecraft:ore_iron_small',\n\t'minecraft:ore_iron_upper',\n\t'minecraft:ore_lapis',\n\t'minecraft:ore_lapis_buried',\n\t'minecraft:ore_magma',\n\t'minecraft:ore_quartz_deltas',\n\t'minecraft:ore_quartz_nether',\n\t'minecraft:ore_redstone',\n\t'minecraft:ore_redstone_lower',\n\t'minecraft:ore_soul_sand',\n\t'minecraft:ore_tuff',\n\t'minecraft:patch_berry_common',\n\t'minecraft:patch_berry_rare',\n\t'minecraft:patch_cactus_decorated',\n\t'minecraft:patch_cactus_desert',\n\t'minecraft:patch_crimson_roots',\n\t'minecraft:patch_dead_bush',\n\t'minecraft:patch_dead_bush_2',\n\t'minecraft:patch_dead_bush_badlands',\n\t'minecraft:patch_fire',\n\t'minecraft:patch_grass_badlands',\n\t'minecraft:patch_grass_forest',\n\t'minecraft:patch_grass_jungle',\n\t'minecraft:patch_grass_normal',\n\t'minecraft:patch_grass_plain',\n\t'minecraft:patch_grass_savanna',\n\t'minecraft:patch_grass_taiga',\n\t'minecraft:patch_grass_taiga_2',\n\t'minecraft:patch_large_fern',\n\t'minecraft:patch_melon',\n\t'minecraft:patch_pumpkin',\n\t'minecraft:patch_soul_fire',\n\t'minecraft:patch_sugar_cane',\n\t'minecraft:patch_sugar_cane_badlands',\n\t'minecraft:patch_sugar_cane_desert',\n\t'minecraft:patch_sugar_cane_swamp',\n\t'minecraft:patch_sunflower',\n\t'minecraft:patch_tall_grass',\n\t'minecraft:patch_tall_grass_2',\n\t'minecraft:patch_waterlily',\n\t'minecraft:pine_checked',\n\t'minecraft:pine_on_snow',\n\t'minecraft:pointed_dripstone',\n\t'minecraft:red_mushroom_nether',\n\t'minecraft:red_mushroom_normal',\n\t'minecraft:red_mushroom_old_growth',\n\t'minecraft:red_mushroom_swamp',\n\t'minecraft:red_mushroom_taiga',\n\t'minecraft:rooted_azalea_tree',\n\t'minecraft:sea_pickle',\n\t'minecraft:seagrass_cold',\n\t'minecraft:seagrass_deep',\n\t'minecraft:seagrass_deep_cold',\n\t'minecraft:seagrass_deep_warm',\n\t'minecraft:seagrass_normal',\n\t'minecraft:seagrass_river',\n\t'minecraft:seagrass_simple',\n\t'minecraft:seagrass_swamp',\n\t'minecraft:seagrass_warm',\n\t'minecraft:small_basalt_columns',\n\t'minecraft:spore_blossom',\n\t'minecraft:spring_closed',\n\t'minecraft:spring_closed_double',\n\t'minecraft:spring_delta',\n\t'minecraft:spring_lava',\n\t'minecraft:spring_lava_frozen',\n\t'minecraft:spring_open',\n\t'minecraft:spring_water',\n\t'minecraft:spruce_checked',\n\t'minecraft:spruce_on_snow',\n\t'minecraft:super_birch_bees',\n\t'minecraft:super_birch_bees_0002',\n\t'minecraft:trees_badlands',\n\t'minecraft:trees_birch',\n\t'minecraft:trees_birch_and_oak',\n\t'minecraft:trees_flower_forest',\n\t'minecraft:trees_grove',\n\t'minecraft:trees_jungle',\n\t'minecraft:trees_meadow',\n\t'minecraft:trees_old_growth_pine_taiga',\n\t'minecraft:trees_old_growth_spruce_taiga',\n\t'minecraft:trees_plains',\n\t'minecraft:trees_savanna',\n\t'minecraft:trees_snowy',\n\t'minecraft:trees_sparse_jungle',\n\t'minecraft:trees_swamp',\n\t'minecraft:trees_taiga',\n\t'minecraft:trees_water',\n\t'minecraft:trees_windswept_forest',\n\t'minecraft:trees_windswept_hills',\n\t'minecraft:trees_windswept_savanna',\n\t'minecraft:twisting_vines',\n\t'minecraft:underwater_magma',\n\t'minecraft:vines',\n\t'minecraft:void_start_platform',\n\t'minecraft:warm_ocean_vegetation',\n\t'minecraft:warped_forest_vegetation',\n\t'minecraft:warped_fungi',\n\t'minecraft:weeping_vines',\n]\n","import { fetchAssets, fetchManifest, fetchSounds } from './DataFetcher'\nimport type { VersionId } from './Schemas'\n\nexport type VersionManifest = {\n\tlatest: {\n\t\trelease: string,\n\t\tsnapshot: string,\n\t},\n\tversions: {\n\t\tid: string,\n\t\ttype: string,\n\t\turl: string,\n\t}[],\n}\nlet Manifest: VersionManifest | Promise | null = null\n\nexport type VersionAssets = {\n\t[key: string]: {\n\t\thash: string,\n\t},\n}\nconst VersionAssets: Record> = {}\n\nexport type SoundEvents = {\n\t[key: string]: {\n\t\tsounds: (string | { name: string })[],\n\t},\n}\nconst SoundEvents: Record> = {}\n\nexport async function getManifest() {\n\tif (!Manifest) {\n\t\tManifest = fetchManifest()\n\t}\n\treturn Manifest\n}\n\nexport async function getAssets(version: VersionId) {\n\tif (!VersionAssets[version]) {\n\t\tVersionAssets[version] = (async () => {\n\t\t\tconst manifest = await getManifest()\n\t\t\treturn await fetchAssets(version, manifest)\n\t\t})()\n\t}\n\treturn VersionAssets[version]\n}\n\nexport async function getSounds(version: VersionId) {\n\tif (!SoundEvents[version]) {\n\t\tSoundEvents[version] = (async () => {\n\t\t\tconst assets = await getAssets(version)\n\t\t\treturn await fetchSounds(version, assets)\n\t\t})()\n\t}\n\treturn SoundEvents[version]\n}\n","import { DataModel } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { FixedBiome, LegacyRandom, NormalNoise, TerrainShaper } from 'deepslate'\nimport init, { biome_parameters, climate_noise, climate_sampler, multi_noise } from 'deepslate-rs'\n// @ts-expect-error\nimport wasm from 'deepslate-rs/deepslate_rs_bg.wasm?url'\nimport type { VersionId } from '../services'\nimport { fetchPreset } from '../services'\nimport { BiMap, clamp, deepClone, deepEqual, square, stringToColor } from '../Utils'\n\nlet ready = false\nasync function loadWasm() {\n\tif (ready) return\n\tawait init(wasm)\n\tready = true\n\tconsole.debug(`Loaded deepslate-rs from \"${wasm}\"`)\n}\n\nconst LAYERS = {\n\ttemperature: [-1, 1],\n\thumidity: [-1, 1],\n\tcontinentalness: [-1.1, 1],\n\terosion: [-1, 1],\n\tweirdness: [-1, 1],\n\toffset: [-1, 1],\n\tfactor: [0, 12],\n\tjaggedness: [0, 1],\n}\n\ntype Triple = [number, number, number]\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tshaper: TerrainShaper,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n\tlayers: Set,\n}\n\ninterface CachedBiomeSource {\n\tgetBiome(x: number, y: number, z: number): string\n\tgetBiomes?(xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): string[]\n\tgetClimate?(layers: Set, xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): {[k: string]: number}[]\n}\n\nlet cacheState: any\nlet biomeSourceCache: CachedBiomeSource\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -Math.round(options.offset[0]) - 100 + options.res / 2\n\tconst oz = -Math.round(options.offset[1]) - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\n\tconst xRange: Triple = [ox * options.scale, (200 + ox) * options.scale, options.res * options.scale]\n\tconst zRange: Triple = [oz * options.scale, (200 + oz) * options.scale, options.res * options.scale]\n\n\tconst biomes = !options.layers.has('biomes') ? undefined : biomeSource.getBiomes?.(...xRange, 64, 65, 1, ...zRange)\n\tconst layers = [...options.layers].filter(l => l !== 'biomes') as (keyof typeof LAYERS)[]\n\tconst noise = layers.length === 0 ? undefined : biomeSource.getClimate?.(new Set(layers), ...xRange, 64, 65, 1, ...zRange)\n\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst j = (x / options.res) * 200 / options.res + z / options.res\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tlet color: Triple = [50, 50, 50]\n\t\t\tif (options.layers.has('biomes')) {\n\t\t\t\tconst biome = biomes?.[j] ?? biomeSource.getBiome(worldX, 64, worldZ)\n\t\t\t\tcolor = getBiomeColor(biome, options.biomeColors)\n\t\t\t} else if (noise && layers[0]) {\n\t\t\t\tconst value = noise[j][layers[0]]\n\t\t\t\tconst [min, max] = LAYERS[layers[0]]\n\t\t\t\tconst brightness = (value - min) / (max - min) * 256\n\t\t\t\tcolor = [brightness, brightness, brightness]\n\t\t\t}\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: CachedBiomeSource}> {\n\tconst newState = [state, options.octaves, options.shaper.toJson(), `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = DataModel.unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\tawait loadWasm()\n\t\t\t\tconst BiomeIds = new BiMap()\n\t\t\t\tconst param = (p: number | number[]) => {\n\t\t\t\t\treturn typeof p === 'number' ? [p, p] : p\n\t\t\t\t}\n\t\t\t\tconst [t0, t1, h0, h1, c0, c1, e0, e1, w0, w1, d0, d1, o, b] = [[], [], [], [], [], [], [], [], [], [], [], [], [], []] as number[][]\n\t\t\t\tfor (const i of state.biomes) {\n\t\t\t\t\tconst { temperature, humidity, continentalness, erosion, weirdness, depth, offset } = i.parameters\n\t\t\t\t\tt0.push(param(temperature)[0])\n\t\t\t\t\tt1.push(param(temperature)[1])\n\t\t\t\t\th0.push(param(humidity)[0])\n\t\t\t\t\th1.push(param(humidity)[1])\n\t\t\t\t\tc0.push(param(continentalness)[0])\n\t\t\t\t\tc1.push(param(continentalness)[1])\n\t\t\t\t\te0.push(param(erosion)[0])\n\t\t\t\t\te1.push(param(erosion)[1])\n\t\t\t\t\tw0.push(param(weirdness)[0])\n\t\t\t\t\tw1.push(param(weirdness)[1])\n\t\t\t\t\td0.push(param(depth)[0])\n\t\t\t\t\td1.push(param(depth)[1])\n\t\t\t\t\to.push(offset)\n\t\t\t\t\tb.push(BiomeIds.getOrPut(i.biome, Math.floor(Math.random() * 2147483647)))\n\t\t\t\t}\n\t\t\t\tconst parameters = biome_parameters(new Float64Array(t0), new Float64Array(t1), new Float64Array(h0), new Float64Array(h1), new Float64Array(c0), new Float64Array(c1), new Float64Array(e0), new Float64Array(e1), new Float64Array(w0), new Float64Array(w1), new Float64Array(d0), new Float64Array(d1), new Float64Array(o), new Int32Array(b))\n\t\t\t\tconst sampler = climate_sampler(options.seed, options.octaves.temperature.firstOctave, new Float64Array(options.octaves.temperature.amplitudes), options.octaves.humidity.firstOctave, new Float64Array(options.octaves.humidity.amplitudes), options.octaves.continentalness.firstOctave, new Float64Array(options.octaves.continentalness.amplitudes), options.octaves.erosion.firstOctave, new Float64Array(options.octaves.erosion.amplitudes), options.octaves.weirdness.firstOctave, new Float64Array(options.octaves.weirdness.amplitudes), options.octaves.shift.firstOctave, new Float64Array(options.octaves.shift.amplitudes))\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x, y, z) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, x, x + 1, 1, y, y + 1, 1, z, z + 1, 1)\n\t\t\t\t\t\treturn BiomeIds.getA(ids[0]) ?? 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tgetBiomes(xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\treturn [...ids].map(id => BiomeIds.getA(id) ?? 'unknown')\n\t\t\t\t\t},\n\t\t\t\t\tgetClimate(layers, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst climate = climate_noise(sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\tconst result = []\n\t\t\t\t\t\tfor (let i = 0; i < climate.length; i += 7) {\n\t\t\t\t\t\t\tconst [t, h, c, e, w] = climate.slice(i, i + 5)\n\t\t\t\t\t\t\tconst point = TerrainShaper.point(c, e, w)\n\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\ttemperature: t,\n\t\t\t\t\t\t\t\thumidity: h,\n\t\t\t\t\t\t\t\tcontinentalness: c,\n\t\t\t\t\t\t\t\terosion: e,\n\t\t\t\t\t\t\t\tweirdness: w,\n\t\t\t\t\t\t\t\t...layers.has('offset') && { offset: options.shaper.offset(point) },\n\t\t\t\t\t\t\t\t...layers.has('factor') && { factor: options.shaper.factor(point) },\n\t\t\t\t\t\t\t\t...layers.has('jaggedness') && { jaggedness: options.shaper.jaggedness(point) },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new LegacyRandom(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:old_growth_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:old_growth_pine_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_hills': [136,136,136],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:windswept_gravelly_hills': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:sparse_jungle': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:extreme_hills': [96,96,96],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:windswept_hills': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:windswept_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:snowy_plains': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:stony_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:old_growth_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_badlands': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:windswept_forest': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:jagged_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:frozen_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { DataModel } from '@mcschema/core'\nimport type { Random } from 'deepslate'\nimport { LegacyRandom, PerlinNoise } from 'deepslate'\nimport type { VersionId } from '../services'\nimport { clamp, stringToColor } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], DataModel.unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { LegacyRandom, PerlinNoise } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new LegacyRandom(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import { DataModel } from '@mcschema/core'\nimport type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport { getOctaves } from '../components'\nimport type { VersionId } from '../services'\nimport { checkVersion } from '../services'\nimport { deepClone, deepEqual } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeScale?: number,\n\tbiomeDepth?: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeDepth ?? 0, options.biomeScale ?? 0, options.offset, options.width)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(state))\n\tsettings.octaves = getOctaves(settings)\n\n\tconst newState = [state, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings, TerrainShaper } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nconst LAYERS = ['biomes', 'temperature', 'humidity', 'continentalness', 'erosion', 'weirdness', 'offset', 'factor', 'jaggedness'] as const\n\nconst OverworldShaper = TerrainShaper.overworld()\n\nexport const BiomeSourcePreview = ({ model, data, shown, lang, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst [layers, setLayers] = useState(new Set(['biomes']))\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst shaper = getShaper(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves, shaper) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150) as any\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed, layers])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, layers, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t\n\t\t\t\t\t{LAYERS.map(name => {\n\t\t\t\t\t\tconst enabled = layers.has(name)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tsetLayers(new Set([name]))\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}} />\n\t\t\t\t\t})}\n\t\t\t\t}\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves, shaper: TerrainShaper) {\n\treturn JSON.stringify([data, octaves, shaper.toJson()])\n}\n\nexport function getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj !== 'string') {\n\t\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(obj))\n\t\tobj = settings.noise.densityFactor === 0 && settings.noise.densityOffset === -0.030078125\n\t\t\t? 'minecraft:nether' : 'minecraft:overworld'\n\t}\n\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\tcase 'overworld':\n\t\tcase 'amplified':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t}\n\t\tcase 'end':\n\t\tcase 'floating_islands':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t}\n}\n\nexport function getShaper(obj: any): TerrainShaper {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn OverworldShaper\n\t\t\tdefault:\n\t\t\t\treturn TerrainShaper.fromJson({ offset: 0, factor: 0, jaggedness: 0 })\n\t\t}\n\t}\n\treturn TerrainShaper.fromJson(DataModel.unwrapLists(obj?.noise?.terrain_shaper))\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown, lang }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { normalNoise } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const NoisePreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [scale, setScale] = useState(2)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst state = JSON.stringify([data])\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [256, 256]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { offset: offset.current, scale, seed, version }\n\t\t\tnormalNoise(data, img, options)\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 256\n\t\t\toffset.current[1] = offset.current[1] + dy * 256\n\t\t\tredraw()\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t changeScale(scale * 1.5)} />\n\t\t\t changeScale(scale / 1.5)} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { DataModel } from '@mcschema/core'\nimport { LegacyRandom, NoiseParameters, NormalNoise } from 'deepslate'\nimport type { VersionId } from '../services'\n\nexport type NoiseOptions = {\n\toffset: [number, number],\n\tscale: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nexport function normalNoise(state: any, img: ImageData, options: NoiseOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst params = NoiseParameters.fromJson(DataModel.unwrapLists(state))\n\tconst noise = new NormalNoise(random, params)\n\n\tconst ox = -options.offset[0] - 100\n\tconst oz = -options.offset[1] - 100\n\tconst data = img.data\n\tfor (let x = 0; x < 256; x += 1) {\n\t\tfor (let y = 0; y < 256; y += 1) {\n\t\t\tconst i = x * 4 + y * 4 * 256\n\t\t\tconst xx = (x + ox) * options.scale\n\t\t\tconst yy = (y + oz) * options.scale\n\t\t\tconst color = (noise.sample(xx, yy, 0) + 1) * 128\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../services'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeScale, setBiomeScale] = useState(0.2)\n\tconst [biomeDepth, setBiomeDepth] = useState(0.1)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeScale, biomeDepth])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeDepth, biomeScale, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{checkVersion(version, undefined, '1.17') &&\n\t\t\t\t\n\t\t\t\t\t setBiomeScale(Number(v))} />\n\t\t\t\t\t setBiomeDepth(Number(v))} />\n\t\t\t\t\n\t\t\t}\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport type { VersionId } from '../../services'\nimport { BiomeSourcePreview, DecoratorPreview, NoisePreview, NoiseSettingsPreview } from '../previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../services'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\tconst res = value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a as any]\n\t\t}\n\t\treturn res\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a]\n\t\t}\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tconst out = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t\tif (out !== undefined && out !== null) {\n\t\t\t\t\tres[f] = out\n\t\t\t\t}\n\t\t\t})\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a]\n\t\t}\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './services'\nimport { VersionIds } from './services'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\texport const ID_FORMAT = 'output_format'\n\texport const ID_SOUNDS_VERSION = 'minecraft_sounds_version'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function getFormat() {\n\t\treturn localStorage.getItem(ID_FORMAT) ?? 'json'\n\t}\n\n\texport function getSoundsVersion() {\n\t\treturn localStorage.getItem(ID_SOUNDS_VERSION) ?? 'latest'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n\n\texport function setFormat(format: string | undefined) {\n\t\tif (format) localStorage.setItem(ID_FORMAT, format)\n\t}\n\n\texport function setSoundsVersion(version: string | undefined) {\n\t\tif (version) localStorage.setItem(ID_SOUNDS_VERSION, version)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport json from 'comment-json'\nimport yaml from 'js-yaml'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '..'\nimport { useModel } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { transformOutput } from '../../schema/transformOutput'\nimport type { BlockStateRegistry } from '../../services'\nimport { Store } from '../../Store'\nimport { message } from '../../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n\tminified: undefined,\n}\n\nconst FORMATS: Record any,\n\tstringify: (v: any, indentation: string | number | undefined) => string,\n}> = {\n\tjson: {\n\t\tparse: json.parse,\n\t\tstringify: (v, i) => json.stringify(v, null, i),\n\t},\n\tyaml: {\n\t\tparse: yaml.load,\n\t\tstringify: (v, i) => yaml.dump(v, {\n\t\t\tflowLevel: i === undefined ? 0 : -1,\n\t\t\tindent: typeof i === 'string' ? 4 : i,\n\t\t}),\n\t},\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst [format, setFormat] = useState(Store.getFormat())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn FORMATS[format].stringify(data, INDENT[indent]) + '\\n'\n\t}, [indent, format])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent, format])\n\n\tconst onImport = () => {\n\t\tif (source.current.value.length === 0) return\n\t\ttry {\n\t\t\tconst data = FORMATS[format].parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && model && blockStates && download.current) {\n\t\t\tconst content = encodeURIComponent(getOutput(model, blockStates))\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.${format}`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\tconst changeFormat = (value: string) => {\n\t\tStore.setFormat(value)\n\t\tsetFormat(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t{Object.keys(FORMATS).map(key =>\n\t\t\t\t\t changeFormat(key)} />)}\n\t\t\t
\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { INode, Path } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\n\nexport class ModelWrapper extends DataModel {\n\tconstructor(\n\t\tschema: INode,\n\t\tprivate readonly mapper: (path: Path) => Path,\n\t\tprivate readonly getter: (path: Path) => any,\n\t\tprivate readonly setter: (path: Path, value: any, silent?: boolean) => any,\n\t) {\n\t\tsuper(schema)\n\t}\n\n\tmap(path: Path) {\n\t\treturn this.mapper(path)\n\t}\n\n\tget(path: Path) {\n\t\treturn this.getter(path)\n\t}\n\n\tset(path: Path, value: any, silent?: boolean) {\n\t\treturn this.setter(path, value, silent)\n\t}\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NodeChildren, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, ListNode, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Btn, Octicon } from '../components'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../services'\nimport { CachedDecorator, CachedFeature } from '../services'\nimport { deepClone, deepEqual, hexId, isObject, newSeed } from '../Utils'\nimport { ModelWrapper } from './ModelWrapper'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state', 'material_rule.block.result_state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset', 'model_element.from', 'model_element.to', 'model_element.rotation.origin', 'model_element.faces.uv', 'item_transform.rotation', 'item_transform.translation', 'item_transform.scale']\nconst collapsedFields = ['noise_settings.surface_rule', 'noise_settings.noise.terrain_shaper']\n\nconst findGenerator = (id: string) => {\n\treturn config.generators.find(g => g.id === id.replace(/^\\$/, ''))\n}\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, VersionId, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tversion: VersionId,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, version, blockStates }: { model: DataModel, lang: string, version: VersionId, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, version, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, version, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, version, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (type: string) => {\n\t\t\tconst c = choices.find(c => c.type === type) ?? choice\n\t\t\tconst def = c.node.default()\n\t\t\tconst newValue = c.change\n\t\t\t\t? c.change(DataModel.unwrapLists(value))\n\t\t\t\t: config.choiceContext === 'feature' && def?.type === 'minecraft:decorated' ? def.config.feature : def\n\t\t\tpath.model.set(path, DataModel.wrapLists(newValue))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, version, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst actions: MenuAction[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'duplicate',\n\t\t\t\t\t\tlabel: 'duplicate',\n\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\tconst v = [...path.get()]\n\t\t\t\t\t\t\tv.splice(index, 0, { id: hexId(), node: deepClone(cValue) })\n\t\t\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 0 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, version, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, version, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, config, getActiveFields, getChildModelPath }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tif (path.getArray().length == 0 && isDecorated(config.context, value)) {\n\t\t\tconst { wrapper, fields } = createDecoratorsWrapper(getActiveFields(path), path, value)\n\t\t\tvalue = wrapper.data\n\t\t\tgetActiveFields = () => fields\n\t\t\tgetChildModelPath = (path, key) => new ModelPath(wrapper, new Path(path.getArray(), ['feature'])).push(key)\n\t\t}\n\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst context = path.getContext().join('.')\n\t\tif (collapsedFields.includes(context)) {\n\t\t\tconst toggled = isToggled('')\n\t\t\tprefix = <>\n\t\t\t\t\n\t\t\t\n\t\t\tif (!toggled) {\n\t\t\t\treturn [prefix, suffix, null]\n\t\t\t}\n\t\t}\n\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, version, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\tif (!(toggleState instanceof Map)) return false\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value, lang }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tpath.model.set(path, parsed)\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tpath.model.set(path, parsed)\n\t}\n\treturn <>\n\t\t {if (evt.key === 'Enter') onChange(evt)}} />\n\t\t{config?.color && }\n\t\t{['dimension.generator.seed', 'dimension.generator.biome_source.seed', 'world_settings.seed'].includes(path.getContext().join('.')) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, version, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tif (newValue === value) return\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tconst id = !isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string' ? config.params.pool : undefined\n\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (id) {\n\t\t\tcontext = context.contextPush(id)\n\t\t} else if (isEnum(config)) {\n\t\t\tcontext = path\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\tconst gen = id ? findGenerator(id) : undefined\n\t\treturn <>\n\t\t\t {if (evt.key === 'Enter') onChange(evt)}}\n\t\t\t\tlist={values.length > 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\t{gen && values.includes(value) && value.startsWith('minecraft:') &&\n\t\t\t\t{Octicon.link_external}}\n\t\t\n\t}\n}\n\ntype MenuAction = {\n\tlabel: string,\n\tdescription?: string,\n\ticon: keyof typeof Octicon,\n\tonSelect: () => unknown,\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tversion: VersionId,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tactions?: MenuAction[],\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, version, states, ctx, actions, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx: Record = { ...ctx, depth: (ctx.depth ?? 0) + 1 }\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, version, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tif (path.model instanceof ModelWrapper) {\n\t\tpath = path.model.map(path).withModel(path.model)\n\t}\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n\nfunction isDecorated(context: string | undefined, value: any) {\n\treturn context === 'feature'\n\t\t&& value?.type?.replace(/^minecraft:/, '') === 'decorated'\n\t\t&& isObject(value?.config)\n}\n\nfunction createDecoratorsWrapper(originalFields: NodeChildren, path: ModelPath, value: any) {\n\tconst decorators: any[] = []\n\tconst feature = iterateNestedDecorators(value, decorators)\n\tconst fields = {\n\t\ttype: originalFields.type,\n\t\tconfig: ObjectNode({\n\t\t\tdecorators: ListNode(CachedDecorator),\n\t\t\tfeature: CachedFeature,\n\t\t}, { context: 'feature.decorated' }),\n\t}\n\tconst schema = ObjectNode(fields, { context: 'feature' })\n\tconst featurePath = new Path(['config', 'feature'])\n\tconst decoratorsPath = new Path(['config', 'decorators'])\n\tconst model = path.getModel()\n\tconst wrapper: ModelWrapper = new ModelWrapper(schema, path => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\treturn new Path([...[...Array(decorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\treturn new Path([])\n\t\t\t}\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (typeof index === 'number') {\n\t\t\t\treturn new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t}\n\t\t}\n\t\treturn path\n\t}, path => {\n\t\tif (path.equals(decoratorsPath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\treturn newDecorators\n\t\t}\n\t\treturn model.get(wrapper.map(path))\n\t}, (path, value, silent) => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\tconst newPath =new Path([...[...Array(newDecorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t\treturn model.set(newPath, value, silent)\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\treturn model.set(new Path(), produceNestedDecorators(feature, value), silent)\n\t\t\t} else if (typeof index === 'number') {\n\t\t\t\tif (path.modelArr.length === 3 && value === undefined) {\n\t\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\t\tconst newDecorators: any[] = []\n\t\t\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\t\t\tnewDecorators.splice(index, 1)\n\t\t\t\t\tconst newValue = produceNestedDecorators(feature, newDecorators)\n\t\t\t\t\treturn model.set(new Path(), newValue, silent)\n\t\t\t\t} else {\n\t\t\t\t\tconst newPath = new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t\t\treturn model.set(newPath, value, silent)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmodel.set(path, value, silent)\n\t})\n\twrapper.data = {\n\t\ttype: model.data.type,\n\t\tconfig: {\n\t\t\tdecorators,\n\t\t\tfeature,\n\t\t},\n\t}\n\twrapper.errors = model.errors\n\treturn { fields, wrapper }\n}\n\nfunction iterateNestedDecorators(value: any, decorators: any[]): any {\n\tif (value?.type?.replace(/^minecraft:/, '') !== 'decorated') {\n\t\treturn value\n\t}\n\tif (!isObject(value?.config)) {\n\t\treturn value\n\t}\n\tdecorators.push({ id: decorators.length, node: value.config.decorator })\n\treturn iterateNestedDecorators(value.config.feature ?? '', decorators)\n}\n\nfunction produceNestedDecorators(feature: any, decorators: any[]): any {\n\tif (decorators.length === 0) return feature\n\treturn {\n\t\ttype: 'minecraft:decorated',\n\t\tconfig: {\n\t\t\tdecorator: decorators.shift().node,\n\t\t\tfeature: produceNestedDecorators(feature, decorators),\n\t\t},\n\t}\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport { FullNode } from '../../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../../services'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, version, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates || lang === 'none') return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../services'\nimport { checkVersion } from '../services'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import { Howl } from 'howler'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, NumberInput, RangeInput, TextInput } from '..'\nimport { locale } from '../../Locales'\nimport type { SoundEvents, VersionAssets } from '../../services'\nimport { getResourceUrl } from '../../services'\n\nexport interface SoundConfig {\n\tid: string,\n\tsound: string,\n\tdelay: number,\n\tpitch: number,\n\tvolume: number,\n}\ntype SoundConfigProps = SoundConfig & {\n\tlang: string,\n\tassets: VersionAssets,\n\tsounds: SoundEvents,\n\tonEdit: (changes: Partial) => unknown,\n\tonDelete: () => unknown,\n\tdelayedPlay?: number,\n}\nexport function SoundConfig({ lang, assets, sounds, sound, delay, pitch, volume, onEdit, onDelete, delayedPlay }: SoundConfigProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [loading, setLoading] = useState(true)\n\tconst [playing, setPlaying] = useState(false)\n\tconst [invalid, setInvalid] = useState(false)\n\tconst howls = useRef([])\n\tconst command = `playsound minecraft:${sound} master @s ~ ~ ~ ${volume} ${pitch}`\n\n\tuseEffect(() => {\n\t\tconst soundEvent = sounds[sound]\n\t\tsetInvalid((soundEvent?.sounds?.length ?? 0) === 0)\n\t\thowls.current.forEach(h => h.stop())\n\t\thowls.current = (soundEvent?.sounds ?? []).map(entry => {\n\t\t\tconst soundPath = typeof entry === 'string' ? entry : entry.name\n\t\t\tconst hash = assets[`minecraft/sounds/${soundPath}.ogg`].hash\n\t\t\tconst url = getResourceUrl(hash)\n\t\t\tconst howl = new Howl({\n\t\t\t\tsrc: [url],\n\t\t\t\tformat: ['ogg'],\n\t\t\t\tvolume,\n\t\t\t\trate: pitch,\n\t\t\t})\n\t\t\thowl.on('end', () => {\n\t\t\t\tsetPlaying(false)\n\t\t\t})\n\t\t\tconst completed = () => {\n\t\t\t\tif (loading && howls.current.every(h => h.state() === 'loaded')) {\n\t\t\t\t\tsetLoading(false)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (howl.state() === 'loaded') {\n\t\t\t\tsetTimeout(() => completed())\n\t\t\t} else {\n\t\t\t\thowl.on('load', () => {\n\t\t\t\t\tcompleted()\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn howl\n\t\t})\n\t\tsetLoading(true)\n\t}, [sound, sounds])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.rate(pitch))\n\t}, [pitch])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.volume(volume))\n\t}, [volume])\n\n\tconst play = () => {\n\t\tif (loading || invalid) return\n\t\tstop()\n\t\tconst howl = Math.floor(Math.random() * howls.current.length)\n\t\thowls.current[howl].play()\n\t\tsetPlaying(true)\n\t}\n\tconst stop = () => {\n\t\thowls.current.forEach(h => h.stop())\n\t}\n\tuseEffect(() => {\n\t\tif (delayedPlay) setTimeout(() => play(), delay * 50)\n\t}, [delayedPlay])\n\n\tuseEffect(() => {\n\t\treturn () => stop()\n\t}, [])\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copy = () => {\n\t\tnavigator.clipboard.writeText(command)\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\treturn
\n\t\t\n\t\t onEdit({ sound })} />\n\t\t\n\t\t onEdit({ delay })} />\n\t\t\n\t\t onEdit({ pitch })} />\n\t\t\n\t\t onEdit({ volume })} />\n\t\t\n\t\t {onDelete(); stop()}} />\n\t
\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tdesc?: string,\n\tlink?: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, desc, link, icon, children }: ToolCardProps) {\n\tconst content = <>\n\t\t
\n\t\t\t{icon && Icons[icon]}\n\t\t\t
\n\t\t\t\t

{title}

\n\t\t\t\t

{desc}

\n\t\t\t
\n\t\t
\n\t\t{children &&
\n\t\t\t{children}\n\t\t
}\n\t\n\treturn link\n\t\t? {content}\n\t\t:
{content}
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tcategory: string,\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Category({ category, lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc(category)))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import marked from 'marked'\nimport { useEffect, useMemo, useState } from 'preact/hooks'\nimport { Ad, Btn, ErrorPanel, Octicon, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { ChangelogEntry, ChangelogVersion, VersionId } from '../services'\nimport { getChangelogs } from '../services'\nimport { hashString } from '../Utils'\n\ntype ChangelogProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n}\nexport function Changelog({ lang, changeTitle }: ChangelogProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.changelog'))\n\n\tconst [changelogs, setChangelogs] = useState([])\n\tuseEffect(() => {\n\t\tgetChangelogs()\n\t\t\t.then(changelogs => setChangelogs(changelogs))\n\t\t\t.catch(e => { console.error(e); setError(e) })\n\t}, [])\n\n\tconst [search, setSearch] = useState('')\n\tconst [tags, setTags] = useState([])\n\tconst toggleTag = (tag: string) => {\n\t\tif (!tags.includes(tag)) {\n\t\t\tsetTags([...tags, tag])\n\t\t} else {\n\t\t\tsetTags(tags.filter(t => t !== tag))\n\t\t}\n\t}\n\n\tconst filteredChangelogs = useMemo(() => {\n\t\tconst query = search.split(' ').map(q => q.trim().toLowerCase()).filter(q => q.length > 0)\n\t\tif (query.length === 0 && tags.length === 0) return changelogs\n\t\treturn changelogs.filter(change => {\n\t\t\tif (!tags.every(tag => change.tags.includes(tag))) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst content = change.tags.join(' ') + ' ' + change.content.toLowerCase()\n\t\t\treturn query.every(q => {\n\t\t\t\tif (q.startsWith('!')) {\n\t\t\t\t\treturn q.length === 1 || !content.includes(q.slice(1))\n\t\t\t\t}\n\t\t\t\treturn content.includes(q)\n\t\t\t})\n\t\t})\n\t}, [changelogs, search, tags])\n\n\tconst [sort, setSort] = useState(true)\n\n\tconst sortedChangelogs = useMemo(() => {\n\t\treturn filteredChangelogs.sort((a, b) => sort ? b.order - a.order : a.order - b.order)\n\t}, [filteredChangelogs, sort])\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setSort(!sort)} />\n\t\t\t
\n\t\t\t{tags.length > 0 &&
\n\t\t\t\t{tags.map(tag => setTags(tags.filter(t => t !== tag))} />)}\n\t\t\t
}\n\t\t
\n\t\t
\n\t\t\t{sortedChangelogs.map(change =>\n\t\t\t\t)}\n\t\t
\n\t
\n}\n\ntype ChangeProps = {\n\tchange: ChangelogEntry,\n\tactiveTags: string[],\n\ttoggleTag: (tag: string) => unknown,\n}\nfunction Change({ change, activeTags, toggleTag }: ChangeProps) {\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t{change.tags.map(tag => toggleTag(tag)} active={activeTags.includes(tag)} />)}\n\t\t
\n\t\t
\n\t
\n}\n\nfunction ArticleLink({ id, article }: ChangelogVersion) {\n\treturn article === null\n\t\t? {id}\n\t\t: {id}\n}\n\ntype TagProps = {\n\tlabel: string,\n\tactive?: boolean,\n\tonClick?: () => unknown,\n}\nfunction Tag({ label, active, onClick }: TagProps) {\n\tconst color = label === 'breaking' ? 5 : hashString(label) % 360\n\treturn
\n\t\t{label === 'breaking' && Octicon.alert}\n\t\t{label}\n\t
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../services'\nimport { checkVersion, fetchPreset, getBlockStates, getCollections, getModel } from '../services'\nimport { getGenerator, getSearchParams, message, setSeachParams } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, changeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion, gen.maxVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst searchParams = getSearchParams(getCurrentUrl())\n\tconst currentPreset = searchParams.get('preset')\n\tuseEffect(() => {\n\t\tif (model && currentPreset) {\n\t\t\tselectPreset(currentPreset)\n\t\t}\n\t}, [currentPreset])\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetError(null)\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(async m => {\n\t\t\t\tAnalytics.setGenerator(gen.id)\n\t\t\t\tif (currentPreset) {\n\t\t\t\t\tconst preset = await loadPreset(currentPreset)\n\t\t\t\t\tm.reset(DataModel.wrapLists(preset), false)\n\t\t\t\t}\n\t\t\t\tsetModel(m)\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetSeachParams({ version: undefined, preset: undefined })\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst selectPreset = (id: string) => {\n\t\tloadPreset(id).then(preset => {\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t\tsetSeachParams({ version, preset: id })\n\t\t})\n\t}\n\n\tconst loadPreset = async (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\ttry {\n\t\t\tconst preset = await fetchPreset(version, gen.path ?? gen.id, id)\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn preset\n\t\t} catch (e) {\n\t\t\tsetError(message(e))\n\t\t}\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => selectPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{config.generators.filter(g => g.category === 'assets').map(g =>\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t
\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Ad, Btn, BtnMenu, ErrorPanel, SoundConfig, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { SoundEvents, VersionAssets, VersionId } from '../services'\nimport { getAssets, getSounds } from '../services'\nimport { hexId, message } from '../Utils'\n\ntype SoundsProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n}\nexport function Sounds({ lang, changeTitle, version, changeVersion }: SoundsProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.sounds'))\n\n\tconst [assets, setAssets] = useState({})\n\tconst [sounds, setSounds] = useState({})\n\tconst soundKeys = Object.keys(sounds ?? {})\n\tuseEffect(() => {\n\t\tgetAssets(version)\n\t\t\t.then(assets => { setAssets(assets); return getSounds(version) })\n\t\t\t.then(sounds => { if (sounds) setSounds(sounds) })\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version])\n\n\tconst [search, setSearch] = useState('')\n\tconst [configs, setConfigs] = useState([])\n\tconst addConfig = () => {\n\t\tsetConfigs([{ id: hexId(), sound: search, delay: 0, pitch: 1, volume: 1 }, ...configs])\n\t}\n\tconst editConfig = (id: string) => (changes: Partial) => {\n\t\tsetConfigs(configs.map(c => c.id === id ? { ...c, ...changes } : c))\n\t}\n\tconst deleteConfig = (id: string) => () => {\n\t\tsetConfigs(configs.filter(c => c.id !== id))\n\t}\n\n\tconst [delayedPlay, setDelayedPlay] = useState(0)\n\tconst playAll = () => {\n\t\tsetDelayedPlay(delayedPlay + 1)\n\t}\n\n\tconst download = useRef(null)\n\tconst downloadFunction = () => {\n\t\tconst hasDelay = configs.some(c => c.delay > 0)\n\t\tconst content = configs\n\t\t\t.sort((a, b) => a.delay - b.delay)\n\t\t\t.map(c => `${hasDelay ? `execute if score @s delay matches ${c.delay} run ` : ''}playsound minecraft:${c.sound} master @s ~ ~ ~ ${c.volume} ${c.pitch}`)\n\t\t\t.join('\\n')\n\t\tdownload.current.setAttribute('href', 'data:text/plain;charset=utf-8,' + content + '%0A')\n\t\tdownload.current.setAttribute('download', 'sounds.mcfunction')\n\t\tdownload.current.click()\n\t}\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t{soundKeys.length > 0 && <>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{configs.length > 1 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{config.versions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v.id as VersionId)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t{configs.map(c => )}\n\t\t\t
\n\t\t\t\n\t\t}\n\t\t\n\t\t\t{soundKeys.map(s => \n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { getCurrentUrl, Router } from 'preact-router'\nimport { useCallback, useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { Category, Changelog, Generator, Home, Sounds } from './pages'\nimport type { VersionId } from './services'\nimport { VersionIds } from './services'\nimport { Store } from './Store'\nimport { cleanUrl, getSearchParams, setSeachParams } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('none')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst searchParams = getSearchParams(getCurrentUrl())\n\tconst targetVersion = searchParams.get('version')\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = useCallback((version: VersionId) => {\n\t\tif (getSearchParams(getCurrentUrl()).has('version')) {\n\t\t\tsetSeachParams({ version })\n\t\t}\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}, [targetVersion])\n\tuseEffect(() => {\n\t\tif (VersionIds.includes(targetVersion as VersionId) && version !== targetVersion) {\n\t\t\tsetVersion(targetVersion as VersionId)\n\t\t}\n\t}, [version, targetVersion])\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tconst titleVersions = versions.slice(versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${titleVersions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","clazz","tooltip","tooltipLoc","onClick","aria-label","Octicon","large","doSelect","value","placeholder","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","__spreadProps","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","setGenerator","generator","generatorEvent","alert","xmlns","viewBox","fill-rule","d","archive","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","duplicate","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","link_external","mark_github","moon","play","plus","plus_circle","search","sort_asc","sort_desc","stack","sun","sync","tag","terminal","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","component","props","evt","fn","onKeyDown","onEnter","key","__spreadValues","displayName","name","TextInput","BaseInput","v","NumberInput","Number","RangeInput","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","default","obj","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","MAX_SAFE_INTEGER","seed","dimensions","get","Path","set","keys","forEach","h","i","imul","charCodeAt","url","replaceAll","searchIndex","indexOf","cleanUrl","trimmedUrl","getPath","generators","g2","Map","split","param","decodeURIComponent","modifications","newPath","getCurrentUrl","searchParams","getSearchParams","entries","delete","encodeURIComponent","str","abs","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","hasOwnProperty","call","forward","backward","this","defaultValue","repo","Changelogs","fetch","json","group","groupIndex","versionIndex","text","entry","tags","substring","trim","content","parseChangelog","order","change","fetchChangelog","parseVersion","flat","fetchGroup","article","isObject","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","CachedDecorator","CachedFeature","collections","getCollections","blockStates","versionId","collectionTarget","blockStateTarget","versions","JSON","stringify","debug","dynamic","refs","filter","localStorage","getItem","r","hash","matches","cache","caches","open","promises","request","push","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","fetchAssetsRegistries","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","minVersion","maxVersion","removeItem","mcdataUrl","mcassetsUrl","vanillaDatapackUrl","registries","asset","checkVersion","mcdata_master","getData","data2","k","register","path","values","properties","states","assign","vanilla_datapack_summary","Noises","PlacedFeatures","fetchFolder","mcassets","directories","files","d2","ids","registry","versionData","includes","vanilla_datapack_data","parse","noise","terrain_shaper","offset","factor","jaggedness","cacheResponse","ok","fetchResponse","responseData","put","Response","Manifest","VersionAssets","SoundEvents","fetchManifest","manifest","getManifest","latest","snapshot","versionMeta","assetIndex","objects","fetchAssets","assets","getAssets","getResourceUrl","fetchSounds","ready","LAYERS","temperature","humidity","continentalness","erosion","weirdness","cacheState","biomeSourceCache","state","options","newState","octaves","shaper","toJson","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","node","preset","NetherPreset18","NetherPreset","fetchPreset","biome_source","OverworldPreset18","DataModel","unwrapLists","init","wasm","loadWasm","BiomeIds","BiMap","p","t0","t1","h0","h1","c0","c1","e0","e1","w0","w1","d0","d1","o","depth","parameters","getOrPut","biome_parameters","Float64Array","Int32Array","sampler","climate_sampler","firstOctave","amplitudes","multi_noise","getA","getBiomes","xFrom","xTo","xStep","yFrom","yTo","yStep","zFrom","zTo","zStep","layers","climate","climate_noise","result","t","w","point","TerrainShaper","has","config2","clamp","NormalNoise","LegacyRandom","n","n2","sample","minDist","Infinity","minBiome","dist","square","altitude","getBiomeSource","biomeSource","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:old_growth_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:old_growth_pine_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_hills","minecraft:gravelly_mountains","minecraft:windswept_gravelly_hills","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:sparse_jungle","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:extreme_hills","minecraft:mountains","minecraft:windswept_hills","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:windswept_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:snowy_plains","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:stony_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:old_growth_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_badlands","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:windswept_forest","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:jagged_peaks","minecraft:snowcapped_peaks","minecraft:frozen_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","temperature_noise","humidity_noise","weirdness_noise","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","fill","pos","feature","j","base","spread","normalize","min_inclusive","max_inclusive","source","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","settings","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","cx","ox","noise1","fillNoiseColumn","noise2","yy","oy","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","NoiseGeneratorSettings","fromJson","getOctaves","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","OverworldShaper","overworld","BiomeSourcePreview","shown","setScale","focused","setFocused","setLayers","Set","refineTimeout","getShaper","calculateState","useCanvas","round","oz","col","xRange","zRange","l2","getClimate","worldX","worldZ","getBiomeColor","getBiome","brightness","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","BtnMenu","locale","enabled","newSeed","densityFactor","densityOffset","DecoratorPreview","setSeed","randomSeed","NoisePreview","NoiseParameters","NoiseSettingsPreview","loc","bind","setBiomeScale","setBiomeDepth","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","hook","getOwnPropertySymbols","blockState","validation","validator","relativePath","getActiveFields","activeFields","out","Store","Store2","getLanguage","getTheme","getVersion","getIndent","getFormat","getSoundsVersion","setIndent","indent","setFormat","format","setSoundsVersion","INDENT","2_spaces","4_spaces","tabs","minified","FORMATS","yaml","dump","flowLevel","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","setAttribute","click","changeIndent","changeFormat","onBlur","wrapLists","spellcheck","autocorrect","style","mapper","getter","setter","silent","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","collapsedFields","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","def","newValue","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","actions","onSelect","splice","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","isDecorated","wrapper","fields","originalFields","decorators","iterateNestedDecorators","ListNode","featurePath","decoratorsPath","ModelWrapper","path2","modelArr","equals","newDecorators","feature2","produceNestedDecorators","createDecoratorsWrapper","optional","onExpand","onCollapse","toggled","newCtx","pools","loot","child","context2","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","toggleAll","setToggleAll","ctrlKey","integer","parsed","parseFloat","padStart","getValues","isEnum","pool","additional","datalistId","gen","findGenerator","list","values2","memo","onContextMenu","preventDefault","a","description","navigator","prev","next","withModel","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","Themes","system","dark","light","title","changeTheme","changeLanguage","getGenerator","Link","Icons","home","route","th","rx","y","report","sounds","cy","clip-rule","sound","delay","pitch","volume","onEdit","onDelete","delayedPlay","loading","setLoading","playing","setPlaying","invalid","setInvalid","howls","command","soundEvent","h2","stop","soundPath","howl","Howl","src","rate","on","completed","every","copyActive","setCopyActive","copyTimeout","step","toFixed","desc","changeTitle","ToolCard","setError","changelogs","setChangelogs","changelogs2","catch","setSearch","setTags","toggleTag","filteredChangelogs","useMemo","query","q2","toLowerCase","sort","setSort","sortedChangelogs","Ad","ErrorPanel","Tag","Change","activeTags","ArticleLink","dangerouslySetInnerHTML","__html","marked","changeVersion","errorBoundary","errorRetry","allowedVersions","currentPreset","setModel","setBlockStates","Reference","ChoiceNode","schemaName","validate","err","m","loadPreset","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","presets","selectPreset","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","previewShown","setPreviewShown","hasPreview","actionsShown","Tree","PreviewPanel","SourcePanel","setAssets","setSounds","soundKeys","assets2","getSounds","sounds2","configs","setConfigs","addConfig","deleteConfig","setDelayedPlay","hasDelay","SoundConfig","changes","loadLocale","documentElement","targetVersion","version2","setTitle","title2","titleVersions","Header","theme2","Router","Home","Category","Sounds","Changelog","Generator","render","Main"],"mappings":"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BACA,uBACA,kBACA,mBACA,4BACA,6BACA,wBACA,kBACA,4BACA,yBACA,mCACA,mCACA,mCACA,2BACA,2BACA,gCACA,mCACA,gCACA,0CACA,oBACA,8BACA,0BACA,wBACA,8BACA,uBACA,8BAGKC,GAAiB,CACtB,2BACA,2BACA,mBACA,yBACA,8BACA,yBACA,0BACA,4BACA,2BACA,0BACA,uBACA,6BACA,qBACA,kCACA,kCACA,sCACA,iCACA,iCACA,uBACA,yBACA,uCACA,sCACA,0BACA,mCACA,6BACA,kBACA,wBACA,sBACA,wBACA,sBACA,8BACA,+BACA,iCACA,sBACA,2BACA,gCACA,+BACA,8BACA,2BACA,iCACA,kCACA,0BACA,yBACA,yBACA,wBACA,2BACA,wBACA,yBACA,yBACA,6BACA,wBACA,sBACA,4BACA,2BACA,sBACA,sBACA,yBACA,2BACA,wBACA,wBACA,sBACA,sBACA,8BACA,kCACA,iCACA,4BACA,0CACA,4BACA,kCACA,qCACA,8BACA,gCACA,yBACA,8BACA,uCACA,2BACA,0BACA,yBACA,wBACA,qCACA,+BACA,+BACA,2BACA,qBACA,2BACA,2BACA,uBACA,6BACA,6BACA,wBACA,+BACA,8BACA,8BACA,8BACA,qBACA,wBACA,qBACA,4BACA,2BACA,2BACA,4BACA,8BACA,8BACA,uBACA,8BACA,yBACA,4BACA,2BACA,2BACA,sBACA,6BACA,sBACA,8BACA,8BACA,yBACA,+BACA,0BACA,qBACA,+BACA,6BACA,mCACA,gCACA,gCACA,4BACA,8BACA,qCACA,uBACA,iCACA,+BACA,+BACA,+BACA,8BACA,gCACA,8BACA,gCACA,6BACA,wBACA,0BACA,4BACA,6BACA,sCACA,oCACA,mCACA,4BACA,6BACA,+BACA,4BACA,yBACA,yBACA,8BACA,gCACA,gCACA,oCACA,+BACA,+BACA,+BACA,uBACA,0BACA,0BACA,+BACA,+BACA,4BACA,2BACA,4BACA,2BACA,0BACA,iCACA,0BACA,0BACA,iCACA,yBACA,wBACA,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"} \ No newline at end of file +{"version":3,"file":"index.e5f6d834.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../src/app/components/forms/Input.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/services/Changelogs.ts","../../src/app/services/Schemas.ts","../../src/app/services/DataFetcher.ts","../../src/app/services/Manifest.ts","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoisePreview.tsx","../../src/app/previews/NormalNoise.ts","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/generator/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/generator/SourcePanel.tsx","../../src/app/schema/ModelWrapper.ts","../../src/app/schema/renderHtml.tsx","../../src/app/components/generator/Tree.tsx","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/components/sounds/SoundConfig.tsx","../../src/app/components/ToolCard.tsx","../../src/app/pages/Category.tsx","../../src/app/pages/Changelog.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/pages/Sounds.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\tconst DIM_GENERATOR = 6\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function setGenerator(generator: string) {\n\t\tdimension(DIM_GENERATOR, generator)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\ttooltip?: string,\n\ttooltipLoc?: 'se' | 'sw' | 'nw',\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: clazz, tooltip, tooltipLoc, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tplaceholder?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, placeholder, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current?.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current?.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current?.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\ttooltip?: string,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, tooltip, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\talert: ,\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\tduplicate: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tlink_external: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tsort_asc: ,\n\tsort_desc: ,\n\tstack: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tterminal: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","import type { JSXInternal } from 'preact/src/jsx'\n\ntype InputProps = JSXInternal.HTMLAttributes\n\ntype BaseInputProps = Omit & {\n\tonChange?: (value: T) => unknown,\n\tonEnter?: (value: T) => unknown,\n}\nfunction BaseInput(name: string, type: string, fn: (value: string) => T) {\n\tconst component = (props: BaseInputProps) => {\n\t\tconst onChange = props.onChange && ((evt: Event) => {\n\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\tprops.onChange?.(fn(value))\n\t\t})\n\t\tconst onKeyDown = props.onEnter && ((evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Enter') {\n\t\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\t\tprops.onEnter?.(fn(value))\n\t\t\t}\n\t\t})\n\t\treturn \n\t}\n\tcomponent.displayName = name\n\treturn component\n}\n\nexport const TextInput = BaseInput('TextInput', 'text', v => v)\n\nexport const NumberInput = BaseInput('NumberInput', 'number', v => Number(v))\n\nexport const RangeInput = BaseInput('RangeInput', 'range', v => Number(v))\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { getCurrentUrl, route } from 'preact-router'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nexport function isObject(obj: any) {\n\treturn typeof obj === 'object' && obj !== null\n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tconst dimensions = model.get(new Path(['dimensions']))\n\tmodel.set(new Path(['seed']), seed, true)\n\tif (typeof dimensions === 'object' && dimensions !== null) {\n\t\tObject.keys(dimensions).forEach(id => {\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'seed']), seed, true)\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'biome_source', 'seed']), seed, true)\n\t\t})\n\t}\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getPath(url: string) {\n\tconst searchIndex = url.indexOf('?')\n\tif (searchIndex >= 0) {\n\t\turl = url.slice(0, searchIndex)\n\t}\n\treturn cleanUrl(url)\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = getPath(url).replace(/^\\//, '').replace(/\\/$/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function getSearchParams(url: string) {\n\tconst searchIndex = url.indexOf('?')\n\tif (searchIndex >= 0) {\n\t\turl = url.slice(searchIndex + 1)\n\t\treturn new Map(url.split('&').map<[string, string]>(param => {\n\t\t\tconst index = param.indexOf('=')\n\t\t\tif (index === -1) return [param, 'true']\n\t\t\treturn [decodeURIComponent(param.slice(0, index)), decodeURIComponent(param.slice(index + 1))]\n\t\t}))\n\t}\n\treturn new Map()\n}\n\nexport function setSeachParams(modifications: Record, newPath?: string) {\n\tconst url = getCurrentUrl()\n\tconst searchParams = getSearchParams(url)\n\tObject.entries(modifications).forEach(([key, value]) => {\n\t\tif (value === undefined) searchParams.delete(key)\n\t\telse searchParams.set(key, value)\n\t})\n\tconst search = Array.from(searchParams).map(([key, value]) =>\n\t\t`${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n\troute(`${newPath ? cleanUrl(newPath) : getPath(url)}${search.length === 0 ? '' : `?${search.join('&')}`}`, true)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport class BiMap {\n\tprivate readonly forward: Map\n\tprivate readonly backward: Map\n\n\tconstructor() {\n\t\tthis.forward = new Map()\n\t\tthis.backward = new Map()\n\t}\n\n\tpublic set(a: A, b: B) {\n\t\tthis.forward.set(a, b)\n\t\tthis.backward.set(b, a)\n\t}\n\n\tpublic getA(key: B) {\n\t\treturn this.backward.get(key)\n\t}\n\n\tpublic getB(key: A) {\n\t\treturn this.forward.get(key)\n\t}\n\n\tpublic getOrPut(key: A, defaultValue: B) {\n\t\tconst b = this.forward.get(key)\n\t\tif (b === undefined) {\n\t\t\tthis.set(key, defaultValue)\n\t\t\treturn defaultValue\n\t\t}\n\t\treturn b\n\t}\n}\n","import { isObject } from '../Utils'\n\nconst repo = 'https://raw.githubusercontent.com/misode/technical-changes/main'\n\nexport type ChangelogEntry = {\n\tgroup: ChangelogVersion,\n\tversion: ChangelogVersion,\n\torder: number,\n\ttags: string[],\n\tcontent: string,\n}\n\nexport type ChangelogVersion = {\n\tid: string,\n\tarticle: string | null,\n}\n\nlet Changelogs: ChangelogEntry[] | Promise | null = null\n\nexport async function getChangelogs() {\n\tif (!Changelogs) {\n\t\tconst index = await (await fetch(`${repo}/index.json`)).json() as string[]\n\t\tChangelogs = (await Promise.all(\n\t\t\tindex.map((group, i) => fetchGroup(parseVersion(group), i))\n\t\t)).flat().map(change => ({\n\t\t\t...change,\n\t\t\ttags: [change.group.id, ...change.tags],\n\t\t}))\n\t}\n\treturn Changelogs\n}\n\nasync function fetchGroup(group: ChangelogVersion, groupIndex: number) {\n\tconst index = await (await fetch(`${repo}/${group.id}/index.json`)).json() as string[]\n\treturn (await Promise.all(\n\t\tindex.map((version, i) => fetchChangelog(group, parseVersion(version), groupIndex, i))\n\t)).flat()\n}\n\nasync function fetchChangelog(group: ChangelogVersion, version: ChangelogVersion, groupIndex: number, versionIndex: number) {\n\tconst text = await (await fetch(`${repo}/${group.id}/${version.id}.md`)).text()\n\treturn parseChangelog(text).map(change => ({\n\t\tversion,\n\t\tgroup,\n\t\torder: groupIndex * 1000 + versionIndex,\n\t\t...change,\n\t}))\n}\n\nfunction parseChangelog(text: string) {\n\treturn text.split('\\n\\n')\n\t\t.map(entry => {\n\t\t\tconst i = entry.indexOf('|')\n\t\t\treturn {\n\t\t\t\ttags: entry.substring(0, i).trim().split(' '),\n\t\t\t\tcontent: entry.slice(i + 1).trim()\n\t\t\t\t\t.replaceAll('->', '→')\n\t\t\t\t\t.replaceAll('\\n...\\n', '\\n\\n'),\n\t\t\t}\n\t\t})\n}\n\nfunction parseVersion(version: unknown): ChangelogVersion {\n\tif (typeof version === 'string') {\n\t\treturn {\n\t\t\tid: version,\n\t\t\tarticle: version.match(/\\d\\dw\\d\\d[a-z]/) ? 'minecraft-snapshot-' + version : version.match(/\\d+\\.\\d+(\\.\\d+)?-pre[0-9]+/) ? 'minecraft-' + version.replaceAll('.', '-').replaceAll('pre', 'pre-release-') : null,\n\t\t}\n\t} else if (isObject(version)) {\n\t\treturn version as ChangelogVersion\n\t}\n\treturn { id: 'unknown', article: null }\n}\n","import type { CollectionRegistry, INode, SchemaRegistry } from '@mcschema/core'\nimport { ChoiceNode, DataModel, Reference, StringNode } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../../config.json'\nimport { message } from '../Utils'\nimport { fetchData } from './DataFetcher'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nexport let CachedDecorator: INode\nexport let CachedFeature: INode\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\t\n\t\tCachedDecorator = Reference(versionData.schemas, 'configured_decorator')\n\t\tCachedFeature = ChoiceNode([\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tnode: StringNode(versionData.collections, { validator: 'resource', params: { pool: '$worldgen/configured_feature' } }),\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'object',\n\t\t\t\tnode: Reference(versionData.schemas, 'configured_feature'),\n\t\t\t},\n\t\t], { choiceContext: 'feature' })\n\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tconst err = new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t\tif (e instanceof Error) err.stack = e.stack\n\t\t\tthrow err\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../../config.json'\nimport { message } from '../Utils'\nimport type { VersionAssets, VersionManifest } from './Manifest'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'mcassets' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst mcassetsUrl = 'https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\nconst manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'\nconst resourceUrl = 'https://resources.download.minecraft.net/'\nconst corsUrl = 'https://misode-cors-anywhere.herokuapp.com/'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t\tfetchAssetsRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic && !r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic && !r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n\tif (checkVersion(version.id, '1.18')) {\n\t\ttarget.register('worldgen/noise', Noises)\n\t\ttarget.register('worldgen/placed_feature', PlacedFeatures)\n\t}\n}\n\nexport async function fetchAssetsRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchAssetsRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.asset)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tawait Promise.all(registries.map(async r => {\n\t\ttry {\n\t\t\tconst fetchFolder = async (path: string): Promise => {\n\t\t\t\tconst url = `${mcassetsUrl}/${version.refs.mcassets}/assets/minecraft/${path}/_list.json`\n\t\t\t\tconst data = await getData(url)\n\t\t\t\tif (data.directories.length === 0) {\n\t\t\t\t\treturn data.files\n\t\t\t\t}\n\t\t\t\tconst directories = await Promise.all(data.directories.map(async (d: string) => {\n\t\t\t\t\tconst files = await fetchFolder(`${path}/${d}`)\n\t\t\t\t\treturn files.map(v => `${d}/${v}`)\n\t\t\t\t}))\n\t\t\t\treturn [...data.files, ...directories.flat()]\n\t\t\t}\n\t\t\tconst ids = (await fetchFolder(r.path ?? r.id))\t\n\t\t\t\t.filter((v: string) => v.endsWith('.json') || v.endsWith('.png'))\n\t\t\t\t.map(v => `minecraft:${v.replace(/\\.(json|png)$/, '')}`)\n\t\t\ttarget.register(r.id, ids)\n\t\t} catch (e) {\n\t\t\tconsole.warn(`Error occurred while fetching assets registry ${r.id}:`, message(e))\n\t\t}\n\t}))\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = ['blockstates', 'models'].includes(registry)\n\t\t\t?\t`${mcassetsUrl}/${versionData.refs.mcassets}/assets/minecraft/${registry}/${id}.json`\n\t\t\t: `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\tif (registry === 'worldgen/noise_settings' && version === '1.18') {\n\t\t\tlet text = await res.text()\n\t\t\ttext = text.replaceAll('\"max_threshold\": Infinity', '\"max_threshold\": 100')\n\t\t\tconst data = JSON.parse(text)\n\t\t\tif (id !== 'overworld' && id !== 'large_biomes') {\n\t\t\t\tdata.noise.terrain_shaper = { offset: 0, factor: 0, jaggedness: 0 }\n\t\t\t}\n\t\t\treturn data\n\t\t}\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching ${registry} preset ${id}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchManifest() {\n\ttry {\n\t\tconst res = await fetch(manifestUrl)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching version manifest: ${message(e)}`)\n\t}\n}\n\nexport async function fetchAssets(versionId: VersionId, manifest: VersionManifest) {\n\tconst version = config.versions.find(v => v.id === versionId)\n\tconst id = version?.latest ?? manifest.latest.snapshot\n\ttry {\n\t\tconst versionMeta = await getData(manifest.versions.find(v => v.id === id)!.url)\n\t\n\t\treturn (await getData(versionMeta.assetIndex.url)).objects\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching assets for ${version}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchSounds(version: VersionId, assets: VersionAssets) {\n\ttry {\n\t\tconst hash = assets['minecraft/sounds.json'].hash\n\t\treturn await getData(getResourceUrl(hash))\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching sounds for ${version}: ${message(e)}`)\n\t}\n}\n\nexport function getResourceUrl(hash: string) {\n\treturn `${corsUrl}${resourceUrl}${hash.slice(0, 2)}/${hash}`\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n\nconst Noises = [\n\t'minecraft:aquifer_barrier',\n\t'minecraft:aquifer_fluid_level_floodedness',\n\t'minecraft:aquifer_fluid_level_spread',\n\t'minecraft:aquifer_lava',\n\t'minecraft:badlands_pillar',\n\t'minecraft:badlands_pillar_roof',\n\t'minecraft:badlands_surface',\n\t'minecraft:calcite',\n\t'minecraft:cave_cheese',\n\t'minecraft:cave_entrance',\n\t'minecraft:cave_layer',\n\t'minecraft:clay_bands_offset',\n\t'minecraft:continentalness',\n\t'minecraft:continentalness_large',\n\t'minecraft:erosion',\n\t'minecraft:erosion_large',\n\t'minecraft:gravel',\n\t'minecraft:gravel_layer',\n\t'minecraft:ice',\n\t'minecraft:iceberg_pillar',\n\t'minecraft:iceberg_pillar_roof',\n\t'minecraft:iceberg_surface',\n\t'minecraft:jagged',\n\t'minecraft:nether_state_selector',\n\t'minecraft:nether_wart',\n\t'minecraft:netherrack',\n\t'minecraft:noodle',\n\t'minecraft:noodle_ridge_a',\n\t'minecraft:noodle_ridge_b',\n\t'minecraft:noodle_thickness',\n\t'minecraft:offset',\n\t'minecraft:ore_gap',\n\t'minecraft:ore_vein_a',\n\t'minecraft:ore_vein_b',\n\t'minecraft:ore_veininess',\n\t'minecraft:packed_ice',\n\t'minecraft:patch',\n\t'minecraft:pillar',\n\t'minecraft:pillar_rareness',\n\t'minecraft:pillar_thickness',\n\t'minecraft:powder_snow',\n\t'minecraft:ridge',\n\t'minecraft:soul_sand_layer',\n\t'minecraft:spaghetti_2d',\n\t'minecraft:spaghetti_2d_elevation',\n\t'minecraft:spaghetti_2d_modulator',\n\t'minecraft:spaghetti_2d_thickness',\n\t'minecraft:spaghetti_3d_1',\n\t'minecraft:spaghetti_3d_2',\n\t'minecraft:spaghetti_3d_rarity',\n\t'minecraft:spaghetti_3d_thickness',\n\t'minecraft:spaghetti_roughness',\n\t'minecraft:spaghetti_roughness_modulator',\n\t'minecraft:surface',\n\t'minecraft:surface_secondary',\n\t'minecraft:surface_swamp',\n\t'minecraft:temperature',\n\t'minecraft:temperature_large',\n\t'minecraft:vegetation',\n\t'minecraft:vegetation_large',\n]\n\nconst PlacedFeatures = [\n\t'minecraft:acacia_checked',\n\t'minecraft:amethyst_geode',\n\t'minecraft:bamboo',\n\t'minecraft:bamboo_light',\n\t'minecraft:bamboo_vegetation',\n\t'minecraft:basalt_blobs',\n\t'minecraft:basalt_pillar',\n\t'minecraft:birch_bees_0002',\n\t'minecraft:birch_bees_002',\n\t'minecraft:birch_checked',\n\t'minecraft:birch_tall',\n\t'minecraft:blackstone_blobs',\n\t'minecraft:blue_ice',\n\t'minecraft:brown_mushroom_nether',\n\t'minecraft:brown_mushroom_normal',\n\t'minecraft:brown_mushroom_old_growth',\n\t'minecraft:brown_mushroom_swamp',\n\t'minecraft:brown_mushroom_taiga',\n\t'minecraft:cave_vines',\n\t'minecraft:chorus_plant',\n\t'minecraft:classic_vines_cave_feature',\n\t'minecraft:crimson_forest_vegetation',\n\t'minecraft:crimson_fungi',\n\t'minecraft:dark_forest_vegetation',\n\t'minecraft:dark_oak_checked',\n\t'minecraft:delta',\n\t'minecraft:desert_well',\n\t'minecraft:disk_clay',\n\t'minecraft:disk_gravel',\n\t'minecraft:disk_sand',\n\t'minecraft:dripstone_cluster',\n\t'minecraft:end_gateway_return',\n\t'minecraft:end_island_decorated',\n\t'minecraft:end_spike',\n\t'minecraft:fancy_oak_bees',\n\t'minecraft:fancy_oak_bees_0002',\n\t'minecraft:fancy_oak_bees_002',\n\t'minecraft:fancy_oak_checked',\n\t'minecraft:flower_default',\n\t'minecraft:flower_flower_forest',\n\t'minecraft:flower_forest_flowers',\n\t'minecraft:flower_meadow',\n\t'minecraft:flower_plain',\n\t'minecraft:flower_swamp',\n\t'minecraft:flower_warm',\n\t'minecraft:forest_flowers',\n\t'minecraft:forest_rock',\n\t'minecraft:fossil_lower',\n\t'minecraft:fossil_upper',\n\t'minecraft:freeze_top_layer',\n\t'minecraft:glow_lichen',\n\t'minecraft:glowstone',\n\t'minecraft:glowstone_extra',\n\t'minecraft:grass_bonemeal',\n\t'minecraft:ice_patch',\n\t'minecraft:ice_spike',\n\t'minecraft:iceberg_blue',\n\t'minecraft:iceberg_packed',\n\t'minecraft:jungle_bush',\n\t'minecraft:jungle_tree',\n\t'minecraft:kelp_cold',\n\t'minecraft:kelp_warm',\n\t'minecraft:lake_lava_surface',\n\t'minecraft:lake_lava_underground',\n\t'minecraft:large_basalt_columns',\n\t'minecraft:large_dripstone',\n\t'minecraft:lush_caves_ceiling_vegetation',\n\t'minecraft:lush_caves_clay',\n\t'minecraft:lush_caves_vegetation',\n\t'minecraft:mega_jungle_tree_checked',\n\t'minecraft:mega_pine_checked',\n\t'minecraft:mega_spruce_checked',\n\t'minecraft:monster_room',\n\t'minecraft:monster_room_deep',\n\t'minecraft:mushroom_island_vegetation',\n\t'minecraft:nether_sprouts',\n\t'minecraft:oak_bees_0002',\n\t'minecraft:oak_bees_002',\n\t'minecraft:oak_checked',\n\t'minecraft:ore_ancient_debris_large',\n\t'minecraft:ore_andesite_lower',\n\t'minecraft:ore_andesite_upper',\n\t'minecraft:ore_blackstone',\n\t'minecraft:ore_clay',\n\t'minecraft:ore_coal_lower',\n\t'minecraft:ore_coal_upper',\n\t'minecraft:ore_copper',\n\t'minecraft:ore_copper_large',\n\t'minecraft:ore_debris_small',\n\t'minecraft:ore_diamond',\n\t'minecraft:ore_diamond_buried',\n\t'minecraft:ore_diamond_large',\n\t'minecraft:ore_diorite_lower',\n\t'minecraft:ore_diorite_upper',\n\t'minecraft:ore_dirt',\n\t'minecraft:ore_emerald',\n\t'minecraft:ore_gold',\n\t'minecraft:ore_gold_deltas',\n\t'minecraft:ore_gold_extra',\n\t'minecraft:ore_gold_lower',\n\t'minecraft:ore_gold_nether',\n\t'minecraft:ore_granite_lower',\n\t'minecraft:ore_granite_upper',\n\t'minecraft:ore_gravel',\n\t'minecraft:ore_gravel_nether',\n\t'minecraft:ore_infested',\n\t'minecraft:ore_iron_middle',\n\t'minecraft:ore_iron_small',\n\t'minecraft:ore_iron_upper',\n\t'minecraft:ore_lapis',\n\t'minecraft:ore_lapis_buried',\n\t'minecraft:ore_magma',\n\t'minecraft:ore_quartz_deltas',\n\t'minecraft:ore_quartz_nether',\n\t'minecraft:ore_redstone',\n\t'minecraft:ore_redstone_lower',\n\t'minecraft:ore_soul_sand',\n\t'minecraft:ore_tuff',\n\t'minecraft:patch_berry_common',\n\t'minecraft:patch_berry_rare',\n\t'minecraft:patch_cactus_decorated',\n\t'minecraft:patch_cactus_desert',\n\t'minecraft:patch_crimson_roots',\n\t'minecraft:patch_dead_bush',\n\t'minecraft:patch_dead_bush_2',\n\t'minecraft:patch_dead_bush_badlands',\n\t'minecraft:patch_fire',\n\t'minecraft:patch_grass_badlands',\n\t'minecraft:patch_grass_forest',\n\t'minecraft:patch_grass_jungle',\n\t'minecraft:patch_grass_normal',\n\t'minecraft:patch_grass_plain',\n\t'minecraft:patch_grass_savanna',\n\t'minecraft:patch_grass_taiga',\n\t'minecraft:patch_grass_taiga_2',\n\t'minecraft:patch_large_fern',\n\t'minecraft:patch_melon',\n\t'minecraft:patch_pumpkin',\n\t'minecraft:patch_soul_fire',\n\t'minecraft:patch_sugar_cane',\n\t'minecraft:patch_sugar_cane_badlands',\n\t'minecraft:patch_sugar_cane_desert',\n\t'minecraft:patch_sugar_cane_swamp',\n\t'minecraft:patch_sunflower',\n\t'minecraft:patch_tall_grass',\n\t'minecraft:patch_tall_grass_2',\n\t'minecraft:patch_waterlily',\n\t'minecraft:pine_checked',\n\t'minecraft:pine_on_snow',\n\t'minecraft:pointed_dripstone',\n\t'minecraft:red_mushroom_nether',\n\t'minecraft:red_mushroom_normal',\n\t'minecraft:red_mushroom_old_growth',\n\t'minecraft:red_mushroom_swamp',\n\t'minecraft:red_mushroom_taiga',\n\t'minecraft:rooted_azalea_tree',\n\t'minecraft:sea_pickle',\n\t'minecraft:seagrass_cold',\n\t'minecraft:seagrass_deep',\n\t'minecraft:seagrass_deep_cold',\n\t'minecraft:seagrass_deep_warm',\n\t'minecraft:seagrass_normal',\n\t'minecraft:seagrass_river',\n\t'minecraft:seagrass_simple',\n\t'minecraft:seagrass_swamp',\n\t'minecraft:seagrass_warm',\n\t'minecraft:small_basalt_columns',\n\t'minecraft:spore_blossom',\n\t'minecraft:spring_closed',\n\t'minecraft:spring_closed_double',\n\t'minecraft:spring_delta',\n\t'minecraft:spring_lava',\n\t'minecraft:spring_lava_frozen',\n\t'minecraft:spring_open',\n\t'minecraft:spring_water',\n\t'minecraft:spruce_checked',\n\t'minecraft:spruce_on_snow',\n\t'minecraft:super_birch_bees',\n\t'minecraft:super_birch_bees_0002',\n\t'minecraft:trees_badlands',\n\t'minecraft:trees_birch',\n\t'minecraft:trees_birch_and_oak',\n\t'minecraft:trees_flower_forest',\n\t'minecraft:trees_grove',\n\t'minecraft:trees_jungle',\n\t'minecraft:trees_meadow',\n\t'minecraft:trees_old_growth_pine_taiga',\n\t'minecraft:trees_old_growth_spruce_taiga',\n\t'minecraft:trees_plains',\n\t'minecraft:trees_savanna',\n\t'minecraft:trees_snowy',\n\t'minecraft:trees_sparse_jungle',\n\t'minecraft:trees_swamp',\n\t'minecraft:trees_taiga',\n\t'minecraft:trees_water',\n\t'minecraft:trees_windswept_forest',\n\t'minecraft:trees_windswept_hills',\n\t'minecraft:trees_windswept_savanna',\n\t'minecraft:twisting_vines',\n\t'minecraft:underwater_magma',\n\t'minecraft:vines',\n\t'minecraft:void_start_platform',\n\t'minecraft:warm_ocean_vegetation',\n\t'minecraft:warped_forest_vegetation',\n\t'minecraft:warped_fungi',\n\t'minecraft:weeping_vines',\n]\n","import { fetchAssets, fetchManifest, fetchSounds } from './DataFetcher'\nimport type { VersionId } from './Schemas'\n\nexport type VersionManifest = {\n\tlatest: {\n\t\trelease: string,\n\t\tsnapshot: string,\n\t},\n\tversions: {\n\t\tid: string,\n\t\ttype: string,\n\t\turl: string,\n\t}[],\n}\nlet Manifest: VersionManifest | Promise | null = null\n\nexport type VersionAssets = {\n\t[key: string]: {\n\t\thash: string,\n\t},\n}\nconst VersionAssets: Record> = {}\n\nexport type SoundEvents = {\n\t[key: string]: {\n\t\tsounds: (string | { name: string })[],\n\t},\n}\nconst SoundEvents: Record> = {}\n\nexport async function getManifest() {\n\tif (!Manifest) {\n\t\tManifest = fetchManifest()\n\t}\n\treturn Manifest\n}\n\nexport async function getAssets(version: VersionId) {\n\tif (!VersionAssets[version]) {\n\t\tVersionAssets[version] = (async () => {\n\t\t\tconst manifest = await getManifest()\n\t\t\treturn await fetchAssets(version, manifest)\n\t\t})()\n\t}\n\treturn VersionAssets[version]\n}\n\nexport async function getSounds(version: VersionId) {\n\tif (!SoundEvents[version]) {\n\t\tSoundEvents[version] = (async () => {\n\t\t\tconst assets = await getAssets(version)\n\t\t\treturn await fetchSounds(version, assets)\n\t\t})()\n\t}\n\treturn SoundEvents[version]\n}\n","import { DataModel } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { FixedBiome, LegacyRandom, NormalNoise, TerrainShaper } from 'deepslate'\nimport init, { biome_parameters, climate_noise, climate_sampler, multi_noise } from 'deepslate-rs'\n// @ts-expect-error\nimport wasm from 'deepslate-rs/deepslate_rs_bg.wasm?url'\nimport type { VersionId } from '../services'\nimport { fetchPreset } from '../services'\nimport { BiMap, clamp, deepClone, deepEqual, square, stringToColor } from '../Utils'\n\nlet ready = false\nasync function loadWasm() {\n\tif (ready) return\n\tawait init(wasm)\n\tready = true\n\tconsole.debug(`Loaded deepslate-rs from \"${wasm}\"`)\n}\n\nconst LAYERS = {\n\ttemperature: [-1, 1],\n\thumidity: [-1, 1],\n\tcontinentalness: [-1.1, 1],\n\terosion: [-1, 1],\n\tweirdness: [-1, 1],\n\toffset: [-1, 1],\n\tfactor: [0, 12],\n\tjaggedness: [0, 1],\n}\n\ntype Triple = [number, number, number]\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tshaper: TerrainShaper,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n\tlayers: Set,\n}\n\ninterface CachedBiomeSource {\n\tgetBiome(x: number, y: number, z: number): string\n\tgetBiomes?(xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): string[]\n\tgetClimate?(layers: Set, xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): {[k: string]: number}[]\n}\n\nlet cacheState: any\nlet biomeSourceCache: CachedBiomeSource\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -Math.round(options.offset[0]) - 100 + options.res / 2\n\tconst oz = -Math.round(options.offset[1]) - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\n\tconst xRange: Triple = [ox * options.scale, (200 + ox) * options.scale, options.res * options.scale]\n\tconst zRange: Triple = [oz * options.scale, (200 + oz) * options.scale, options.res * options.scale]\n\n\tconst biomes = !options.layers.has('biomes') ? undefined : biomeSource.getBiomes?.(...xRange, 64, 65, 1, ...zRange)\n\tconst layers = [...options.layers].filter(l => l !== 'biomes') as (keyof typeof LAYERS)[]\n\tconst noise = layers.length === 0 ? undefined : biomeSource.getClimate?.(new Set(layers), ...xRange, 64, 65, 1, ...zRange)\n\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst j = (x / options.res) * 200 / options.res + z / options.res\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tlet color: Triple = [50, 50, 50]\n\t\t\tif (options.layers.has('biomes')) {\n\t\t\t\tconst biome = biomes?.[j] ?? biomeSource.getBiome(worldX, 64, worldZ)\n\t\t\t\tcolor = getBiomeColor(biome, options.biomeColors)\n\t\t\t} else if (noise && layers[0]) {\n\t\t\t\tconst value = noise[j][layers[0]]\n\t\t\t\tconst [min, max] = LAYERS[layers[0]]\n\t\t\t\tconst brightness = (value - min) / (max - min) * 256\n\t\t\t\tcolor = [brightness, brightness, brightness]\n\t\t\t}\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: CachedBiomeSource}> {\n\tconst newState = [state, options.octaves, options.shaper.toJson(), `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = DataModel.unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\tawait loadWasm()\n\t\t\t\tconst BiomeIds = new BiMap()\n\t\t\t\tconst param = (p: number | number[]) => {\n\t\t\t\t\treturn typeof p === 'number' ? [p, p] : p\n\t\t\t\t}\n\t\t\t\tconst [t0, t1, h0, h1, c0, c1, e0, e1, w0, w1, d0, d1, o, b] = [[], [], [], [], [], [], [], [], [], [], [], [], [], []] as number[][]\n\t\t\t\tfor (const i of state.biomes) {\n\t\t\t\t\tconst { temperature, humidity, continentalness, erosion, weirdness, depth, offset } = i.parameters\n\t\t\t\t\tt0.push(param(temperature)[0])\n\t\t\t\t\tt1.push(param(temperature)[1])\n\t\t\t\t\th0.push(param(humidity)[0])\n\t\t\t\t\th1.push(param(humidity)[1])\n\t\t\t\t\tc0.push(param(continentalness)[0])\n\t\t\t\t\tc1.push(param(continentalness)[1])\n\t\t\t\t\te0.push(param(erosion)[0])\n\t\t\t\t\te1.push(param(erosion)[1])\n\t\t\t\t\tw0.push(param(weirdness)[0])\n\t\t\t\t\tw1.push(param(weirdness)[1])\n\t\t\t\t\td0.push(param(depth)[0])\n\t\t\t\t\td1.push(param(depth)[1])\n\t\t\t\t\to.push(offset)\n\t\t\t\t\tb.push(BiomeIds.getOrPut(i.biome, Math.floor(Math.random() * 2147483647)))\n\t\t\t\t}\n\t\t\t\tconst parameters = biome_parameters(new Float64Array(t0), new Float64Array(t1), new Float64Array(h0), new Float64Array(h1), new Float64Array(c0), new Float64Array(c1), new Float64Array(e0), new Float64Array(e1), new Float64Array(w0), new Float64Array(w1), new Float64Array(d0), new Float64Array(d1), new Float64Array(o), new Int32Array(b))\n\t\t\t\tconst sampler = climate_sampler(options.seed, options.octaves.temperature.firstOctave, new Float64Array(options.octaves.temperature.amplitudes), options.octaves.humidity.firstOctave, new Float64Array(options.octaves.humidity.amplitudes), options.octaves.continentalness.firstOctave, new Float64Array(options.octaves.continentalness.amplitudes), options.octaves.erosion.firstOctave, new Float64Array(options.octaves.erosion.amplitudes), options.octaves.weirdness.firstOctave, new Float64Array(options.octaves.weirdness.amplitudes), options.octaves.shift.firstOctave, new Float64Array(options.octaves.shift.amplitudes))\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x, y, z) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, x, x + 1, 1, y, y + 1, 1, z, z + 1, 1)\n\t\t\t\t\t\treturn BiomeIds.getA(ids[0]) ?? 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tgetBiomes(xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\treturn [...ids].map(id => BiomeIds.getA(id) ?? 'unknown')\n\t\t\t\t\t},\n\t\t\t\t\tgetClimate(layers, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst climate = climate_noise(sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\tconst result = []\n\t\t\t\t\t\tfor (let i = 0; i < climate.length; i += 7) {\n\t\t\t\t\t\t\tconst [t, h, c, e, w] = climate.slice(i, i + 5)\n\t\t\t\t\t\t\tconst point = TerrainShaper.point(c, e, w)\n\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\ttemperature: t,\n\t\t\t\t\t\t\t\thumidity: h,\n\t\t\t\t\t\t\t\tcontinentalness: c,\n\t\t\t\t\t\t\t\terosion: e,\n\t\t\t\t\t\t\t\tweirdness: w,\n\t\t\t\t\t\t\t\t...layers.has('offset') && { offset: options.shaper.offset(point) },\n\t\t\t\t\t\t\t\t...layers.has('factor') && { factor: options.shaper.factor(point) },\n\t\t\t\t\t\t\t\t...layers.has('jaggedness') && { jaggedness: options.shaper.jaggedness(point) },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new LegacyRandom(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:old_growth_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:old_growth_pine_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_hills': [136,136,136],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:windswept_gravelly_hills': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:sparse_jungle': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:extreme_hills': [96,96,96],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:windswept_hills': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:windswept_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:snowy_plains': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:stony_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:old_growth_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_badlands': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:windswept_forest': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:jagged_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:frozen_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { DataModel } from '@mcschema/core'\nimport type { Random } from 'deepslate'\nimport { LegacyRandom, PerlinNoise } from 'deepslate'\nimport type { VersionId } from '../services'\nimport { clamp, stringToColor } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], DataModel.unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { LegacyRandom, PerlinNoise } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new LegacyRandom(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import { DataModel } from '@mcschema/core'\nimport type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport { getOctaves } from '../components'\nimport type { VersionId } from '../services'\nimport { checkVersion } from '../services'\nimport { deepClone, deepEqual } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeScale?: number,\n\tbiomeDepth?: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeDepth ?? 0, options.biomeScale ?? 0, options.offset, options.width)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(state))\n\tsettings.octaves = getOctaves(settings)\n\n\tconst newState = [state, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings, TerrainShaper } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nconst LAYERS = ['biomes', 'temperature', 'humidity', 'continentalness', 'erosion', 'weirdness', 'offset', 'factor', 'jaggedness'] as const\n\nconst OverworldShaper = TerrainShaper.overworld()\n\nexport const BiomeSourcePreview = ({ model, data, shown, lang, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst [layers, setLayers] = useState(new Set(['biomes']))\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst shaper = getShaper(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves, shaper) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150) as any\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed, layers])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, layers, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t\n\t\t\t\t\t{LAYERS.map(name => {\n\t\t\t\t\t\tconst enabled = layers.has(name)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tsetLayers(new Set([name]))\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}} />\n\t\t\t\t\t})}\n\t\t\t\t}\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves, shaper: TerrainShaper) {\n\treturn JSON.stringify([data, octaves, shaper.toJson()])\n}\n\nexport function getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj !== 'string') {\n\t\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(obj))\n\t\tobj = settings.noise.densityFactor === 0 && settings.noise.densityOffset === -0.030078125\n\t\t\t? 'minecraft:nether' : 'minecraft:overworld'\n\t}\n\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\tcase 'overworld':\n\t\tcase 'amplified':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t}\n\t\tcase 'end':\n\t\tcase 'floating_islands':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t}\n}\n\nexport function getShaper(obj: any): TerrainShaper {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn OverworldShaper\n\t\t\tdefault:\n\t\t\t\treturn TerrainShaper.fromJson({ offset: 0, factor: 0, jaggedness: 0 })\n\t\t}\n\t}\n\treturn TerrainShaper.fromJson(DataModel.unwrapLists(obj?.noise?.terrain_shaper))\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown, lang }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { normalNoise } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const NoisePreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [scale, setScale] = useState(2)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst state = JSON.stringify([data])\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [256, 256]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { offset: offset.current, scale, seed, version }\n\t\t\tnormalNoise(data, img, options)\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 256\n\t\t\toffset.current[1] = offset.current[1] + dy * 256\n\t\t\tredraw()\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t changeScale(scale * 1.5)} />\n\t\t\t changeScale(scale / 1.5)} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { DataModel } from '@mcschema/core'\nimport { LegacyRandom, NoiseParameters, NormalNoise } from 'deepslate'\nimport type { VersionId } from '../services'\n\nexport type NoiseOptions = {\n\toffset: [number, number],\n\tscale: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nexport function normalNoise(state: any, img: ImageData, options: NoiseOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst params = NoiseParameters.fromJson(DataModel.unwrapLists(state))\n\tconst noise = new NormalNoise(random, params)\n\n\tconst ox = -options.offset[0] - 100\n\tconst oz = -options.offset[1] - 100\n\tconst data = img.data\n\tfor (let x = 0; x < 256; x += 1) {\n\t\tfor (let y = 0; y < 256; y += 1) {\n\t\t\tconst i = x * 4 + y * 4 * 256\n\t\t\tconst xx = (x + ox) * options.scale\n\t\t\tconst yy = (y + oz) * options.scale\n\t\t\tconst color = (noise.sample(xx, yy, 0) + 1) * 128\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../services'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeScale, setBiomeScale] = useState(0.2)\n\tconst [biomeDepth, setBiomeDepth] = useState(0.1)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeScale, biomeDepth])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeDepth, biomeScale, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{checkVersion(version, undefined, '1.17') &&\n\t\t\t\t\n\t\t\t\t\t setBiomeScale(Number(v))} />\n\t\t\t\t\t setBiomeDepth(Number(v))} />\n\t\t\t\t\n\t\t\t}\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport type { VersionId } from '../../services'\nimport { BiomeSourcePreview, DecoratorPreview, NoisePreview, NoiseSettingsPreview } from '../previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../services'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\tconst res = value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a as any]\n\t\t}\n\t\treturn res\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a]\n\t\t}\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tconst out = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t\tif (out !== undefined && out !== null) {\n\t\t\t\t\tres[f] = out\n\t\t\t\t}\n\t\t\t})\n\t\tfor (const a of Object.getOwnPropertySymbols(value)) {\n\t\t\tres[a as any] = value[a]\n\t\t}\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './services'\nimport { VersionIds } from './services'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\texport const ID_FORMAT = 'output_format'\n\texport const ID_SOUNDS_VERSION = 'minecraft_sounds_version'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function getFormat() {\n\t\treturn localStorage.getItem(ID_FORMAT) ?? 'json'\n\t}\n\n\texport function getSoundsVersion() {\n\t\treturn localStorage.getItem(ID_SOUNDS_VERSION) ?? 'latest'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n\n\texport function setFormat(format: string | undefined) {\n\t\tif (format) localStorage.setItem(ID_FORMAT, format)\n\t}\n\n\texport function setSoundsVersion(version: string | undefined) {\n\t\tif (version) localStorage.setItem(ID_SOUNDS_VERSION, version)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport json from 'comment-json'\nimport yaml from 'js-yaml'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '..'\nimport { useModel } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { transformOutput } from '../../schema/transformOutput'\nimport type { BlockStateRegistry } from '../../services'\nimport { Store } from '../../Store'\nimport { message } from '../../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n\tminified: undefined,\n}\n\nconst FORMATS: Record any,\n\tstringify: (v: any, indentation: string | number | undefined) => string,\n}> = {\n\tjson: {\n\t\tparse: json.parse,\n\t\tstringify: (v, i) => json.stringify(v, null, i),\n\t},\n\tyaml: {\n\t\tparse: yaml.load,\n\t\tstringify: (v, i) => yaml.dump(v, {\n\t\t\tflowLevel: i === undefined ? 0 : -1,\n\t\t\tindent: typeof i === 'string' ? 4 : i,\n\t\t}),\n\t},\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst [format, setFormat] = useState(Store.getFormat())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn FORMATS[format].stringify(data, INDENT[indent]) + '\\n'\n\t}, [indent, format])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent, format])\n\n\tconst onImport = () => {\n\t\tif (source.current.value.length === 0) return\n\t\ttry {\n\t\t\tconst data = FORMATS[format].parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && model && blockStates && download.current) {\n\t\t\tconst content = encodeURIComponent(getOutput(model, blockStates))\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.${format}`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\tconst changeFormat = (value: string) => {\n\t\tStore.setFormat(value)\n\t\tsetFormat(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t{Object.keys(FORMATS).map(key =>\n\t\t\t\t\t changeFormat(key)} />)}\n\t\t\t
\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { INode, Path } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\n\nexport class ModelWrapper extends DataModel {\n\tconstructor(\n\t\tschema: INode,\n\t\tprivate readonly mapper: (path: Path) => Path,\n\t\tprivate readonly getter: (path: Path) => any,\n\t\tprivate readonly setter: (path: Path, value: any, silent?: boolean) => any,\n\t) {\n\t\tsuper(schema)\n\t}\n\n\tmap(path: Path) {\n\t\treturn this.mapper(path)\n\t}\n\n\tget(path: Path) {\n\t\treturn this.getter(path)\n\t}\n\n\tset(path: Path, value: any, silent?: boolean) {\n\t\treturn this.setter(path, value, silent)\n\t}\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NodeChildren, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, ListNode, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Btn, Octicon } from '../components'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../services'\nimport { CachedDecorator, CachedFeature } from '../services'\nimport { deepClone, deepEqual, hexId, isObject, newSeed } from '../Utils'\nimport { ModelWrapper } from './ModelWrapper'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state', 'material_rule.block.result_state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset', 'model_element.from', 'model_element.to', 'model_element.rotation.origin', 'model_element.faces.uv', 'item_transform.rotation', 'item_transform.translation', 'item_transform.scale']\nconst collapsedFields = ['noise_settings.surface_rule', 'noise_settings.noise.terrain_shaper']\n\nconst findGenerator = (id: string) => {\n\treturn config.generators.find(g => g.id === id.replace(/^\\$/, ''))\n}\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, VersionId, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tversion: VersionId,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, version, blockStates }: { model: DataModel, lang: string, version: VersionId, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, version, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, version, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, version, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (type: string) => {\n\t\t\tconst c = choices.find(c => c.type === type) ?? choice\n\t\t\tconst def = c.node.default()\n\t\t\tconst newValue = c.change\n\t\t\t\t? c.change(DataModel.unwrapLists(value))\n\t\t\t\t: config.choiceContext === 'feature' && def?.type === 'minecraft:decorated' ? def.config.feature : def\n\t\t\tpath.model.set(path, DataModel.wrapLists(newValue))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, version, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst actions: MenuAction[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'duplicate',\n\t\t\t\t\t\tlabel: 'duplicate',\n\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\tconst v = [...path.get()]\n\t\t\t\t\t\t\tv.splice(index, 0, { id: hexId(), node: deepClone(cValue) })\n\t\t\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 0 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, version, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, version, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, config, getActiveFields, getChildModelPath }, path, value, lang, version, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tif (path.getArray().length == 0 && isDecorated(config.context, value)) {\n\t\t\tconst { wrapper, fields } = createDecoratorsWrapper(getActiveFields(path), path, value)\n\t\t\tvalue = wrapper.data\n\t\t\tgetActiveFields = () => fields\n\t\t\tgetChildModelPath = (path, key) => new ModelPath(wrapper, new Path(path.getArray(), ['feature'])).push(key)\n\t\t}\n\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst context = path.getContext().join('.')\n\t\tif (collapsedFields.includes(context)) {\n\t\t\tconst toggled = isToggled('')\n\t\t\tprefix = <>\n\t\t\t\t\n\t\t\t\n\t\t\tif (!toggled) {\n\t\t\t\treturn [prefix, suffix, null]\n\t\t\t}\n\t\t}\n\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, version, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, version, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\tif (!(toggleState instanceof Map)) return false\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value, lang }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tpath.model.set(path, parsed)\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tpath.model.set(path, parsed)\n\t}\n\treturn <>\n\t\t {if (evt.key === 'Enter') onChange(evt)}} />\n\t\t{config?.color && }\n\t\t{['dimension.generator.seed', 'dimension.generator.biome_source.seed', 'world_settings.seed'].includes(path.getContext().join('.')) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, version, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tif (newValue === value) return\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tconst id = !isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string' ? config.params.pool : undefined\n\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (id) {\n\t\t\tcontext = context.contextPush(id)\n\t\t} else if (isEnum(config)) {\n\t\t\tcontext = path\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\tconst gen = id ? findGenerator(id) : undefined\n\t\treturn <>\n\t\t\t {if (evt.key === 'Enter') onChange(evt)}}\n\t\t\t\tlist={values.length > 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\t{gen && values.includes(value) && value.startsWith('minecraft:') &&\n\t\t\t\t{Octicon.link_external}}\n\t\t\n\t}\n}\n\ntype MenuAction = {\n\tlabel: string,\n\tdescription?: string,\n\ticon: keyof typeof Octicon,\n\tonSelect: () => unknown,\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tversion: VersionId,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tactions?: MenuAction[],\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, version, states, ctx, actions, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx: Record = { ...ctx, depth: (ctx.depth ?? 0) + 1 }\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, version, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tif (path.model instanceof ModelWrapper) {\n\t\tpath = path.model.map(path).withModel(path.model)\n\t}\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n\nfunction isDecorated(context: string | undefined, value: any) {\n\treturn context === 'feature'\n\t\t&& value?.type?.replace(/^minecraft:/, '') === 'decorated'\n\t\t&& isObject(value?.config)\n}\n\nfunction createDecoratorsWrapper(originalFields: NodeChildren, path: ModelPath, value: any) {\n\tconst decorators: any[] = []\n\tconst feature = iterateNestedDecorators(value, decorators)\n\tconst fields = {\n\t\ttype: originalFields.type,\n\t\tconfig: ObjectNode({\n\t\t\tdecorators: ListNode(CachedDecorator),\n\t\t\tfeature: CachedFeature,\n\t\t}, { context: 'feature.decorated' }),\n\t}\n\tconst schema = ObjectNode(fields, { context: 'feature' })\n\tconst featurePath = new Path(['config', 'feature'])\n\tconst decoratorsPath = new Path(['config', 'decorators'])\n\tconst model = path.getModel()\n\tconst wrapper: ModelWrapper = new ModelWrapper(schema, path => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\treturn new Path([...[...Array(decorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\treturn new Path([])\n\t\t\t}\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (typeof index === 'number') {\n\t\t\t\treturn new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t}\n\t\t}\n\t\treturn path\n\t}, path => {\n\t\tif (path.equals(decoratorsPath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\treturn newDecorators\n\t\t}\n\t\treturn model.get(wrapper.map(path))\n\t}, (path, value, silent) => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\tconst newPath =new Path([...[...Array(newDecorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t\treturn model.set(newPath, value, silent)\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\treturn model.set(new Path(), produceNestedDecorators(feature, value), silent)\n\t\t\t} else if (typeof index === 'number') {\n\t\t\t\tif (path.modelArr.length === 3 && value === undefined) {\n\t\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\t\tconst newDecorators: any[] = []\n\t\t\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\t\t\tnewDecorators.splice(index, 1)\n\t\t\t\t\tconst newValue = produceNestedDecorators(feature, newDecorators)\n\t\t\t\t\treturn model.set(new Path(), newValue, silent)\n\t\t\t\t} else {\n\t\t\t\t\tconst newPath = new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t\t\treturn model.set(newPath, value, silent)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmodel.set(path, value, silent)\n\t})\n\twrapper.data = {\n\t\ttype: model.data.type,\n\t\tconfig: {\n\t\t\tdecorators,\n\t\t\tfeature,\n\t\t},\n\t}\n\twrapper.errors = model.errors\n\treturn { fields, wrapper }\n}\n\nfunction iterateNestedDecorators(value: any, decorators: any[]): any {\n\tif (value?.type?.replace(/^minecraft:/, '') !== 'decorated') {\n\t\treturn value\n\t}\n\tif (!isObject(value?.config)) {\n\t\treturn value\n\t}\n\tdecorators.push({ id: decorators.length, node: value.config.decorator })\n\treturn iterateNestedDecorators(value.config.feature ?? '', decorators)\n}\n\nfunction produceNestedDecorators(feature: any, decorators: any[]): any {\n\tif (decorators.length === 0) return feature\n\treturn {\n\t\ttype: 'minecraft:decorated',\n\t\tconfig: {\n\t\t\tdecorator: decorators.shift().node,\n\t\t\tfeature: produceNestedDecorators(feature, decorators),\n\t\t},\n\t}\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport { FullNode } from '../../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../../services'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, version, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates || lang === 'none') return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../services'\nimport { checkVersion } from '../services'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import { Howl } from 'howler'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, NumberInput, RangeInput, TextInput } from '..'\nimport { locale } from '../../Locales'\nimport type { SoundEvents, VersionAssets } from '../../services'\nimport { getResourceUrl } from '../../services'\n\nexport interface SoundConfig {\n\tid: string,\n\tsound: string,\n\tdelay: number,\n\tpitch: number,\n\tvolume: number,\n}\ntype SoundConfigProps = SoundConfig & {\n\tlang: string,\n\tassets: VersionAssets,\n\tsounds: SoundEvents,\n\tonEdit: (changes: Partial) => unknown,\n\tonDelete: () => unknown,\n\tdelayedPlay?: number,\n}\nexport function SoundConfig({ lang, assets, sounds, sound, delay, pitch, volume, onEdit, onDelete, delayedPlay }: SoundConfigProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [loading, setLoading] = useState(true)\n\tconst [playing, setPlaying] = useState(false)\n\tconst [invalid, setInvalid] = useState(false)\n\tconst howls = useRef([])\n\tconst command = `playsound minecraft:${sound} master @s ~ ~ ~ ${volume} ${pitch}`\n\n\tuseEffect(() => {\n\t\tconst soundEvent = sounds[sound]\n\t\tsetInvalid((soundEvent?.sounds?.length ?? 0) === 0)\n\t\thowls.current.forEach(h => h.stop())\n\t\thowls.current = (soundEvent?.sounds ?? []).map(entry => {\n\t\t\tconst soundPath = typeof entry === 'string' ? entry : entry.name\n\t\t\tconst hash = assets[`minecraft/sounds/${soundPath}.ogg`].hash\n\t\t\tconst url = getResourceUrl(hash)\n\t\t\tconst howl = new Howl({\n\t\t\t\tsrc: [url],\n\t\t\t\tformat: ['ogg'],\n\t\t\t\tvolume,\n\t\t\t\trate: pitch,\n\t\t\t})\n\t\t\thowl.on('end', () => {\n\t\t\t\tsetPlaying(false)\n\t\t\t})\n\t\t\tconst completed = () => {\n\t\t\t\tif (loading && howls.current.every(h => h.state() === 'loaded')) {\n\t\t\t\t\tsetLoading(false)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (howl.state() === 'loaded') {\n\t\t\t\tsetTimeout(() => completed())\n\t\t\t} else {\n\t\t\t\thowl.on('load', () => {\n\t\t\t\t\tcompleted()\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn howl\n\t\t})\n\t\tsetLoading(true)\n\t}, [sound, sounds])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.rate(pitch))\n\t}, [pitch])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.volume(volume))\n\t}, [volume])\n\n\tconst play = () => {\n\t\tif (loading || invalid) return\n\t\tstop()\n\t\tconst howl = Math.floor(Math.random() * howls.current.length)\n\t\thowls.current[howl].play()\n\t\tsetPlaying(true)\n\t}\n\tconst stop = () => {\n\t\thowls.current.forEach(h => h.stop())\n\t}\n\tuseEffect(() => {\n\t\tif (delayedPlay) setTimeout(() => play(), delay * 50)\n\t}, [delayedPlay])\n\n\tuseEffect(() => {\n\t\treturn () => stop()\n\t}, [])\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copy = () => {\n\t\tnavigator.clipboard.writeText(command)\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\treturn
\n\t\t\n\t\t onEdit({ sound })} />\n\t\t\n\t\t onEdit({ delay })} />\n\t\t\n\t\t onEdit({ pitch })} />\n\t\t\n\t\t onEdit({ volume })} />\n\t\t\n\t\t {onDelete(); stop()}} />\n\t
\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tdesc?: string,\n\tlink?: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, desc, link, icon, children }: ToolCardProps) {\n\tconst content = <>\n\t\t
\n\t\t\t{icon && Icons[icon]}\n\t\t\t
\n\t\t\t\t

{title}

\n\t\t\t\t

{desc}

\n\t\t\t
\n\t\t
\n\t\t{children &&
\n\t\t\t{children}\n\t\t
}\n\t\n\treturn link\n\t\t? {content}\n\t\t:
{content}
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tcategory: string,\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Category({ category, lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc(category)))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import marked from 'marked'\nimport { useEffect, useMemo, useState } from 'preact/hooks'\nimport { Ad, Btn, ErrorPanel, Octicon, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { ChangelogEntry, ChangelogVersion, VersionId } from '../services'\nimport { getChangelogs } from '../services'\nimport { hashString } from '../Utils'\n\ntype ChangelogProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n}\nexport function Changelog({ lang, changeTitle }: ChangelogProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.changelog'))\n\n\tconst [changelogs, setChangelogs] = useState([])\n\tuseEffect(() => {\n\t\tgetChangelogs()\n\t\t\t.then(changelogs => setChangelogs(changelogs))\n\t\t\t.catch(e => { console.error(e); setError(e) })\n\t}, [])\n\n\tconst [search, setSearch] = useState('')\n\tconst [tags, setTags] = useState([])\n\tconst toggleTag = (tag: string) => {\n\t\tif (!tags.includes(tag)) {\n\t\t\tsetTags([...tags, tag])\n\t\t} else {\n\t\t\tsetTags(tags.filter(t => t !== tag))\n\t\t}\n\t}\n\n\tconst filteredChangelogs = useMemo(() => {\n\t\tconst query = search.split(' ').map(q => q.trim().toLowerCase()).filter(q => q.length > 0)\n\t\tif (query.length === 0 && tags.length === 0) return changelogs\n\t\treturn changelogs.filter(change => {\n\t\t\tif (!tags.every(tag => change.tags.includes(tag))) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst content = change.tags.join(' ') + ' ' + change.content.toLowerCase()\n\t\t\treturn query.every(q => {\n\t\t\t\tif (q.startsWith('!')) {\n\t\t\t\t\treturn q.length === 1 || !content.includes(q.slice(1))\n\t\t\t\t}\n\t\t\t\treturn content.includes(q)\n\t\t\t})\n\t\t})\n\t}, [changelogs, search, tags])\n\n\tconst [sort, setSort] = useState(true)\n\n\tconst sortedChangelogs = useMemo(() => {\n\t\treturn filteredChangelogs.sort((a, b) => sort ? b.order - a.order : a.order - b.order)\n\t}, [filteredChangelogs, sort])\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setSort(!sort)} />\n\t\t\t
\n\t\t\t{tags.length > 0 &&
\n\t\t\t\t{tags.map(tag => setTags(tags.filter(t => t !== tag))} />)}\n\t\t\t
}\n\t\t
\n\t\t
\n\t\t\t{sortedChangelogs.map(change =>\n\t\t\t\t)}\n\t\t
\n\t
\n}\n\ntype ChangeProps = {\n\tchange: ChangelogEntry,\n\tactiveTags: string[],\n\ttoggleTag: (tag: string) => unknown,\n}\nfunction Change({ change, activeTags, toggleTag }: ChangeProps) {\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t{change.tags.map(tag => toggleTag(tag)} active={activeTags.includes(tag)} />)}\n\t\t
\n\t\t
\n\t
\n}\n\nfunction ArticleLink({ id, article }: ChangelogVersion) {\n\treturn article === null\n\t\t? {id}\n\t\t: {id}\n}\n\ntype TagProps = {\n\tlabel: string,\n\tactive?: boolean,\n\tonClick?: () => unknown,\n}\nfunction Tag({ label, active, onClick }: TagProps) {\n\tconst color = label === 'breaking' ? 5 : hashString(label) % 360\n\treturn
\n\t\t{label === 'breaking' && Octicon.alert}\n\t\t{label}\n\t
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../services'\nimport { checkVersion, fetchPreset, getBlockStates, getCollections, getModel } from '../services'\nimport { getGenerator, getSearchParams, message, setSeachParams } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, changeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion, gen.maxVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst searchParams = getSearchParams(getCurrentUrl())\n\tconst currentPreset = searchParams.get('preset')\n\tuseEffect(() => {\n\t\tif (model && currentPreset) {\n\t\t\tselectPreset(currentPreset)\n\t\t}\n\t}, [currentPreset])\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetError(null)\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(async m => {\n\t\t\t\tAnalytics.setGenerator(gen.id)\n\t\t\t\tif (currentPreset) {\n\t\t\t\t\tconst preset = await loadPreset(currentPreset)\n\t\t\t\t\tm.reset(DataModel.wrapLists(preset), false)\n\t\t\t\t}\n\t\t\t\tsetModel(m)\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetSeachParams({ version: undefined, preset: undefined })\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst selectPreset = (id: string) => {\n\t\tloadPreset(id).then(preset => {\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t\tsetSeachParams({ version, preset: id })\n\t\t})\n\t}\n\n\tconst loadPreset = async (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\ttry {\n\t\t\tconst preset = await fetchPreset(version, gen.path ?? gen.id, id)\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn preset\n\t\t} catch (e) {\n\t\t\tsetError(message(e))\n\t\t}\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => selectPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{config.generators.filter(g => g.category === 'assets').map(g =>\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t
\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Ad, Btn, BtnMenu, ErrorPanel, SoundConfig, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { SoundEvents, VersionAssets, VersionId } from '../services'\nimport { getAssets, getSounds } from '../services'\nimport { hexId, message } from '../Utils'\n\ntype SoundsProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n}\nexport function Sounds({ lang, changeTitle, version, changeVersion }: SoundsProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.sounds'))\n\n\tconst [assets, setAssets] = useState({})\n\tconst [sounds, setSounds] = useState({})\n\tconst soundKeys = Object.keys(sounds ?? {})\n\tuseEffect(() => {\n\t\tgetAssets(version)\n\t\t\t.then(assets => { setAssets(assets); return getSounds(version) })\n\t\t\t.then(sounds => { if (sounds) setSounds(sounds) })\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version])\n\n\tconst [search, setSearch] = useState('')\n\tconst [configs, setConfigs] = useState([])\n\tconst addConfig = () => {\n\t\tsetConfigs([{ id: hexId(), sound: search, delay: 0, pitch: 1, volume: 1 }, ...configs])\n\t}\n\tconst editConfig = (id: string) => (changes: Partial) => {\n\t\tsetConfigs(configs.map(c => c.id === id ? { ...c, ...changes } : c))\n\t}\n\tconst deleteConfig = (id: string) => () => {\n\t\tsetConfigs(configs.filter(c => c.id !== id))\n\t}\n\n\tconst [delayedPlay, setDelayedPlay] = useState(0)\n\tconst playAll = () => {\n\t\tsetDelayedPlay(delayedPlay + 1)\n\t}\n\n\tconst download = useRef(null)\n\tconst downloadFunction = () => {\n\t\tconst hasDelay = configs.some(c => c.delay > 0)\n\t\tconst content = configs\n\t\t\t.sort((a, b) => a.delay - b.delay)\n\t\t\t.map(c => `${hasDelay ? `execute if score @s delay matches ${c.delay} run ` : ''}playsound minecraft:${c.sound} master @s ~ ~ ~ ${c.volume} ${c.pitch}`)\n\t\t\t.join('\\n')\n\t\tdownload.current.setAttribute('href', 'data:text/plain;charset=utf-8,' + content + '%0A')\n\t\tdownload.current.setAttribute('download', 'sounds.mcfunction')\n\t\tdownload.current.click()\n\t}\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t{soundKeys.length > 0 && <>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{configs.length > 1 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{config.versions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v.id as VersionId)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t{configs.map(c => )}\n\t\t\t
\n\t\t\t\n\t\t}\n\t\t\n\t\t\t{soundKeys.map(s => \n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { getCurrentUrl, Router } from 'preact-router'\nimport { useCallback, useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { Category, Changelog, Generator, Home, Sounds } from './pages'\nimport type { VersionId } from './services'\nimport { VersionIds } from './services'\nimport { Store } from './Store'\nimport { cleanUrl, getSearchParams, setSeachParams } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('none')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst searchParams = getSearchParams(getCurrentUrl())\n\tconst targetVersion = searchParams.get('version')\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = useCallback((version: VersionId) => {\n\t\tif (getSearchParams(getCurrentUrl()).has('version')) {\n\t\t\tsetSeachParams({ version })\n\t\t}\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}, [targetVersion])\n\tuseEffect(() => {\n\t\tif (VersionIds.includes(targetVersion as VersionId) && version !== targetVersion) {\n\t\t\tsetVersion(targetVersion as VersionId)\n\t\t}\n\t}, [version, targetVersion])\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tconst titleVersions = versions.slice(versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${titleVersions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","clazz","tooltip","tooltipLoc","onClick","aria-label","Octicon","large","doSelect","value","placeholder","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","__spreadProps","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","setGenerator","generator","generatorEvent","alert","xmlns","viewBox","fill-rule","d","archive","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","duplicate","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","link_external","mark_github","moon","play","plus","plus_circle","search","sort_asc","sort_desc","stack","sun","sync","tag","terminal","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","component","props","evt","fn","onKeyDown","onEnter","key","__spreadValues","displayName","name","TextInput","BaseInput","v","NumberInput","Number","RangeInput","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","default","obj","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","MAX_SAFE_INTEGER","seed","dimensions","get","Path","set","keys","forEach","h","i","imul","charCodeAt","url","replaceAll","searchIndex","indexOf","cleanUrl","trimmedUrl","getPath","generators","g2","Map","split","param","decodeURIComponent","modifications","newPath","getCurrentUrl","searchParams","getSearchParams","entries","delete","encodeURIComponent","str","abs","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","hasOwnProperty","call","forward","backward","this","defaultValue","repo","Changelogs","fetch","json","group","groupIndex","versionIndex","text","entry","tags","substring","trim","content","parseChangelog","order","change","fetchChangelog","parseVersion","flat","fetchGroup","article","isObject","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","CachedDecorator","CachedFeature","collections","getCollections","blockStates","versionId","collectionTarget","blockStateTarget","versions","JSON","stringify","debug","dynamic","refs","filter","localStorage","getItem","r","hash","matches","cache","caches","open","promises","request","push","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","fetchAssetsRegistries","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","minVersion","maxVersion","removeItem","mcdataUrl","mcassetsUrl","vanillaDatapackUrl","registries","asset","checkVersion","mcdata_master","getData","data2","k","register","path","values","properties","states","assign","vanilla_datapack_summary","Noises","PlacedFeatures","fetchFolder","mcassets","directories","files","d2","ids","registry","versionData","includes","vanilla_datapack_data","parse","noise","terrain_shaper","offset","factor","jaggedness","cacheResponse","ok","fetchResponse","responseData","put","Response","Manifest","VersionAssets","SoundEvents","fetchManifest","manifest","getManifest","latest","snapshot","versionMeta","assetIndex","objects","fetchAssets","assets","getAssets","getResourceUrl","fetchSounds","ready","LAYERS","temperature","humidity","continentalness","erosion","weirdness","cacheState","biomeSourceCache","state","options","newState","octaves","shaper","toJson","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","node","preset","NetherPreset18","NetherPreset","fetchPreset","biome_source","OverworldPreset18","DataModel","unwrapLists","init","wasm","loadWasm","BiomeIds","BiMap","p","t0","t1","h0","h1","c0","c1","e0","e1","w0","w1","d0","d1","o","depth","parameters","getOrPut","biome_parameters","Float64Array","Int32Array","sampler","climate_sampler","firstOctave","amplitudes","multi_noise","getA","getBiomes","xFrom","xTo","xStep","yFrom","yTo","yStep","zFrom","zTo","zStep","layers","climate","climate_noise","result","t","w","point","TerrainShaper","has","config2","clamp","NormalNoise","LegacyRandom","n","n2","sample","minDist","Infinity","minBiome","dist","square","altitude","getBiomeSource","biomeSource","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:old_growth_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:old_growth_pine_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_hills","minecraft:gravelly_mountains","minecraft:windswept_gravelly_hills","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:sparse_jungle","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:extreme_hills","minecraft:mountains","minecraft:windswept_hills","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:windswept_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:snowy_plains","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:stony_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:old_growth_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_badlands","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:windswept_forest","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:jagged_peaks","minecraft:snowcapped_peaks","minecraft:frozen_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","temperature_noise","humidity_noise","weirdness_noise","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","fill","pos","feature","j","base","spread","normalize","min_inclusive","max_inclusive","source","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","settings","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","cx","ox","noise1","fillNoiseColumn","noise2","yy","oy","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","NoiseGeneratorSettings","fromJson","getOctaves","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","OverworldShaper","overworld","BiomeSourcePreview","shown","setScale","focused","setFocused","setLayers","Set","refineTimeout","getShaper","calculateState","useCanvas","round","oz","col","xRange","zRange","l2","getClimate","worldX","worldZ","getBiomeColor","getBiome","brightness","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","BtnMenu","locale","enabled","newSeed","densityFactor","densityOffset","DecoratorPreview","setSeed","randomSeed","NoisePreview","NoiseParameters","NoiseSettingsPreview","loc","bind","setBiomeScale","setBiomeDepth","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","hook","getOwnPropertySymbols","blockState","validation","validator","relativePath","getActiveFields","activeFields","out","Store","Store2","getLanguage","getTheme","getVersion","getIndent","getFormat","getSoundsVersion","setIndent","indent","setFormat","format","setSoundsVersion","INDENT","2_spaces","4_spaces","tabs","minified","FORMATS","yaml","dump","flowLevel","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","setAttribute","click","changeIndent","changeFormat","onBlur","wrapLists","spellcheck","autocorrect","style","mapper","getter","setter","silent","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","collapsedFields","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","def","newValue","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","actions","onSelect","splice","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","isDecorated","wrapper","fields","originalFields","decorators","iterateNestedDecorators","ListNode","featurePath","decoratorsPath","ModelWrapper","path2","modelArr","equals","newDecorators","feature2","produceNestedDecorators","createDecoratorsWrapper","optional","onExpand","onCollapse","toggled","newCtx","pools","loot","child","context2","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","toggleAll","setToggleAll","ctrlKey","integer","parsed","parseFloat","padStart","getValues","isEnum","pool","additional","datalistId","gen","findGenerator","list","values2","memo","onContextMenu","preventDefault","a","description","navigator","prev","next","withModel","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","Themes","system","dark","light","title","changeTheme","changeLanguage","getGenerator","Link","Icons","home","route","th","rx","y","report","sounds","cy","clip-rule","sound","delay","pitch","volume","onEdit","onDelete","delayedPlay","loading","setLoading","playing","setPlaying","invalid","setInvalid","howls","command","soundEvent","h2","stop","soundPath","howl","Howl","src","rate","on","completed","every","copyActive","setCopyActive","copyTimeout","step","toFixed","desc","changeTitle","ToolCard","setError","changelogs","setChangelogs","changelogs2","catch","setSearch","setTags","toggleTag","filteredChangelogs","useMemo","query","q2","toLowerCase","sort","setSort","sortedChangelogs","Ad","ErrorPanel","Tag","Change","activeTags","ArticleLink","dangerouslySetInnerHTML","__html","marked","changeVersion","errorBoundary","errorRetry","allowedVersions","currentPreset","setModel","setBlockStates","Reference","ChoiceNode","schemaName","validate","err","m","loadPreset","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","presets","selectPreset","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","previewShown","setPreviewShown","hasPreview","actionsShown","Tree","PreviewPanel","SourcePanel","setAssets","setSounds","soundKeys","assets2","getSounds","sounds2","configs","setConfigs","addConfig","deleteConfig","setDelayedPlay","hasDelay","SoundConfig","changes","loadLocale","documentElement","targetVersion","version2","setTitle","title2","titleVersions","Header","theme2","Router","Home","Category","Sounds","Changelog","Generator","render","Main"],"mappings":"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BACA,uBACA,kBACA,mBACA,4BACA,6BACA,wBACA,kBACA,4BACA,yBACA,mCACA,mCACA,mCACA,2BACA,2BACA,gCACA,mCACA,gCACA,0CACA,oBACA,8BACA,0BACA,wBACA,8BACA,uBACA,8BAGKC,GAAiB,CACtB,2BACA,2BACA,mBACA,yBACA,8BACA,yBACA,0BACA,4BACA,2BACA,0BACA,uBACA,6BACA,qBACA,kCACA,kCACA,sCACA,iCACA,iCACA,uBACA,yBACA,uCACA,sCACA,0BACA,mCACA,6BACA,kBACA,wBACA,sBACA,wBACA,sBACA,8BACA,+BACA,iCACA,sBACA,2BACA,gCACA,+BACA,8BACA,2BACA,iCACA,kCACA,0BACA,yBACA,yBACA,wBACA,2BACA,wBACA,yBACA,yBACA,6BACA,wBACA,sBACA,4BACA,2BACA,sBACA,sBACA,yBACA,2BACA,wBACA,wBACA,sBACA,sBACA,8BACA,kCACA,iCACA,4BACA,0CACA,4BACA,kCACA,qCACA,8BACA,gCACA,yBACA,8BACA,uCACA,2BACA,0BACA,yBACA,wBACA,qCACA,+BACA,+BACA,2BACA,qBACA,2BACA,2BACA,uBACA,6BACA,6BACA,wBACA,+BACA,8BACA,8BACA,8BACA,qBACA,wBACA,qBACA,4BACA,2BACA,2BACA,4BACA,8BACA,8BACA,uBACA,8BACA,yBACA,4BACA,2BACA,2BACA,sBACA,6BACA,sBACA,8BACA,8BACA,yBACA,+BACA,0BACA,qBACA,+BACA,6BACA,mCACA,gCACA,gCACA,4BACA,8BACA,qCACA,uBACA,iCACA,+BACA,+BACA,+BACA,8BACA,gCACA,8BACA,gCACA,6BACA,wBACA,0BACA,4BACA,6BACA,sCACA,oCACA,mCACA,4BACA,6BACA,+BACA,4BACA,yBACA,yBACA,8BACA,gCACA,gCACA,oCACA,+BACA,+BACA,+BACA,uBACA,0BACA,0BACA,+BACA,+BACA,4BACA,2BACA,4BACA,2BACA,0BACA,iCACA,0BACA,0BACA,iCACA,yBACA,wBACA,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"} \ No newline at end of file diff --git a/assets/index.html b/assets/index.html index 630a3600..45dfe5b6 100644 --- a/assets/index.html +++ b/assets/index.html @@ -20,7 +20,7 @@ Assets Generators Minecraft 1.16, 1.17, 1.18 - + diff --git a/assets/ja.3170354d.js b/assets/ja.3170354d.js new file mode 100644 index 00000000..1db6224d --- /dev/null +++ b/assets/ja.3170354d.js @@ -0,0 +1,2 @@ +var e=JSON.parse('{"advancement.criteria":"条件","advancement.display":"表示","advancement.display.announce_to_chat":"達成した際チャットに表示する","advancement.display.background":"背景","advancement.display.description":"説明","advancement.display.frame":"枠","advancement.display.frame.challenge":"挑戦","advancement.display.frame.goal":"目標","advancement.display.frame.task":"進捗","advancement.display.help":"Displayオブジェクトが存在する場合、この進捗が進捗タブに表示されます。","advancement.display.hidden":"達成するまで非表示にする","advancement.display.icon":"アイコン","advancement.display.icon.item":"アイコンアイテム","advancement.display.icon.nbt":"アイコンのNBT","advancement.display.show_toast":"達成した際トーストを表示する","advancement.display.title":"タイトル","advancement.parent":"親となる進捗","advancement.rewards":"報酬","advancement.rewards.experience":"経験値","advancement.rewards.function":"関数","advancement.rewards.loot":"ルートテーブル","advancement.rewards.recipes":"レシピ","advancement_trigger.bee_nest_destroyed":"ミツバチの巣を破壊したとき","advancement_trigger.bred_animals":"動物を繁殖させたとき","advancement_trigger.brewed_potion":"ポーションを醸造したとき","advancement_trigger.changed_dimension":"ディメンションを移動したとき","advancement_trigger.channeled_lightning":"トライデントで雷を当てたとき","advancement_trigger.construct_beacon":"ビーコンを作成したとき","advancement_trigger.consume_item":"アイテムを消費したとき","advancement_trigger.cured_zombie_villager":"村人ゾンビを治療したとき","advancement_trigger.effects_changed":"効果を付与もしくは除去されたとき","advancement_trigger.enchanted_item":"アイテムをエンチャントしたとき","advancement_trigger.enter_block":"ブロックと同じ座標に立ったとき","advancement_trigger.entity_hurt_player":"エンティティからダメージを受けたとき","advancement_trigger.entity_killed_player":"エンティティに倒されたとき","advancement_trigger.fall_from_height":"高所からの落下","advancement_trigger.filled_bucket":"バケツを満たしたとき","advancement_trigger.fishing_rod_hooked":"釣り竿でアイテムを取る/エンティティを引っ張ったとき","advancement_trigger.hero_of_the_village":"村の襲撃イベントをクリアしたとき","advancement_trigger.impossible":"不可能","advancement_trigger.inventory_changed":"インベントリを変更したとき","advancement_trigger.item_durability_changed":"アイテムの耐久値が変更されたとき","advancement_trigger.item_used_on_block":"ブロックに対してアイテムを使用したとき","advancement_trigger.killed_by_crossbow":"クロスボウでトドメを刺したとき","advancement_trigger.levitation":"浮遊したとき","advancement_trigger.location":"指定された範囲内に入ったとき","advancement_trigger.nether_travel":"ネザーから帰ってきたとき","advancement_trigger.placed_block":"ブロックを設置したとき","advancement_trigger.player_generates_container_loot":"ルートテーブルが設定されたコンテナの中身を生成したとき","advancement_trigger.player_hurt_entity":"エンティティにダメージを与えたとき","advancement_trigger.player_killed_entity":"エンティティを倒したとき","advancement_trigger.recipe_unlocked":"レシピを解禁したとき","advancement_trigger.ride_entity_in_lava":"溶岩の上を走ったとき","advancement_trigger.safely_harvest_honey":"蜂蜜を安全に収穫したとき","advancement_trigger.shot_crossbow":"クロスボウを打ったとき","advancement_trigger.slept_in_bed":"ベッドで寝たとき","advancement_trigger.slide_down_block":"ブロックを滑り落ちたとき","advancement_trigger.summoned_entity":"エンティティを召喚したとき","advancement_trigger.tame_animal":"動物を飼いならしたとき","advancement_trigger.target_hit":"ターゲットブロックに矢を当てたとき","advancement_trigger.thrown_item_picked_up_by_entity":"投げたアイテムをエンティティが拾ったとき","advancement_trigger.tick":"常時実行","advancement_trigger.used_ender_eye":"エンダーアイを使用したとき","advancement_trigger.used_totem":"不死のトーテムを使用したとき","advancement_trigger.villager_trade":"村人と取引したとき","advancement_trigger.voluntary_exile":"襲撃イベントを開始したとき","attribute.generic_armor":"防具","attribute.generic_armor_toughness":"防具の強度","attribute.generic_attack_damage":"攻撃力","attribute.generic_attack_knockback":"ノックバック","attribute.generic_attack_speed":"攻撃速度","attribute.generic_flying_speed":"飛行速度","attribute.generic_follow_range":"追跡範囲","attribute.generic_knockback_resistance":"ノックバック耐性","attribute.generic_luck":"幸運","attribute.generic_max_health":"最大体力","attribute.generic_movement_speed":"移動速度","attribute.horse.jump_strength":"ウマの跳躍力","attribute.zombie.spawn_reinforcements":"スポーン増援","attribute_modifier.amount":"補正値","attribute_modifier.attribute":"属性","attribute_modifier.name":"名前","attribute_modifier.operation":"計算方式","attribute_modifier.operation.addition":"加算","attribute_modifier.operation.multiply_base":"基礎乗算","attribute_modifier.operation.multiply_total":"乗算","attribute_modifier.slot":"スロット","attribute_modifier.slot.list":"複数","attribute_modifier.slot.string":"単体","axis.x":"X","axis.y":"Y","axis.z":"Z","badge.experimental":"実験段階","badge.unstable":"不安定","biome.carvers":"地形彫刻","biome.carvers.air":"空気","biome.carvers.liquid":"液体","biome.category":"カテゴリ","biome.creature_spawn_probability":"Mobの出現確率","biome.depth":"深度","biome.depth.help":"地形の高さを調整します。正の値は陸地とみなされ、負の値は海とみなされます。","biome.downfall":"Downfall (草/葉の色,火の延焼の速度等に影響を与えます)","biome.effects":"環境効果","biome.effects.additions_sound":"追加の音","biome.effects.additions_sound.sound":"音","biome.effects.additions_sound.tick_chance":"ティック・チャンス","biome.effects.ambient_sound":"環境音","biome.effects.fog_color":"霧の色","biome.effects.foliage_color":"葉の色","biome.effects.grass_color":"草の色","biome.effects.grass_color_modifier":"草の色の補正","biome.effects.grass_color_modifier.dark_forest":"暗い森","biome.effects.grass_color_modifier.none":"無し","biome.effects.grass_color_modifier.swamp":"湿地帯","biome.effects.mood_sound":"雰囲気の音","biome.effects.mood_sound.block_search_extent":"検索範囲をブロック","biome.effects.mood_sound.offset":"オフセット","biome.effects.mood_sound.sound":"音","biome.effects.mood_sound.tick_delay":"ティック遅延","biome.effects.music":"音楽","biome.effects.music.max_delay":"最大遅延","biome.effects.music.min_delay":"最小遅延","biome.effects.music.replace_current_music":"現在の音楽を上書きする","biome.effects.music.sound":"音","biome.effects.particle":"パーティクル","biome.effects.particle.options":"オプション","biome.effects.particle.options.type":"パーティクルのタイプ","biome.effects.particle.probability":"確率","biome.effects.sky_color":"空の色","biome.effects.water_color":"水の色","biome.effects.water_fog_color":"水中の霧の色","biome.features":"生成物","biome.features.entry":"ステップ","biome.features.entry.entry":"特徴","biome.player_spawn_friendly":"プレイヤースポーンフレンドリー","biome.player_spawn_friendly.help":"trueの場合、このバイオームではワールドスポーンが優先されます。","biome.precipitation":"雨の種類","biome.precipitation.none":"無し","biome.precipitation.rain":"雨","biome.precipitation.snow":"雪","biome.scale":"スケール","biome.scale.help":"垂直方向に地形を伸ばします。値が低いほど平坦な地形になります。","biome.spawn_costs":"スポーンコスト","biome.spawn_costs.charge":"チャージ","biome.spawn_costs.energy_budget":"エネルギーの予算","biome.spawners":"スポナー","biome.spawners.ambient":"アンビエント","biome.spawners.creature":"生物","biome.spawners.entry":"スポーン","biome.spawners.entry.maxCount":"最大数","biome.spawners.entry.minCount":"最小数","biome.spawners.entry.type":"種類","biome.spawners.entry.weight":"抽選確率","biome.spawners.misc":"その他","biome.spawners.monster":"モンスター","biome.spawners.water_ambient":"水の周囲","biome.spawners.water_creature":"水の生き物","biome.starts":"構造開始","biome.starts.entry":"ストラクチャー","biome.starts.help":"構成された生成物のストラクチャーのリスト。","biome.surface_builder":"地表生成","biome.temperature":"気温","biome.temperature_modifier":"温度変更","biome.temperature_modifier.frozen":"凍結","biome.temperature_modifier.none":"無し","block.block":"ブロックID","block.nbt":"NBT","block.state":"ブロック状態","block.tag":"ブロックタグ","block_definition.multipart":"マルチパート","block_definition.multipart.entry":"パート","block_definition.multipart.entry.apply":"適用","block_definition.multipart.entry.when":"時","block_definition.variants":"バリアント","block_placer.column_placer.extra_size":"エクストラサイズ","block_placer.column_placer.min_size":"最小サイズ","block_placer.type":"種類","block_predicate.all_of.predicates":"述語","block_predicate.any_of.predicates":"述語","block_predicate.inside_world_bounds.offset":"オフセット","block_predicate.matching_blocks.blocks":"ブロック","block_predicate.matching_blocks.blocks.entry":"ブロック","block_predicate.matching_blocks.offset":"オフセット","block_predicate.matching_fluids.fluids":"液体","block_predicate.matching_fluids.fluids.entry":"液体","block_predicate.matching_fluids.offset":"オフセット","block_predicate.type":"タイプ","block_predicate.would_survive.offset":"オフセット","block_predicate.would_survive.state":"統計","block_predicate_type.all_of":"すべて","block_predicate_type.any_of":"いずれか","block_predicate_type.inside_world_bounds":"ワールドバウンドの内側","block_predicate_type.matching_blocks":"マッチングブロック","block_predicate_type.matching_fluids":"適合する流体","block_predicate_type.not":"ない","block_predicate_type.replaceable":"交換可能","block_predicate_type.solid":"ソリッド","block_predicate_type.true":"はい","block_state.Name":"名前","block_state.Properties":"プロパティ","block_state_provider.rotated_block_provider.state":"状態","block_state_provider.simple_state_provider.state":"状態","block_state_provider.type":"種類","block_state_provider.weighted_state_provider.entries":"項目","block_state_provider.weighted_state_provider.entries.entry.data":"状態","block_state_provider.weighted_state_provider.entries.entry.weight":"抽選確率","carver.config":"設定","carver.config.canyon.vertical_radius_default_factor":"垂直の半径にかかるデフォルトの係数","carver.config.probability":"確率","carver.type":"種類","children":"子","children.entry":"項目","condition.alternative.terms":"条件","condition.block_state_property.block":"ブロック","condition.block_state_property.properties":"Block State","condition.condition":"条件","condition.damage_source":"ダメージの要因","condition.entity_properties.entity":"エンティティ","condition.entity_scores.entity":"エンティティ","condition.entity_scores.scores":"スコア","condition.entry":"条件","condition.inverted.term":"条件","condition.item":"アイテム","condition.killed_by_player.inverse":"反転","condition.list":"複数","condition.location":"位置","condition.location_check.offsetX":"X 補正","condition.location_check.offsetY":"Y 補正","condition.location_check.offsetZ":"Z 補正","condition.object":"単一","condition.random_chance.chance":"確率","condition.random_chance_with_looting.chance":"確率","condition.random_chance_with_looting.looting_multiplier":"ドロップ増加倍率","condition.reference.name":"条件名","condition.table_bonus.chances":"確率","condition.table_bonus.chances.entry":"確率","condition.table_bonus.enchantment":"エンチャント","condition.time_check.period":"期間","condition.time_check.period.help":"存在する場合、時間はこの値で剰余算されます。 たとえば、24000に設定されている場合、値は日数の期間で変化します。","condition.time_check.value":"値","condition.weather_check.raining":"降雨","condition.weather_check.thundering":"雷雨","conditions":"条件","conditions.entry":"条件","conditions.list":"条件","conditions.object":"旧版","copy_source.block_entity":"ブロックエンティティ","copy_source.direct_killer":"直接的な要因のエンティティ","copy_source.killer":"殺したエンティティ","copy_source.killer_player":"殺したプレイヤー","copy_source.this":"自身","criterion.bee_nest_destroyed.block":"ブロック","criterion.bee_nest_destroyed.num_bees_inside":"ミツバチの巣に居たミツバチの数","criterion.bred_animals.child":"子","criterion.bred_animals.parent":"親","criterion.bred_animals.partner":"パートナー","criterion.brewed_potion.potion":"ポーション","criterion.changed_dimension.from":"移動元","criterion.changed_dimension.to":"移動先","criterion.channeled_lightning.victims":"犠牲者","criterion.channeled_lightning.victims.entry":"エンティティ","criterion.conditions":"条件","criterion.construct_beacon.beacon_level":"ビーコンのレベル","criterion.consume_item.item":"アイテム","criterion.cured_zombie_villager.villager":"村人","criterion.cured_zombie_villager.zombie":"ゾンビ","criterion.effects_changed.effects":"効果","criterion.enchanted_item.item":"アイテム","criterion.enchanted_item.levels":"経験値レベル","criterion.enter_block.block":"ブロック","criterion.enter_block.state":"ブロックの状態","criterion.entity_hurt_player.damage":"ダメージ","criterion.entity_killed_player.entity":"死亡する要因となったエンティティ","criterion.entity_killed_player.killing_blow":"最後の一撃","criterion.filled_bucket.item":"アイテム","criterion.fishing_rod_hooked.entity":"引っ張られたエンティティ","criterion.fishing_rod_hooked.item":"アイテム","criterion.hero_of_the_village.location":"位置","criterion.inventory_changed.items":"アイテム","criterion.inventory_changed.items.entry":"アイテム","criterion.inventory_changed.slots":"スロット","criterion.inventory_changed.slots.empty":"空のスロットの数","criterion.inventory_changed.slots.full":"完全にスタックされたスロットの数","criterion.inventory_changed.slots.occupied":"占有されているスロットの数","criterion.item_durability_changed.delta":"差","criterion.item_durability_changed.durability":"耐久値","criterion.item_durability_changed.item":"アイテム","criterion.item_used_on_block.item":"アイテム","criterion.item_used_on_block.location":"位置","criterion.killed_by_crossbow.unique_entity_types":"エンティティ種の数","criterion.killed_by_crossbow.victims":"犠牲者","criterion.killed_by_crossbow.victims.entry":"エンティティ","criterion.levitation.distance":"距離","criterion.levitation.duration":"持続時間","criterion.location.location":"位置","criterion.nether_travel.distance":"距離","criterion.nether_travel.entered":"入った位置","criterion.nether_travel.exited":"出た位置","criterion.placed_block.block":"ブロック","criterion.placed_block.item":"アイテム","criterion.placed_block.location":"位置","criterion.placed_block.state":"ブロックの状態","criterion.player":"プレイヤー","criterion.player_generates_container_loot.loot_table":"ルートテーブル","criterion.player_hurt_entity.damage":"ダメージ","criterion.player_hurt_entity.entity":"ダメージを受けたエンティティ","criterion.player_killed_entity.entity":"ダメージを受けたエンティティ","criterion.player_killed_entity.killing_blow":"最後の一撃","criterion.recipe_unlocked.recipe":"レシピ","criterion.rod":"釣り竿","criterion.shot_crossbow.item":"アイテム","criterion.slept_in_bed.location":"位置","criterion.slide_down_block.block":"ブロック","criterion.summoned_entity.entity":"エンティティ","criterion.tame_animal.entity":"動物","criterion.target_hit.projectile":"飛び道具","criterion.target_hit.shooter":"射手","criterion.target_hit.signal_strength":"信号の強度","criterion.thrown_item_picked_up_by_entity.entity":"エンティティ","criterion.thrown_item_picked_up_by_entity.item":"アイテム","criterion.trigger":"トリガー","criterion.used_ender_eye.distance":"距離","criterion.used_totem.item":"トーテムアイテム","criterion.villager_trade.item":"購入したアイテム","criterion.villager_trade.villager":"村人","criterion.voluntary_exile.location":"位置","damage.blocked":"防御","damage.dealt":"与ダメージ","damage.source_entity":"要因のエンティティ","damage.taken":"非ダメージ","damage.type":"ダメージの種類","damage_source.bypasses_armor":"防御貫通","damage_source.bypasses_invulnerability":"奈落","damage_source.bypasses_magic":"空腹","damage_source.direct_entity":"直接的な要因のエンティティ","damage_source.is_explosion":"爆発","damage_source.is_fire":"炎上","damage_source.is_lightning":"雷","damage_source.is_magic":"魔法","damage_source.is_projectile":"飛び道具","damage_source.source_entity":"要因のエンティティ","decorator.carving_mask.step":"生成ステップ","decorator.config":"設定","decorator.count.count":"数量","decorator.count_extra.count":"数量","decorator.count_extra.extra_chance":"数量が追加される確率","decorator.count_extra.extra_count":"追加数量","decorator.count_multilayer.count":"数量","decorator.count_noise.above_noise":"閾値以上のノイズ","decorator.count_noise.below_noise":"閾値未満のノイズ","decorator.count_noise.noise_level":"ノイズレベル","decorator.count_noise_biased.noise_factor":"ノイズ係数","decorator.count_noise_biased.noise_offset":"ノイズオフセット","decorator.count_noise_biased.noise_to_count_ratio":"ノイズ対数量比","decorator.decorated.inner":"内側","decorator.decorated.outer":"外側","decorator.depth_average.baseline":"基準線","decorator.depth_average.spread":"拡散","decorator.glowstone.count":"個数","decorator.type":"種類","dimension":"ディメンション (Dimension)","dimension.generator":"ジェネレーター","dimension.generator.biome_source":"バイオームの生成法則","dimension.overworld":"オーバーワールド","dimension.the_end":"ジ・エンド","dimension.the_nether":"ネザー","dimension.type":"ディメンションタイプ","dimension.type.object":"カスタム","dimension.type.string":"プリセット","dimension_type.ambient_light":"環境光レベル","dimension_type.ambient_light.help":"環境光の明るさ。 0.0から1.0の間の値である必要があります。","dimension_type.bed_works":"ベッドが使用機能か否か","dimension_type.coordinate_scale":"座標のスケール","dimension_type.effects":"環境効果","dimension_type.effects.overworld":"オーバーワールド","dimension_type.effects.the_end":"ジ・エンド","dimension_type.effects.the_nether":"ネザー","dimension_type.fixed_time":"時間の固定","dimension_type.fixed_time.help":"この値を設定すると、太陽の位置が固定されます。","dimension_type.has_ceiling":"天井","dimension_type.has_raids":"襲撃","dimension_type.has_skylight":"天井光","dimension_type.infiniburn":"無限に燃焼するブロック","dimension_type.logical_height":"論理高度","dimension_type.name":"名前","dimension_type.natural":"自然","dimension_type.natural.help":"trueの場合、ポータルはゾンビピグリンを生成します。 falseの場合、コンパスと時計がランダムに回転します。","dimension_type.piglin_safe":"ピグリンがゾンビ化するか否か","dimension_type.respawn_anchor_works":"リスポーンアンカーが使用可能か否か","dimension_type.ultrawarm":"灼熱","dimension_type.ultrawarm.help":"trueの場合、水が蒸発しスポンジが乾燥します。","distance.absolute":"絶対距離","distance.horizontal":"水平距離","distance.x":"X","distance.y":"Y","distance.z":"Z","enchantment.aqua_affinity":"水中採掘","enchantment.bane_of_arthropods":"虫特効","enchantment.binding_curse":"束縛の呪い","enchantment.blast_protection":"爆発耐性","enchantment.channeling":"召雷","enchantment.depth_strider":"水中歩行","enchantment.efficiency":"効率強化","enchantment.enchantment":"エンチャント","enchantment.feather_falling":"落下耐性","enchantment.fire_aspect":"火属性","enchantment.fire_protection":"火炎耐性","enchantment.flame":"フレイム","enchantment.fortune":"幸運","enchantment.frost_walker":"氷渡り","enchantment.impaling":"水生特効","enchantment.infinity":"無限","enchantment.knockback":"ノックバック","enchantment.levels":"レベル","enchantment.looting":"ドロップ増加","enchantment.loyalty":"忠誠","enchantment.luck_of_the_sea":"宝釣り","enchantment.lure":"入れ食い","enchantment.mending":"修繕","enchantment.multishot":"拡散","enchantment.piercing":"貫通","enchantment.power":"射撃ダメージ増加","enchantment.projectile_protection":"飛び道具耐性","enchantment.protection":"ダメージ軽減","enchantment.punch":"パンチ","enchantment.quick_charge":"高速装填","enchantment.respiration":"水中呼吸","enchantment.riptide":"激流","enchantment.sharpness":"ダメージ増加","enchantment.silk_touch":"シルクタッチ","enchantment.smite":"アンデッド特効","enchantment.sweeping":"範囲ダメージ増加","enchantment.thorns":"棘の鎧","enchantment.unbreaking":"耐久力","enchantment.vanishing_curse":"消滅の呪い","entity.distance":"距離","entity.effects":"効果","entity.equipment":"装備","entity.fishing_hook":"浮き","entity.fishing_hook.in_open_water":"開けた水か否か","entity.flags":"フラグ","entity.isBaby":"子供","entity.isOnFire":"炎上","entity.isSneaking":"スニーク","entity.isSprinting":"ダッシュ","entity.isSwimming":"水泳","entity.location":"位置","entity.nbt":"NBT","entity.player":"プレイヤー","entity.targeted_entity":"狙われているエンティティ","entity.team":"チーム","entity.type":"エンティティ","entity.vehicle":"乗り物","entity_source.direct_killer":"直接的な要因のエンティティ","entity_source.killer":"殺したエンティティ","entity_source.killer_player":"殺したプレイヤー","entity_source.this":"自身","entry":"項目","error":"エラー","error.expected_boolean":"boolean型が必要です","error.expected_integer":"int型が必要です","error.expected_json":"JSONが必要です","error.expected_list":"配列が必要です","error.expected_number":"数値が必要です","error.expected_object":"オブジェクトが必要です","error.expected_range":"範囲が必要です","error.expected_string":"文字列が必要です","error.expected_uniform_int":"均一な整数が必要です","error.height_multiple":"高度は%0%の倍数である必要があります","error.invalid_binomial":"範囲は二項分布型を使用できません","error.invalid_empty_list":"配列は空にできません","error.invalid_empty_string":"文字列を空には出来ません","error.invalid_enum_option":"\\"%0%\\"は無効なオプションです","error.invalid_exact":"範囲は定数型を使用できません","error.invalid_list_range.exact":"リストの長さは%1%である必要があります","error.invalid_list_range.larger":"リストの長さ %0%は最大でも%1%以下である必要があります","error.invalid_list_range.smaller":"リストの長さ %0%は最小でも%1%以上である必要があります","error.invalid_number_range.between":"%0% ~ %1%の範囲の数値が必要です","error.invalid_number_range.larger":"値 %0%は最大でも%1%以下である必要があります","error.invalid_number_range.smaller":"値 %0%は最小でも%1%以上である必要があります","error.invalid_pattern":"%0%は有効な文字列ではありません","error.logical_height":"論理高度は高度よりも高くすることはできません","error.min_y_multiple":"最小高度は%0%の倍数である必要があります","error.min_y_plus_height":"最小高度 + 高さは%0%以下である必要があります","error.recipe.invalid_key":"キーとして使用できるのは1文字のみです","error.separation_smaller_spacing":"Separationは間隔よりも小さい必要があります","false":"False","feature.bamboo.probability":"確率","feature.basalt_columns.height":"高度","feature.basalt_columns.reach":"リーチ","feature.block_pile.state_provider":"状態の提供元","feature.config":"設定","feature.decorated.decorator":"装飾処理","feature.decorated.feature":"生成物","feature.delta_feature.contents":"内容","feature.delta_feature.rim":"周縁","feature.delta_feature.rim_size":"周縁のサイズ","feature.delta_feature.size":"サイズ","feature.disk.half_height":"半分の高さ","feature.disk.radius":"半径","feature.disk.state":"状態","feature.disk.targets":"目標","feature.disk.targets.entry":"状態","feature.emerald_ore.state":"状態","feature.emerald_ore.target":"目標","feature.end_gateway.exact":"正確に移動するか否か","feature.end_gateway.exit":"移動先の座標","feature.end_spike.crystal_beam_target":"ビームの目標座標","feature.end_spike.crystal_invulnerable":"クリスタルが無敵か否か","feature.end_spike.spikes":"黒曜石の柱","feature.end_spike.spikes.entry":"黒曜石の柱","feature.end_spike.spikes.entry.centerX":"中心のX座標","feature.end_spike.spikes.entry.centerZ":"中心のZ座標","feature.end_spike.spikes.entry.guarded":"鉄格子で囲われているか否か","feature.end_spike.spikes.entry.height":"高度","feature.end_spike.spikes.entry.radius":"半径","feature.fill_layer.height":"高度","feature.fill_layer.state":"状態","feature.flower.blacklist":"ブラックリスト","feature.flower.block_placer":"ブロック設置処理","feature.flower.can_replace":"上書き可能か否か","feature.flower.need_water":"水が必要か否か","feature.flower.project":"投影されるか否か","feature.flower.state_provider":"状態の提供元","feature.flower.tries":"試行回数","feature.flower.whitelist":"ホワイトリスト","feature.flower.xspread":"X軸の拡散量","feature.flower.yspread":"Y軸の拡散量","feature.flower.zspread":"Z軸の拡散量","feature.forest_rock.state":"状態","feature.huge_brown_mushroom.cap_provider":"笠の提供元","feature.huge_brown_mushroom.foliage_radius":"笠の大きさ","feature.huge_brown_mushroom.stem_provider":"柄の提供元","feature.huge_fungus.decor_state":"装飾","feature.huge_fungus.hat_state":"笠","feature.huge_fungus.planted":"植えられたか否か","feature.huge_fungus.stem_state":"柄","feature.huge_fungus.valid_base_block":"有効な地面のブロック","feature.huge_red_mushroom.cap_provider":"笠の提供元","feature.huge_red_mushroom.foliage_radius":"笠の大きさ","feature.huge_red_mushroom.stem_provider":"柄の提供元","feature.ice_patch.half_height":"半分の高さ","feature.ice_patch.radius":"半径","feature.ice_patch.state":"状態","feature.ice_patch.targets":"目標","feature.ice_patch.targets.entry":"状態","feature.iceberg.state":"状態","feature.lake.state":"状態","feature.nether_forest_vegetation.state_provider":"状態の提供元","feature.netherrack_replace_blobs.radius":"半径","feature.netherrack_replace_blobs.state":"状態","feature.netherrack_replace_blobs.target":"目標","feature.no_surface_ore.size":"サイズ","feature.no_surface_ore.state":"状態","feature.no_surface_ore.target":"目標","feature.object":"カスタム","feature.ore.size":"サイズ","feature.random_boolean_selector.feature_false":"生成物1","feature.random_boolean_selector.feature_true":"生成物2","feature.random_patch.blacklist":"ブラックリスト","feature.random_patch.block_placer":"ブロック設置処理","feature.random_patch.can_replace":"上書き可能か否か","feature.random_patch.need_water":"水が必要か否か","feature.random_patch.project":"投影されるか否か","feature.random_patch.state_provider":"状態の提供元","feature.random_patch.tries":"試行回数","feature.random_patch.whitelist":"ホワイトリスト","feature.random_patch.xspread":"X軸の拡散量","feature.random_patch.yspread":"Y軸の拡散量","feature.random_patch.zspread":"Z軸の拡散量","feature.random_selector.default":"デフォルト","feature.random_selector.features":"生成物","feature.random_selector.features.entry":"生成物","feature.random_selector.features.entry.chance":"確率","feature.random_selector.features.entry.feature":"生成物","feature.sea_pickle.count":"数量","feature.seagrass.probability":"確率","feature.simple_block.place_in":"上書きされるブロック","feature.simple_block.place_in.entry":"状態","feature.simple_block.place_on":"下のブロック","feature.simple_block.place_on.entry":"状態","feature.simple_block.place_under":"上のブロック","feature.simple_block.place_under.entry":"状態","feature.simple_block.to_place":"設置するブロック","feature.simple_random_selector.features":"生成物","feature.simple_random_selector.features.entry":"生成物","feature.spring_feature.hole_count":"くぼみの数","feature.spring_feature.required_block_below":"下に必要なブロック","feature.spring_feature.rock_count":"岩の数","feature.spring_feature.state":"状態","feature.spring_feature.valid_blocks":"有効なブロック","feature.string":"生成物の参照","feature.tree.decorators":"デコレータ","feature.tree.decorators.entry":"ツリーデコレータ","feature.tree.foliage_placer":"葉の配置","feature.tree.heightmap":"高度マップ","feature.tree.ignore_vines":"ツタを無視するか否か","feature.tree.leaves_provider":"葉の提供元","feature.tree.max_water_depth":"樹が生成される最大水深","feature.tree.minimum_size":"最小サイズ","feature.tree.minimum_size.limit":"制限","feature.tree.minimum_size.lower_size":"下限サイズ","feature.tree.minimum_size.middle_size":"中部のサイズ","feature.tree.minimum_size.type":"最小サイズ","feature.tree.minimum_size.upper_limit":"上限","feature.tree.minimum_size.upper_size":"上限サイズ","feature.tree.trunk_placer":"木の幹の設置処理","feature.tree.trunk_provider":"木の幹の提供元","feature.type":"種類","fluid.fluid":"液体ID","fluid.state":"液体の状態","fluid.tag":"液体タグ","fluid_state.Name":"名前","fluid_state.Properties":"プロパティ","foliage_placer.crown_height":"樹木の天蓋の高さ","foliage_placer.height":"高度","foliage_placer.offset":"オフセット","foliage_placer.radius":"半径","foliage_placer.trunk_height":"木の幹の高さ","foliage_placer.type":"種類","function.apply_bonus.enchantment":"エンチャント","function.apply_bonus.formula":"計算式","function.apply_bonus.formula.binomial_with_bonus_count":"二項分布","function.apply_bonus.formula.ore_drops":"鉱石ドロップ","function.apply_bonus.formula.uniform_bonus_count":"均一分布","function.apply_bonus.parameters":"パラメーター","function.apply_bonus.parameters.bonusMultiplier":"倍率","function.apply_bonus.parameters.extra":"追加の値","function.apply_bonus.parameters.probability":"確率","function.copy_name.source":"ソース","function.copy_nbt.ops":"NBT操作","function.copy_nbt.ops.entry":"操作","function.copy_nbt.source":"ソース","function.copy_state.block":"ブロック","function.copy_state.properties":"プロパティ","function.copy_state.properties.entry":"プロパティ","function.enchant_randomly.enchantments":"任意のエンチャント","function.enchant_randomly.enchantments.entry":"エンチャント","function.enchant_with_levels.levels":"レベル","function.enchant_with_levels.treasure":"トレジャーエンチャント","function.exploration_map.decoration":"目的地のアイコン","function.exploration_map.destination":"目的地","function.exploration_map.search_radius":"目的地を検索する半径 (チャンク)","function.exploration_map.skip_existing_chunks":"生成済みチャンクを検索しない","function.exploration_map.zoom":"ズーム","function.fill_player_head.entity":"エンティティ","function.function":"関数","function.limit_count.limit":"制限","function.looting_enchant.count":"個数","function.looting_enchant.limit":"上限","function.set_attributes.modifiers":"補正","function.set_attributes.modifiers.entry":"補正","function.set_contents.entries":"内容","function.set_contents.entries.entry":"項目","function.set_count.count":"個数","function.set_damage.damage":"耐久","function.set_data.data":"データ","function.set_loot_table.name":"ルートテーブル名","function.set_loot_table.seed":"シード値","function.set_lore.entity":"エンティティ","function.set_lore.lore":"説明文","function.set_lore.lore.entry":"行","function.set_lore.replace":"上書き","function.set_name.entity":"エンティティ","function.set_name.name":"名前","function.set_nbt.tag":"NBT","function.set_stew_effect.effects":"効果","function.set_stew_effect.effects.entry":"効果","function.set_stew_effect.effects.entry.duration":"持続時間","function.set_stew_effect.effects.entry.type":"効果","functions":"関数","functions.entry":"関数","gamemode.adventure":"アドベンチャー","gamemode.creative":"クリエイティブ","gamemode.spectator":"スペクテイター","gamemode.survival":"サバイバル","generation_step.air":"空気","generation_step.liquid":"液体","generator.biome_source.altitude_noise":"高度のノイズ","generator.biome_source.biome":"バイオーム","generator.biome_source.biomes":"バイオーム","generator.biome_source.humidity_noise":"湿度のノイズ","generator.biome_source.large_biomes":"大きなバイオーム","generator.biome_source.legacy_biome_init_layer":"旧バイオーム初期化レイヤー","generator.biome_source.preset":"バイオームプリセット","generator.biome_source.preset.nether":"ネザー","generator.biome_source.scale":"スケール","generator.biome_source.seed":"バイオームのシード値","generator.biome_source.temperature_noise":"気温のノイズ","generator.biome_source.type":"バイオームの生成法則","generator.biome_source.weirdness_noise":"奇妙さのノイズ","generator.seed":"ディメンションのシード値","generator.settings":"ジェネレーターの設定","generator.settings.biome":"バイオーム","generator.settings.lakes":"湖","generator.settings.layers":"レイヤー","generator.settings.layers.entry":"レイヤー","generator.settings.layers.entry.block":"ブロックID","generator.settings.layers.entry.height":"高度","generator.settings.object":"カスタム","generator.settings.presets.amplified":"巨大化","generator.settings.presets.caves":"洞窟","generator.settings.presets.end":"エンド","generator.settings.presets.floating_islands":"浮島","generator.settings.presets.nether":"ネザー","generator.settings.presets.overworld":"オーバーワールド","generator.settings.string":"プリセット","generator.settings.structures":"ストラクチャー","generator.settings.structures.stronghold":"要塞","generator.settings.structures.stronghold.count":"数量","generator.settings.structures.stronghold.distance":"距離","generator.settings.structures.stronghold.spread":"拡散","generator.settings.structures.structures":"ストラクチャー","generator.type":"ジェネレーターのタイプ","generator_biome.biome":"バイオーム","generator_biome.parameters":"パラメーター","generator_biome.parameters.altitude":"海抜","generator_biome.parameters.help":"これらのパラメータによって、バイオームの配置が決まります。すべてのバイオームは、これらの組み合わせが一意でなければなりません。似たような値を持つバイオームは隣り合って生成されます。","generator_biome.parameters.humidity":"湿度","generator_biome.parameters.offset":"オフセット","generator_biome.parameters.temperature":"気温","generator_biome.parameters.weirdness":"奇妙さ","generator_biome_noise.amplitudes":"広大さ","generator_biome_noise.amplitudes.entry":"オクターブ %0%","generator_structure.separation":"間隔","hide_source":"ソースを隠す","item.count":"個数","item.durability":"耐久値","item.enchantments":"エンチャント","item.enchantments.entry":"エンチャント","item.item":"アイテムID","item.nbt":"NBT","item.potion":"ポーション","item.tag":"アイテムタグ","key.advancements":"進捗","key.attack":"攻撃する/壊す","key.back":"後退","key.chat":"チャットを開く","key.command":"コマンドラインを開く","key.drop":"アイテムを捨てる","key.forward":"前進","key.fullscreen":"フルスクリーンの切り替え","key.hotbar.1":"ホットバースロット 1","key.hotbar.2":"ホットバースロット 2","key.hotbar.3":"ホットバースロット 3","key.hotbar.4":"ホットバースロット 4","key.hotbar.5":"ホットバースロット 5","key.hotbar.6":"ホットバースロット 6","key.hotbar.7":"ホットバースロット 7","key.hotbar.8":"ホットバースロット 8","key.hotbar.9":"ホットバースロット 9","key.inventory":"インベントリの開閉","key.jump":"ジャンプ","key.left":"左","key.loadToolbarActivator":"ツールバーの読み込み","key.pickItem":"ブロック選択","key.playerlist":"プレイヤーリストの表示","key.right":"右","key.saveToolbarActivator":"ツールバーの保存","key.screenshot":"スクリーンショットの撮影","key.smoothCamera":"カメラ動作の切り替え","key.sneak":"スニーク","key.spectatorOutlines":"プレイヤーの強調表示(スペクテイター)","key.sprint":"ダッシュ","key.swapOffhand":"持っているアイテムの切り替え","key.togglePerspective":"視点の切り替え","key.use":"アイテムの使用/ブロックの設置","location.biome":"バイオーム","location.block":"ブロック","location.dimension":"ディメンション","location.feature":"生成物","location.fluid":"液体","location.light":"光源","location.position":"位置","location.position.x":"X","location.position.y":"Y","location.position.z":"Z","loot_condition_type.block_state_property":"ブロックの状態プロパティ","loot_condition_type.damage_source_properties":"ダメージの要因のプロパティ","loot_condition_type.entity_properties":"エンティティのプロパティ","loot_condition_type.entity_scores":"エンティティのスコア","loot_condition_type.inverted":"反転","loot_condition_type.location_check":"位置のチェック","loot_condition_type.match_tool":"ツールの一致","loot_condition_type.random_chance":"ランダムな確率","loot_condition_type.random_chance_with_looting":"ランダムな確率 (ドロップ増加の影響を受ける)","loot_condition_type.reference":"条件の参照","loot_condition_type.time_check":"時間のチェック","loot_condition_type.weather_check":"天候のチェック","loot_entry.dynamic.name":"名前","loot_entry.item.name":"名前","loot_entry.loot_table.name":"ルートテーブル名","loot_entry.quality":"品質","loot_entry.tag.expand":"広げる","loot_entry.tag.name":"アイテムタグの名前","loot_entry.type":"種類","loot_entry.weight":"抽選確率","loot_function_type.copy_name":"名前のコピー","loot_function_type.copy_nbt":"NBTのコピー","loot_function_type.copy_state":"Block Stateのコピー","loot_function_type.enchant_randomly":"ランダムなエンチャント","loot_function_type.enchant_with_levels":"レベルからのエンチャント","loot_function_type.exploration_map":"探検家の地図のプロパティ","loot_function_type.furnace_smelt":"製錬","loot_function_type.limit_count":"個数制限","loot_function_type.looting_enchant":"ドロップ増加による個数補正","loot_function_type.set_attributes":"属性の設定","loot_function_type.set_contents":"内容の設定","loot_function_type.set_count":"個数の設定","loot_function_type.set_damage":"耐久値の設定","loot_function_type.set_data":"データの設定","loot_function_type.set_loot_table":"ルートテーブルの設定","loot_function_type.set_lore":"説明文の設定","loot_function_type.set_name":"名前の設定","loot_function_type.set_nbt":"NBTの設定","loot_function_type.set_stew_effect":"シチューの効果の設定","loot_pool.bonus_rolls":"ボーナス抽選数","loot_pool.entries":"エントリー","loot_pool.entries.entry":"項目","loot_pool.rolls":"抽選数","loot_pool_entry_type.dynamic":"動的","loot_pool_entry_type.empty":"空","loot_pool_entry_type.group":"グループ","loot_pool_entry_type.item":"アイテム","loot_pool_entry_type.loot_table":"ルートテーブル","loot_pool_entry_type.sequence":"順序","loot_pool_entry_type.tag":"アイテムタグ","nbt_operation.op":"操作方法","nbt_operation.op.append":"追加","nbt_operation.op.merge":"併合","nbt_operation.op.replace":"上書き","nbt_operation.source":"ソース","nbt_operation.target":"目標","noise_settings.default_block":"デフォルトのブロック","noise_settings.default_fluid":"既定の液体","noise_settings.name":"名前","player.advancements":"進捗","player.advancements.entry":"進捗","player.gamemode":"ゲームモード","player.level":"経験値レベル","player.recipes":"レシピ","player.stats":"統計値","player.stats.entry":"統計値","pos_rule_test.axis.x":"X","pos_rule_test.axis.y":"Y","pos_rule_test.predicate_type":"種類","processor.block_ignore.blocks.entry":"状態","processor.processor_type":"種類","range.number":"一致","requirements":"必要条件","rule_test.block":"ブロック","rule_test.block_state":"状態","rule_test.predicate_type":"種類","rule_test.probability":"確率","slot.chest":"胴体","slot.feet":"足","slot.head":"頭","slot.legs":"脚","slot.mainhand":"利き手","slot.offhand":"オフハンド","statistic.stat":"統計値","statistic.type":"種類","statistic.type.broken":"壊した回数","statistic.type.crafted":"作った回数","statistic.type.custom":"カスタム","statistic.type.dropped":"捨てた回数","status_effect.ambient":"ビーコン効果","status_effect.amplifier":"効果レベル","status_effect.duration":"持続時間","status_effect.visible":"パーティクル表示","structure_feature.biome_temp":"バイオームの気温","structure_feature.probability":"確率","structure_feature.type":"種類","surface_builder.type":"種類","table.type":"種類","table.type.block":"ブロック","table.type.chest":"チェスト","table.type.empty":"空","table.type.entity":"エンティティ","table.type.fishing":"釣り","table.type.generic":"汎用","tag.replace":"上書き","template_element.element_type":"種類","template_pool.name":"名前","text_component_object.block":"ブロック","text_component_object.bold":"太字","text_component_object.clickEvent":"クリックイベント","text_component_object.clickEvent.action.change_page":"ページへの移動","text_component_object.clickEvent.action.copy_to_clipboard":"クリップボードへのコピー","text_component_object.clickEvent.action.open_file":"ファイルを開く","text_component_object.clickEvent.action.open_url":"ウェブサイトを開く","text_component_object.clickEvent.action.run_command":"コマンドを実行","text_component_object.clickEvent.action.suggest_command":"コマンドを提案","text_component_object.color":"カラー","text_component_object.entity":"要素","text_component_object.score.name":"名前","tree_decorator.beehive.probability":"確率","tree_decorator.cocoa.probability":"確率","tree_decorator.type":"種類","true":"true","trunk_placer.type":"種類","worldgen/chunk_generator.noise":"デフォルト"}');export default e; +//# sourceMappingURL=ja.3170354d.js.map diff --git a/assets/ja.3170354d.js.map b/assets/ja.3170354d.js.map new file mode 100644 index 00000000..b83fc0be --- /dev/null +++ b/assets/ja.3170354d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ja.3170354d.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/ja.49e40b08.js b/assets/ja.49e40b08.js deleted file mode 100644 index 30ce6707..00000000 --- a/assets/ja.49e40b08.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=JSON.parse('{"advancement.criteria":"条件","advancement.display":"表示","advancement.display.announce_to_chat":"達成した際チャットに表示する","advancement.display.background":"背景","advancement.display.description":"説明","advancement.display.frame":"枠","advancement.display.frame.challenge":"挑戦","advancement.display.frame.goal":"目標","advancement.display.frame.task":"進捗","advancement.display.help":"Displayオブジェクトが存在する場合、この進捗が進捗タブに表示されます。","advancement.display.hidden":"達成するまで非表示にする","advancement.display.icon":"アイコン","advancement.display.icon.item":"アイコンアイテム","advancement.display.icon.nbt":"アイコンのNBT","advancement.display.show_toast":"達成した際トーストを表示する","advancement.display.title":"タイトル","advancement.parent":"親となる進捗","advancement.rewards":"報酬","advancement.rewards.experience":"経験値","advancement.rewards.function":"関数","advancement.rewards.loot":"ルートテーブル","advancement.rewards.recipes":"レシピ","advancement_trigger.bee_nest_destroyed":"ミツバチの巣を破壊したとき","advancement_trigger.bred_animals":"動物を繁殖させたとき","advancement_trigger.brewed_potion":"ポーションを醸造したとき","advancement_trigger.changed_dimension":"ディメンションを移動したとき","advancement_trigger.channeled_lightning":"トライデントで雷を当てたとき","advancement_trigger.construct_beacon":"ビーコンを作成したとき","advancement_trigger.consume_item":"アイテムを消費したとき","advancement_trigger.cured_zombie_villager":"村人ゾンビを治療したとき","advancement_trigger.effects_changed":"効果を付与もしくは除去されたとき","advancement_trigger.enchanted_item":"アイテムをエンチャントしたとき","advancement_trigger.enter_block":"ブロックと同じ座標に立ったとき","advancement_trigger.entity_hurt_player":"エンティティからダメージを受けたとき","advancement_trigger.entity_killed_player":"エンティティに倒されたとき","advancement_trigger.fall_from_height":"高所からの落下","advancement_trigger.filled_bucket":"バケツを満たしたとき","advancement_trigger.fishing_rod_hooked":"釣り竿でアイテムを取る/エンティティを引っ張ったとき","advancement_trigger.hero_of_the_village":"村の襲撃イベントをクリアしたとき","advancement_trigger.impossible":"不可能","advancement_trigger.inventory_changed":"インベントリを変更したとき","advancement_trigger.item_durability_changed":"アイテムの耐久値が変更されたとき","advancement_trigger.item_used_on_block":"ブロックに対してアイテムを使用したとき","advancement_trigger.killed_by_crossbow":"クロスボウでトドメを刺したとき","advancement_trigger.levitation":"浮遊したとき","advancement_trigger.location":"指定された範囲内に入ったとき","advancement_trigger.nether_travel":"ネザーから帰ってきたとき","advancement_trigger.placed_block":"ブロックを設置したとき","advancement_trigger.player_generates_container_loot":"ルートテーブルが設定されたコンテナの中身を生成したとき","advancement_trigger.player_hurt_entity":"エンティティにダメージを与えたとき","advancement_trigger.player_killed_entity":"エンティティを倒したとき","advancement_trigger.recipe_unlocked":"レシピを解禁したとき","advancement_trigger.ride_entity_in_lava":"溶岩の上を走ったとき","advancement_trigger.safely_harvest_honey":"蜂蜜を安全に収穫したとき","advancement_trigger.shot_crossbow":"クロスボウを打ったとき","advancement_trigger.slept_in_bed":"ベッドで寝たとき","advancement_trigger.slide_down_block":"ブロックを滑り落ちたとき","advancement_trigger.summoned_entity":"エンティティを召喚したとき","advancement_trigger.tame_animal":"動物を飼いならしたとき","advancement_trigger.target_hit":"ターゲットブロックに矢を当てたとき","advancement_trigger.thrown_item_picked_up_by_entity":"投げたアイテムをエンティティが拾ったとき","advancement_trigger.tick":"常時実行","advancement_trigger.used_ender_eye":"エンダーアイを使用したとき","advancement_trigger.used_totem":"不死のトーテムを使用したとき","advancement_trigger.villager_trade":"村人と取引したとき","advancement_trigger.voluntary_exile":"襲撃イベントを開始したとき","attribute.generic_armor":"防具","attribute.generic_armor_toughness":"防具の強度","attribute.generic_attack_damage":"攻撃力","attribute.generic_attack_knockback":"ノックバック","attribute.generic_attack_speed":"攻撃速度","attribute.generic_flying_speed":"飛行速度","attribute.generic_follow_range":"Mob の追跡範囲","attribute.generic_knockback_resistance":"ノックバック耐性","attribute.generic_luck":"幸運","attribute.generic_max_health":"最大体力","attribute.generic_movement_speed":"移動速度","attribute.horse.jump_strength":"ウマの跳躍力","attribute.zombie.spawn_reinforcements":"ゾンビの増援","attribute_modifier.amount":"補正値","attribute_modifier.attribute":"属性","attribute_modifier.name":"名前","attribute_modifier.operation":"計算方式","attribute_modifier.operation.addition":"加算","attribute_modifier.operation.multiply_base":"基礎乗算","attribute_modifier.operation.multiply_total":"乗算","attribute_modifier.slot":"スロット","attribute_modifier.slot.list":"複数","attribute_modifier.slot.string":"単体","axis.x":"X","axis.y":"Y","axis.z":"Z","badge.experimental":"実験段階","badge.unstable":"不安定","biome.carvers":"地形彫刻","biome.carvers.air":"空気","biome.carvers.liquid":"液体","biome.category":"カテゴリ","biome.creature_spawn_probability":"Mobの出現確率","biome.depth":"深度","biome.depth.help":"地形の高さを調整します。正の値は陸地とみなされ、負の値は海とみなされます。","biome.downfall":"Downfall (草/葉の色,火の延焼の速度等に影響を与えます)","biome.effects":"環境効果","biome.effects.additions_sound":"追加の音","biome.effects.additions_sound.sound":"音","biome.effects.ambient_sound":"環境音","biome.effects.fog_color":"霧の色","biome.effects.foliage_color":"葉の色","biome.effects.grass_color":"草の色","biome.effects.grass_color_modifier":"草の色の補正","biome.effects.grass_color_modifier.dark_forest":"暗い森","biome.effects.grass_color_modifier.none":"無し","biome.effects.grass_color_modifier.swamp":"湿地帯","biome.effects.mood_sound":"雰囲気の音","biome.effects.mood_sound.block_search_extent":"検索範囲をブロック","biome.effects.mood_sound.offset":"オフセット","biome.effects.mood_sound.sound":"音","biome.effects.mood_sound.tick_delay":"ティック遅延","biome.effects.music":"音楽","biome.effects.music.max_delay":"最大遅延","biome.effects.music.min_delay":"最小遅延","biome.effects.music.replace_current_music":"現在の音楽を上書きする","biome.effects.music.sound":"音","biome.effects.particle":"パーティクル","biome.effects.particle.options":"オプション","biome.effects.particle.options.type":"パーティクルのタイプ","biome.effects.particle.probability":"確率","biome.effects.sky_color":"空の色","biome.effects.water_color":"水の色","biome.effects.water_fog_color":"水中の霧の色","biome.features":"生成物","biome.features.entry":"ステップ","biome.features.entry.entry":"特徴","biome.player_spawn_friendly":"バイオームにスポーン出来るか否か","biome.player_spawn_friendly.help":"trueの場合、このバイオームではワールドスポーンが優先されます。","biome.precipitation":"雨の種類","biome.precipitation.none":"無し","biome.precipitation.rain":"雨","biome.precipitation.snow":"雪","biome.scale":"スケール","biome.scale.help":"垂直方向に地形を伸ばします。値が低いほど平坦な地形になります。","biome.spawn_costs":"スポーンコスト","biome.spawn_costs.charge":"チャージ","biome.spawn_costs.energy_budget":"エネルギーの予算","biome.spawners":"スポナー","biome.spawners.ambient":"アンビエント","biome.spawners.creature":"生物","biome.spawners.entry":"スポーン","biome.spawners.entry.maxCount":"最大数","biome.spawners.entry.minCount":"最小数","biome.spawners.entry.type":"種類","biome.spawners.entry.weight":"抽選確率","biome.spawners.misc":"その他","biome.spawners.monster":"モンスター","biome.spawners.water_ambient":"水の周囲","biome.spawners.water_creature":"水の生き物","biome.starts":"ストラクチャー","biome.starts.entry":"ストラクチャー","biome.starts.help":"構成された生成物のストラクチャーのリスト。","biome.surface_builder":"地表生成","biome.temperature":"気温","biome.temperature_modifier":"温度変更","biome.temperature_modifier.frozen":"凍結","biome.temperature_modifier.none":"無し","block.block":"ブロックID","block.nbt":"NBT","block.state":"ブロック状態","block.tag":"ブロックタグ","block_definition.multipart":"マルチパート","block_definition.multipart.entry":"パート","block_definition.variants":"バリアント","block_placer.column_placer.extra_size":"エクストラサイズ","block_placer.column_placer.min_size":"最小サイズ","block_placer.type":"種類","block_predicate.all_of.predicates":"述語","block_predicate.any_of.predicates":"述語","block_predicate.matching_blocks.blocks":"ブロック","block_predicate.matching_blocks.blocks.entry":"ブロック","block_predicate.matching_blocks.offset":"オフセット","block_predicate.matching_fluids.fluids":"液体","block_predicate.matching_fluids.fluids.entry":"液体","block_predicate.matching_fluids.offset":"オフセット","block_predicate.type":"タイプ","block_predicate.would_survive.offset":"オフセット","block_predicate.would_survive.state":"統計","block_predicate_type.matching_blocks":"マッチングブロック","block_state.Name":"名前","block_state.Properties":"プロパティ","block_state_provider.rotated_block_provider.state":"状態","block_state_provider.simple_state_provider.state":"状態","block_state_provider.type":"種類","block_state_provider.weighted_state_provider.entries":"項目","block_state_provider.weighted_state_provider.entries.entry.data":"状態","block_state_provider.weighted_state_provider.entries.entry.weight":"抽選確率","carver.config":"設定","carver.config.canyon.vertical_radius_default_factor":"垂直の半径にかかるデフォルトの係数","carver.config.probability":"確率","carver.type":"種類","children":"子","children.entry":"項目","condition.alternative.terms":"条件","condition.block_state_property.block":"ブロック","condition.block_state_property.properties":"Block State","condition.condition":"条件","condition.damage_source":"ダメージの要因","condition.entity_properties.entity":"エンティティ","condition.entity_scores.entity":"エンティティ","condition.entity_scores.scores":"スコア","condition.entry":"条件","condition.inverted.term":"条件","condition.item":"アイテム","condition.killed_by_player.inverse":"反転","condition.list":"複数","condition.location":"位置","condition.location_check.offsetX":"X 補正","condition.location_check.offsetY":"Y 補正","condition.location_check.offsetZ":"Z 補正","condition.object":"単一","condition.random_chance.chance":"確率","condition.random_chance_with_looting.chance":"確率","condition.random_chance_with_looting.looting_multiplier":"ドロップ増加倍率","condition.reference.name":"条件名","condition.table_bonus.chances":"確率","condition.table_bonus.chances.entry":"確率","condition.table_bonus.enchantment":"エンチャント","condition.time_check.period":"期間","condition.time_check.period.help":"存在する場合、時間はこの値で剰余算されます。 たとえば、24000に設定されている場合、値は日数の期間で変化します。","condition.time_check.value":"値","condition.weather_check.raining":"降雨","condition.weather_check.thundering":"雷雨","conditions":"条件","conditions.entry":"条件","conditions.list":"条件","conditions.object":"旧版","copy_source.block_entity":"ブロックエンティティ","copy_source.direct_killer":"直接的な要因のエンティティ","copy_source.killer":"殺したエンティティ","copy_source.killer_player":"殺したプレイヤー","copy_source.this":"自身","criterion.bee_nest_destroyed.block":"ブロック","criterion.bee_nest_destroyed.num_bees_inside":"ミツバチの巣に居たミツバチの数","criterion.bred_animals.child":"子","criterion.bred_animals.parent":"親","criterion.bred_animals.partner":"パートナー","criterion.brewed_potion.potion":"ポーション","criterion.changed_dimension.from":"移動元","criterion.changed_dimension.to":"移動先","criterion.channeled_lightning.victims":"犠牲者","criterion.channeled_lightning.victims.entry":"エンティティ","criterion.conditions":"条件","criterion.construct_beacon.beacon_level":"ビーコンのレベル","criterion.consume_item.item":"アイテム","criterion.cured_zombie_villager.villager":"村人","criterion.cured_zombie_villager.zombie":"ゾンビ","criterion.effects_changed.effects":"効果","criterion.enchanted_item.item":"アイテム","criterion.enchanted_item.levels":"経験値レベル","criterion.enter_block.block":"ブロック","criterion.enter_block.state":"ブロックの状態","criterion.entity_hurt_player.damage":"ダメージ","criterion.entity_killed_player.entity":"死亡する要因となったエンティティ","criterion.entity_killed_player.killing_blow":"最後の一撃","criterion.filled_bucket.item":"アイテム","criterion.fishing_rod_hooked.entity":"引っ張られたエンティティ","criterion.fishing_rod_hooked.item":"アイテム","criterion.hero_of_the_village.location":"位置","criterion.inventory_changed.items":"アイテム","criterion.inventory_changed.items.entry":"アイテム","criterion.inventory_changed.slots":"スロット","criterion.inventory_changed.slots.empty":"空のスロットの数","criterion.inventory_changed.slots.full":"完全にスタックされたスロットの数","criterion.inventory_changed.slots.occupied":"占有されているスロットの数","criterion.item_durability_changed.delta":"差","criterion.item_durability_changed.durability":"耐久値","criterion.item_durability_changed.item":"アイテム","criterion.item_used_on_block.item":"アイテム","criterion.item_used_on_block.location":"位置","criterion.killed_by_crossbow.unique_entity_types":"エンティティ種の数","criterion.killed_by_crossbow.victims":"犠牲者","criterion.killed_by_crossbow.victims.entry":"エンティティ","criterion.levitation.distance":"距離","criterion.levitation.duration":"持続時間","criterion.location.location":"位置","criterion.nether_travel.distance":"距離","criterion.nether_travel.entered":"入った位置","criterion.nether_travel.exited":"出た位置","criterion.placed_block.block":"ブロック","criterion.placed_block.item":"アイテム","criterion.placed_block.location":"位置","criterion.placed_block.state":"ブロックの状態","criterion.player":"プレイヤー","criterion.player_generates_container_loot.loot_table":"ルートテーブル","criterion.player_hurt_entity.damage":"ダメージ","criterion.player_hurt_entity.entity":"ダメージを受けたエンティティ","criterion.player_killed_entity.entity":"ダメージを受けたエンティティ","criterion.player_killed_entity.killing_blow":"最後の一撃","criterion.recipe_unlocked.recipe":"レシピ","criterion.rod":"釣り竿","criterion.shot_crossbow.item":"アイテム","criterion.slept_in_bed.location":"位置","criterion.slide_down_block.block":"ブロック","criterion.summoned_entity.entity":"エンティティ","criterion.tame_animal.entity":"動物","criterion.target_hit.projectile":"飛び道具","criterion.target_hit.shooter":"射手","criterion.target_hit.signal_strength":"信号の強度","criterion.thrown_item_picked_up_by_entity.entity":"エンティティ","criterion.thrown_item_picked_up_by_entity.item":"アイテム","criterion.trigger":"トリガー","criterion.used_ender_eye.distance":"距離","criterion.used_totem.item":"トーテムアイテム","criterion.villager_trade.item":"購入したアイテム","criterion.villager_trade.villager":"村人","criterion.voluntary_exile.location":"位置","damage.blocked":"防御","damage.dealt":"与ダメージ","damage.source_entity":"要因のエンティティ","damage.taken":"非ダメージ","damage.type":"ダメージの種類","damage_source.bypasses_armor":"防御貫通","damage_source.bypasses_invulnerability":"奈落","damage_source.bypasses_magic":"空腹","damage_source.direct_entity":"直接的な要因のエンティティ","damage_source.is_explosion":"爆発","damage_source.is_fire":"炎上","damage_source.is_lightning":"雷","damage_source.is_magic":"魔法","damage_source.is_projectile":"飛び道具","damage_source.source_entity":"要因のエンティティ","decorator.carving_mask.step":"生成ステップ","decorator.config":"設定","decorator.count.count":"数量","decorator.count_extra.count":"数量","decorator.count_extra.extra_chance":"数量が追加される確率","decorator.count_extra.extra_count":"追加数量","decorator.count_multilayer.count":"数量","decorator.count_noise.above_noise":"閾値以上のノイズ","decorator.count_noise.below_noise":"閾値未満のノイズ","decorator.count_noise.noise_level":"ノイズレベル","decorator.count_noise_biased.noise_factor":"ノイズ係数","decorator.count_noise_biased.noise_offset":"ノイズオフセット","decorator.count_noise_biased.noise_to_count_ratio":"ノイズ対数量比","decorator.decorated.inner":"内側","decorator.decorated.outer":"外側","decorator.depth_average.baseline":"基準線","decorator.depth_average.spread":"拡散","decorator.glowstone.count":"個数","decorator.type":"種類","dimension":"ディメンション (Dimension)","dimension.generator":"ジェネレーター","dimension.generator.biome_source":"バイオームの生成法則","dimension.overworld":"オーバーワールド","dimension.the_end":"ジ・エンド","dimension.the_nether":"ネザー","dimension.type":"ディメンションタイプ","dimension.type.object":"カスタム","dimension.type.string":"プリセット","dimension_type.ambient_light":"環境光レベル","dimension_type.ambient_light.help":"環境光の明るさ。 0.0から1.0の間の値である必要があります。","dimension_type.bed_works":"ベッドが使用機能か否か","dimension_type.coordinate_scale":"座標のスケール","dimension_type.effects":"環境効果","dimension_type.effects.overworld":"オーバーワールド","dimension_type.effects.the_end":"ジ・エンド","dimension_type.effects.the_nether":"ネザー","dimension_type.fixed_time":"時間の固定","dimension_type.fixed_time.help":"この値を設定すると、太陽の位置が固定されます。","dimension_type.has_ceiling":"天井","dimension_type.has_raids":"襲撃","dimension_type.has_skylight":"天井光","dimension_type.infiniburn":"無限に燃焼するブロック","dimension_type.logical_height":"論理高度","dimension_type.name":"名前","dimension_type.natural":"自然","dimension_type.natural.help":"trueの場合、ポータルはゾンビピグリンを生成します。 falseの場合、コンパスと時計がランダムに回転します。","dimension_type.piglin_safe":"ピグリンがゾンビ化するか否か","dimension_type.respawn_anchor_works":"リスポーンアンカーが使用可能か否か","dimension_type.ultrawarm":"灼熱","dimension_type.ultrawarm.help":"trueの場合、水が蒸発しスポンジが乾燥します。","distance.absolute":"絶対距離","distance.horizontal":"水平距離","distance.x":"X","distance.y":"Y","distance.z":"Z","enchantment.aqua_affinity":"水中採掘","enchantment.bane_of_arthropods":"虫特効","enchantment.binding_curse":"束縛の呪い","enchantment.blast_protection":"爆発耐性","enchantment.channeling":"召雷","enchantment.depth_strider":"水中歩行","enchantment.efficiency":"効率強化","enchantment.enchantment":"エンチャント","enchantment.feather_falling":"落下耐性","enchantment.fire_aspect":"火属性","enchantment.fire_protection":"火炎耐性","enchantment.flame":"フレイム","enchantment.fortune":"幸運","enchantment.frost_walker":"氷渡り","enchantment.impaling":"水生特効","enchantment.infinity":"無限","enchantment.knockback":"ノックバック","enchantment.levels":"レベル","enchantment.looting":"ドロップ増加","enchantment.loyalty":"忠誠","enchantment.luck_of_the_sea":"宝釣り","enchantment.lure":"入れ食い","enchantment.mending":"修繕","enchantment.multishot":"拡散","enchantment.piercing":"貫通","enchantment.power":"射撃ダメージ増加","enchantment.projectile_protection":"飛び道具耐性","enchantment.protection":"ダメージ軽減","enchantment.punch":"パンチ","enchantment.quick_charge":"高速装填","enchantment.respiration":"水中呼吸","enchantment.riptide":"激流","enchantment.sharpness":"ダメージ増加","enchantment.silk_touch":"シルクタッチ","enchantment.smite":"アンデッド特効","enchantment.sweeping":"範囲ダメージ増加","enchantment.thorns":"棘の鎧","enchantment.unbreaking":"耐久力","enchantment.vanishing_curse":"消滅の呪い","entity.distance":"距離","entity.effects":"効果","entity.equipment":"装備","entity.fishing_hook":"浮き","entity.fishing_hook.in_open_water":"開けた水か否か","entity.flags":"フラグ","entity.isBaby":"子供","entity.isOnFire":"炎上","entity.isSneaking":"スニーク","entity.isSprinting":"ダッシュ","entity.isSwimming":"水泳","entity.location":"位置","entity.nbt":"NBT","entity.player":"プレイヤー","entity.targeted_entity":"狙われているエンティティ","entity.team":"チーム","entity.type":"エンティティ","entity.vehicle":"乗り物","entity_source.direct_killer":"直接的な要因のエンティティ","entity_source.killer":"殺したエンティティ","entity_source.killer_player":"殺したプレイヤー","entity_source.this":"自身","entry":"項目","error":"エラー","error.expected_boolean":"boolean型が必要です","error.expected_integer":"int型が必要です","error.expected_json":"JSONが必要です","error.expected_list":"配列が必要です","error.expected_number":"数値が必要です","error.expected_object":"オブジェクトが必要です","error.expected_range":"範囲が必要です","error.expected_string":"文字列が必要です","error.expected_uniform_int":"均一な整数が必要です","error.height_multiple":"高度は%0%の倍数である必要があります","error.invalid_binomial":"範囲は二項分布型を使用できません","error.invalid_empty_list":"配列は空にできません","error.invalid_empty_string":"文字列を空には出来ません","error.invalid_enum_option":"\\"%0%\\"は無効なオプションです","error.invalid_exact":"範囲は定数型を使用できません","error.invalid_list_range.exact":"リストの長さは%1%である必要があります","error.invalid_list_range.larger":"リストの長さ %0%は最大でも%1%以下である必要があります","error.invalid_list_range.smaller":"リストの長さ %0%は最小でも%1%以上である必要があります","error.invalid_number_range.between":"%0% ~ %1%の範囲の数値が必要です","error.invalid_number_range.larger":"値 %0%は最大でも%1%以下である必要があります","error.invalid_number_range.smaller":"値 %0%は最小でも%1%以上である必要があります","error.invalid_pattern":"%0%は有効な文字列ではありません","error.logical_height":"論理高度は高度よりも高くすることはできません","error.min_y_multiple":"最小高度は%0%の倍数である必要があります","error.min_y_plus_height":"最小高度 + 高さは%0%以下である必要があります","error.recipe.invalid_key":"キーとして使用できるのは1文字のみです","error.separation_smaller_spacing":"Separationは間隔よりも小さい必要があります","false":"False","feature.bamboo.probability":"確率","feature.basalt_columns.height":"高度","feature.basalt_columns.reach":"リーチ","feature.block_pile.state_provider":"状態の提供元","feature.config":"設定","feature.decorated.decorator":"装飾処理","feature.decorated.feature":"生成物","feature.delta_feature.contents":"内容","feature.delta_feature.rim":"周縁","feature.delta_feature.rim_size":"周縁のサイズ","feature.delta_feature.size":"サイズ","feature.disk.half_height":"半分の高さ","feature.disk.radius":"半径","feature.disk.state":"状態","feature.disk.targets":"目標","feature.disk.targets.entry":"状態","feature.emerald_ore.state":"状態","feature.emerald_ore.target":"目標","feature.end_gateway.exact":"正確に移動するか否か","feature.end_gateway.exit":"移動先の座標","feature.end_spike.crystal_beam_target":"ビームの目標座標","feature.end_spike.crystal_invulnerable":"クリスタルが無敵か否か","feature.end_spike.spikes":"黒曜石の柱","feature.end_spike.spikes.entry":"黒曜石の柱","feature.end_spike.spikes.entry.centerX":"中心のX座標","feature.end_spike.spikes.entry.centerZ":"中心のZ座標","feature.end_spike.spikes.entry.guarded":"鉄格子で囲われているか否か","feature.end_spike.spikes.entry.height":"高度","feature.end_spike.spikes.entry.radius":"半径","feature.fill_layer.height":"高度","feature.fill_layer.state":"状態","feature.flower.blacklist":"ブラックリスト","feature.flower.block_placer":"ブロック設置処理","feature.flower.can_replace":"上書き可能か否か","feature.flower.need_water":"水が必要か否か","feature.flower.project":"投影されるか否か","feature.flower.state_provider":"状態の提供元","feature.flower.tries":"試行回数","feature.flower.whitelist":"ホワイトリスト","feature.flower.xspread":"X軸の拡散量","feature.flower.yspread":"Y軸の拡散量","feature.flower.zspread":"Z軸の拡散量","feature.forest_rock.state":"状態","feature.huge_brown_mushroom.cap_provider":"笠の提供元","feature.huge_brown_mushroom.foliage_radius":"笠の大きさ","feature.huge_brown_mushroom.stem_provider":"柄の提供元","feature.huge_fungus.decor_state":"装飾","feature.huge_fungus.hat_state":"笠","feature.huge_fungus.planted":"植えられたか否か","feature.huge_fungus.stem_state":"柄","feature.huge_fungus.valid_base_block":"有効な地面のブロック","feature.huge_red_mushroom.cap_provider":"笠の提供元","feature.huge_red_mushroom.foliage_radius":"笠の大きさ","feature.huge_red_mushroom.stem_provider":"柄の提供元","feature.ice_patch.half_height":"半分の高さ","feature.ice_patch.radius":"半径","feature.ice_patch.state":"状態","feature.ice_patch.targets":"目標","feature.ice_patch.targets.entry":"状態","feature.iceberg.state":"状態","feature.lake.state":"状態","feature.nether_forest_vegetation.state_provider":"状態の提供元","feature.netherrack_replace_blobs.radius":"半径","feature.netherrack_replace_blobs.state":"状態","feature.netherrack_replace_blobs.target":"目標","feature.no_surface_ore.size":"サイズ","feature.no_surface_ore.state":"状態","feature.no_surface_ore.target":"目標","feature.object":"カスタム","feature.ore.size":"サイズ","feature.random_boolean_selector.feature_false":"生成物1","feature.random_boolean_selector.feature_true":"生成物2","feature.random_patch.blacklist":"ブラックリスト","feature.random_patch.block_placer":"ブロック設置処理","feature.random_patch.can_replace":"上書き可能か否か","feature.random_patch.need_water":"水が必要か否か","feature.random_patch.project":"投影されるか否か","feature.random_patch.state_provider":"状態の提供元","feature.random_patch.tries":"試行回数","feature.random_patch.whitelist":"ホワイトリスト","feature.random_patch.xspread":"X軸の拡散量","feature.random_patch.yspread":"Y軸の拡散量","feature.random_patch.zspread":"Z軸の拡散量","feature.random_selector.default":"デフォルト","feature.random_selector.features":"生成物","feature.random_selector.features.entry":"生成物","feature.random_selector.features.entry.chance":"確率","feature.random_selector.features.entry.feature":"生成物","feature.sea_pickle.count":"数量","feature.seagrass.probability":"確率","feature.simple_block.place_in":"上書きされるブロック","feature.simple_block.place_in.entry":"状態","feature.simple_block.place_on":"下のブロック","feature.simple_block.place_on.entry":"状態","feature.simple_block.place_under":"上のブロック","feature.simple_block.place_under.entry":"状態","feature.simple_block.to_place":"設置するブロック","feature.simple_random_selector.features":"生成物","feature.simple_random_selector.features.entry":"生成物","feature.spring_feature.hole_count":"くぼみの数","feature.spring_feature.required_block_below":"下に必要なブロック","feature.spring_feature.rock_count":"岩の数","feature.spring_feature.state":"状態","feature.spring_feature.valid_blocks":"有効なブロック","feature.string":"生成物の参照","feature.tree.decorators":"デコレータ","feature.tree.decorators.entry":"ツリーデコレータ","feature.tree.foliage_placer":"葉の配置","feature.tree.heightmap":"高度マップ","feature.tree.ignore_vines":"ツタを無視するか否か","feature.tree.leaves_provider":"葉の提供元","feature.tree.max_water_depth":"樹が生成される最大水深","feature.tree.minimum_size":"最小サイズ","feature.tree.minimum_size.limit":"制限","feature.tree.minimum_size.lower_size":"下限サイズ","feature.tree.minimum_size.middle_size":"中部のサイズ","feature.tree.minimum_size.type":"最小サイズ","feature.tree.minimum_size.upper_limit":"上限","feature.tree.minimum_size.upper_size":"上限サイズ","feature.tree.trunk_placer":"木の幹の設置処理","feature.tree.trunk_provider":"木の幹の提供元","feature.type":"種類","fluid.fluid":"液体ID","fluid.state":"液体の状態","fluid.tag":"液体タグ","fluid_state.Name":"名前","fluid_state.Properties":"プロパティ","foliage_placer.crown_height":"樹木の天蓋の高さ","foliage_placer.height":"高度","foliage_placer.offset":"オフセット","foliage_placer.radius":"半径","foliage_placer.trunk_height":"木の幹の高さ","foliage_placer.type":"種類","function.apply_bonus.enchantment":"エンチャント","function.apply_bonus.formula":"計算式","function.apply_bonus.formula.binomial_with_bonus_count":"二項分布","function.apply_bonus.formula.ore_drops":"鉱石ドロップ","function.apply_bonus.formula.uniform_bonus_count":"均一分布","function.apply_bonus.parameters":"パラメーター","function.apply_bonus.parameters.bonusMultiplier":"倍率","function.apply_bonus.parameters.extra":"追加の値","function.apply_bonus.parameters.probability":"確率","function.copy_name.source":"ソース","function.copy_nbt.ops":"NBT操作","function.copy_nbt.ops.entry":"操作","function.copy_nbt.source":"ソース","function.copy_state.block":"ブロック","function.copy_state.properties":"プロパティ","function.copy_state.properties.entry":"プロパティ","function.enchant_randomly.enchantments":"任意のエンチャント","function.enchant_randomly.enchantments.entry":"エンチャント","function.enchant_with_levels.levels":"レベル","function.enchant_with_levels.treasure":"トレジャーエンチャント","function.exploration_map.decoration":"目的地のアイコン","function.exploration_map.destination":"目的地","function.exploration_map.search_radius":"目的地を検索する半径 (チャンク)","function.exploration_map.skip_existing_chunks":"生成済みチャンクを検索しない","function.exploration_map.zoom":"ズーム","function.fill_player_head.entity":"エンティティ","function.function":"関数","function.limit_count.limit":"制限","function.looting_enchant.count":"個数","function.looting_enchant.limit":"上限","function.set_attributes.modifiers":"補正","function.set_attributes.modifiers.entry":"補正","function.set_contents.entries":"内容","function.set_contents.entries.entry":"項目","function.set_count.count":"個数","function.set_damage.damage":"耐久","function.set_data.data":"データ","function.set_loot_table.name":"ルートテーブル名","function.set_loot_table.seed":"シード値","function.set_lore.entity":"エンティティ","function.set_lore.lore":"説明文","function.set_lore.lore.entry":"行","function.set_lore.replace":"上書き","function.set_name.entity":"エンティティ","function.set_name.name":"名前","function.set_nbt.tag":"NBT","function.set_stew_effect.effects":"効果","function.set_stew_effect.effects.entry":"効果","function.set_stew_effect.effects.entry.duration":"持続時間","function.set_stew_effect.effects.entry.type":"効果","functions":"関数","functions.entry":"関数","gamemode.adventure":"アドベンチャー","gamemode.creative":"クリエイティブ","gamemode.spectator":"スペクテイター","gamemode.survival":"サバイバル","generation_step.air":"空気","generation_step.liquid":"液体","generator.biome_source.altitude_noise":"高度のノイズ","generator.biome_source.biome":"バイオーム","generator.biome_source.biomes":"バイオーム","generator.biome_source.humidity_noise":"湿度のノイズ","generator.biome_source.large_biomes":"大きなバイオーム","generator.biome_source.legacy_biome_init_layer":"旧バイオーム初期化レイヤー","generator.biome_source.preset":"バイオームプリセット","generator.biome_source.preset.nether":"ネザー","generator.biome_source.scale":"スケール","generator.biome_source.seed":"バイオームのシード値","generator.biome_source.temperature_noise":"気温のノイズ","generator.biome_source.type":"バイオームの生成法則","generator.biome_source.weirdness_noise":"奇妙さのノイズ","generator.seed":"ディメンションのシード値","generator.settings":"ジェネレーターの設定","generator.settings.biome":"バイオーム","generator.settings.lakes":"湖","generator.settings.layers":"レイヤー","generator.settings.layers.entry":"レイヤー","generator.settings.layers.entry.block":"ブロックID","generator.settings.layers.entry.height":"高度","generator.settings.object":"カスタム","generator.settings.presets.amplified":"巨大化","generator.settings.presets.caves":"洞窟","generator.settings.presets.end":"エンド","generator.settings.presets.floating_islands":"浮島","generator.settings.presets.nether":"ネザー","generator.settings.presets.overworld":"オーバーワールド","generator.settings.string":"プリセット","generator.settings.structures":"ストラクチャー","generator.settings.structures.stronghold":"要塞","generator.settings.structures.stronghold.count":"数量","generator.settings.structures.stronghold.distance":"距離","generator.settings.structures.stronghold.spread":"拡散","generator.settings.structures.structures":"ストラクチャー","generator.type":"ジェネレーターのタイプ","generator_biome.biome":"バイオーム","generator_biome.parameters":"パラメーター","generator_biome.parameters.altitude":"海抜","generator_biome.parameters.help":"これらのパラメータによって、バイオームの配置が決まります。すべてのバイオームは、これらの組み合わせが一意でなければなりません。似たような値を持つバイオームは隣り合って生成されます。","generator_biome.parameters.humidity":"湿度","generator_biome.parameters.offset":"オフセット","generator_biome.parameters.temperature":"気温","generator_biome.parameters.weirdness":"奇妙さ","generator_biome_noise.amplitudes":"広大さ","generator_biome_noise.amplitudes.entry":"オクターブ %0%","generator_structure.separation":"間隔","hide_source":"ソースを隠す","item.count":"個数","item.durability":"耐久値","item.enchantments":"エンチャント","item.enchantments.entry":"エンチャント","item.item":"アイテムID","item.nbt":"NBT","item.potion":"ポーション","item.tag":"アイテムタグ","key.advancements":"進捗","key.attack":"攻撃する/壊す","key.back":"後退","key.chat":"チャットを開く","key.command":"コマンドラインを開く","key.drop":"アイテムを捨てる","key.forward":"前進","key.fullscreen":"フルスクリーンの切り替え","key.hotbar.1":"ホットバースロット 1","key.hotbar.2":"ホットバースロット 2","key.hotbar.3":"ホットバースロット 3","key.hotbar.4":"ホットバースロット 4","key.hotbar.5":"ホットバースロット 5","key.hotbar.6":"ホットバースロット 6","key.hotbar.7":"ホットバースロット 7","key.hotbar.8":"ホットバースロット 8","key.hotbar.9":"ホットバースロット 9","key.inventory":"インベントリの開閉","key.jump":"ジャンプ","key.left":"左","key.loadToolbarActivator":"ツールバーの読み込み","key.pickItem":"ブロック選択","key.playerlist":"プレイヤーリストの表示","key.right":"右","key.saveToolbarActivator":"ツールバーの保存","key.screenshot":"スクリーンショットの撮影","key.smoothCamera":"カメラ動作の切り替え","key.sneak":"スニーク","key.spectatorOutlines":"プレイヤーの強調表示(スペクテイター)","key.sprint":"ダッシュ","key.swapOffhand":"持っているアイテムの切り替え","key.togglePerspective":"視点の切り替え","key.use":"アイテムの使用/ブロックの設置","location.biome":"バイオーム","location.block":"ブロック","location.dimension":"ディメンション","location.feature":"生成物","location.fluid":"液体","location.light":"光源","location.position":"位置","location.position.x":"X","location.position.y":"Y","location.position.z":"Z","loot_condition_type.block_state_property":"ブロックの状態プロパティ","loot_condition_type.damage_source_properties":"ダメージの要因のプロパティ","loot_condition_type.entity_properties":"エンティティのプロパティ","loot_condition_type.entity_scores":"エンティティのスコア","loot_condition_type.inverted":"反転","loot_condition_type.location_check":"位置のチェック","loot_condition_type.match_tool":"ツールの一致","loot_condition_type.random_chance":"ランダムな確率","loot_condition_type.random_chance_with_looting":"ランダムな確率 (ドロップ増加の影響を受ける)","loot_condition_type.reference":"条件の参照","loot_condition_type.time_check":"時間のチェック","loot_condition_type.weather_check":"天候のチェック","loot_entry.dynamic.name":"名前","loot_entry.item.name":"名前","loot_entry.loot_table.name":"ルートテーブル名","loot_entry.quality":"品質","loot_entry.tag.expand":"広げる","loot_entry.tag.name":"アイテムタグの名前","loot_entry.type":"種類","loot_entry.weight":"抽選確率","loot_function_type.copy_name":"名前のコピー","loot_function_type.copy_nbt":"NBTのコピー","loot_function_type.copy_state":"Block Stateのコピー","loot_function_type.enchant_randomly":"ランダムなエンチャント","loot_function_type.enchant_with_levels":"レベルからのエンチャント","loot_function_type.exploration_map":"探検家の地図のプロパティ","loot_function_type.furnace_smelt":"製錬","loot_function_type.limit_count":"個数制限","loot_function_type.looting_enchant":"ドロップ増加による個数補正","loot_function_type.set_attributes":"属性の設定","loot_function_type.set_contents":"内容の設定","loot_function_type.set_count":"個数の設定","loot_function_type.set_damage":"耐久値の設定","loot_function_type.set_data":"データの設定","loot_function_type.set_loot_table":"ルートテーブルの設定","loot_function_type.set_lore":"説明文の設定","loot_function_type.set_name":"名前の設定","loot_function_type.set_nbt":"NBTの設定","loot_function_type.set_stew_effect":"シチューの効果の設定","loot_pool.bonus_rolls":"ボーナス抽選数","loot_pool.entries":"エントリー","loot_pool.entries.entry":"項目","loot_pool.rolls":"抽選数","loot_pool_entry_type.dynamic":"動的","loot_pool_entry_type.empty":"空","loot_pool_entry_type.group":"グループ","loot_pool_entry_type.item":"アイテム","loot_pool_entry_type.loot_table":"ルートテーブル","loot_pool_entry_type.sequence":"順序","loot_pool_entry_type.tag":"アイテムタグ","nbt_operation.op":"操作方法","nbt_operation.op.append":"追加","nbt_operation.op.merge":"併合","nbt_operation.op.replace":"上書き","nbt_operation.source":"ソース","nbt_operation.target":"目標","noise_settings.default_block":"デフォルトのブロック","noise_settings.default_fluid":"既定の液体","noise_settings.name":"名前","player.advancements":"進捗","player.advancements.entry":"進捗","player.gamemode":"ゲームモード","player.level":"経験値レベル","player.recipes":"レシピ","player.stats":"統計値","player.stats.entry":"統計値","pos_rule_test.axis.x":"X","pos_rule_test.axis.y":"Y","pos_rule_test.predicate_type":"種類","processor.block_ignore.blocks.entry":"状態","processor.processor_type":"種類","range.number":"一致","requirements":"必要条件","rule_test.block":"ブロック","rule_test.block_state":"状態","rule_test.predicate_type":"種類","rule_test.probability":"確率","slot.chest":"胴体","slot.feet":"足","slot.head":"頭","slot.legs":"脚","slot.mainhand":"利き手","slot.offhand":"オフハンド","statistic.stat":"統計値","statistic.type":"種類","statistic.type.broken":"壊した回数","statistic.type.crafted":"作った回数","statistic.type.custom":"カスタム","statistic.type.dropped":"捨てた回数","status_effect.ambient":"ビーコン効果","status_effect.amplifier":"効果レベル","status_effect.duration":"持続時間","status_effect.visible":"パーティクル表示","structure_feature.biome_temp":"バイオームの気温","structure_feature.probability":"確率","structure_feature.type":"種類","surface_builder.type":"種類","table.type":"種類","table.type.block":"ブロック","table.type.chest":"チェスト","table.type.empty":"空","table.type.entity":"エンティティ","table.type.fishing":"釣り","table.type.generic":"汎用","tag.replace":"上書き","template_element.element_type":"種類","template_pool.name":"名前","text_component_object.block":"ブロック","text_component_object.bold":"太字","text_component_object.clickEvent":"クリックイベント","text_component_object.clickEvent.action.change_page":"ページへの移動","text_component_object.clickEvent.action.copy_to_clipboard":"クリップボードへのコピー","text_component_object.clickEvent.action.open_file":"ファイルを開く","text_component_object.clickEvent.action.open_url":"ウェブサイトを開く","text_component_object.clickEvent.action.run_command":"コマンドを実行","text_component_object.clickEvent.action.suggest_command":"コマンドを提案","text_component_object.color":"カラー","text_component_object.entity":"要素","text_component_object.score.name":"名前","tree_decorator.beehive.probability":"確率","tree_decorator.cocoa.probability":"確率","tree_decorator.type":"種類","true":"true","trunk_placer.type":"種類","worldgen/chunk_generator.noise":"デフォルト"}');export default e; -//# sourceMappingURL=ja.49e40b08.js.map diff --git a/assets/ja.49e40b08.js.map b/assets/ja.49e40b08.js.map deleted file mode 100644 index dc31a60a..00000000 --- a/assets/ja.49e40b08.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ja.49e40b08.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/model/index.html b/assets/model/index.html index 562f1315..0cfca83b 100644 --- a/assets/model/index.html +++ b/assets/model/index.html @@ -20,7 +20,7 @@ Model Generator Minecraft 1.18 - + diff --git a/assets/sk.d4265232.js b/assets/sk.d4265232.js new file mode 100644 index 00000000..189d7498 --- /dev/null +++ b/assets/sk.d4265232.js @@ -0,0 +1,2 @@ +var a=JSON.parse("{}");export default a; +//# sourceMappingURL=sk.d4265232.js.map diff --git a/assets/sk.d4265232.js.map b/assets/sk.d4265232.js.map new file mode 100644 index 00000000..6c6337b4 --- /dev/null +++ b/assets/sk.d4265232.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sk.d4265232.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html index 78a30c0c..f49a4f40 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -20,7 +20,7 @@ Technical Changelog Minecraft 1.16, 1.17, 1.18 - + diff --git a/dimension-type/index.html b/dimension-type/index.html index 077b5bfd..999b6514 100644 --- a/dimension-type/index.html +++ b/dimension-type/index.html @@ -20,7 +20,7 @@ Dimension Type Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/dimension/index.html b/dimension/index.html index de52ab55..ba3c9448 100644 --- a/dimension/index.html +++ b/dimension/index.html @@ -20,7 +20,7 @@ Dimension Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/index.html b/index.html index e981e3b7..bda2a2c8 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,7 @@ Data Pack Generators Minecraft 1.15, 1.16, 1.17 - + diff --git a/item-modifier/index.html b/item-modifier/index.html index 522ebfa4..bf475033 100644 --- a/item-modifier/index.html +++ b/item-modifier/index.html @@ -20,7 +20,7 @@ Item Modifier Generator Minecraft 1.17, 1.18 - + diff --git a/loot-table/index.html b/loot-table/index.html index c8adbbc6..1a3303b3 100644 --- a/loot-table/index.html +++ b/loot-table/index.html @@ -20,7 +20,7 @@ Loot Table Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/predicate/index.html b/predicate/index.html index 97e0fabc..316db204 100644 --- a/predicate/index.html +++ b/predicate/index.html @@ -20,7 +20,7 @@ Predicate Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/recipe/index.html b/recipe/index.html index 607cd201..5aa5ae90 100644 --- a/recipe/index.html +++ b/recipe/index.html @@ -20,7 +20,7 @@ Recipe Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/sounds/index.html b/sounds/index.html index b9b04f70..c31bfeda 100644 --- a/sounds/index.html +++ b/sounds/index.html @@ -20,7 +20,7 @@ Sound Explorer Minecraft 1.16, 1.17, 1.18 - + diff --git a/world/index.html b/world/index.html index 0088f29c..cf92fc7e 100644 --- a/world/index.html +++ b/world/index.html @@ -20,7 +20,7 @@ World Settings Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/biome/index.html b/worldgen/biome/index.html index 32cc2bb1..b0a0582c 100644 --- a/worldgen/biome/index.html +++ b/worldgen/biome/index.html @@ -20,7 +20,7 @@ Biome Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/carver/index.html b/worldgen/carver/index.html index de5145fc..9cb8881e 100644 --- a/worldgen/carver/index.html +++ b/worldgen/carver/index.html @@ -20,7 +20,7 @@ Carver Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/feature/index.html b/worldgen/feature/index.html index c2ae5ef0..456b1f8d 100644 --- a/worldgen/feature/index.html +++ b/worldgen/feature/index.html @@ -20,7 +20,7 @@ Feature Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/index.html b/worldgen/index.html index 4c738e02..b2c5a671 100644 --- a/worldgen/index.html +++ b/worldgen/index.html @@ -20,7 +20,7 @@ Worldgen Generators Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/noise-settings/index.html b/worldgen/noise-settings/index.html index f1697278..62ef4983 100644 --- a/worldgen/noise-settings/index.html +++ b/worldgen/noise-settings/index.html @@ -20,7 +20,7 @@ Noise Settings Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/noise/index.html b/worldgen/noise/index.html index 0cdfc677..7e447687 100644 --- a/worldgen/noise/index.html +++ b/worldgen/noise/index.html @@ -20,7 +20,7 @@ Noise Generator Minecraft 1.18 - + diff --git a/worldgen/placed-feature/index.html b/worldgen/placed-feature/index.html index e75516b0..9e41ead8 100644 --- a/worldgen/placed-feature/index.html +++ b/worldgen/placed-feature/index.html @@ -20,7 +20,7 @@ Placed Feature Generator Minecraft 1.18 - + diff --git a/worldgen/processor-list/index.html b/worldgen/processor-list/index.html index 6d006a64..77d4d410 100644 --- a/worldgen/processor-list/index.html +++ b/worldgen/processor-list/index.html @@ -20,7 +20,7 @@ Processor List Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/structure-feature/index.html b/worldgen/structure-feature/index.html index f0a57375..914adf6e 100644 --- a/worldgen/structure-feature/index.html +++ b/worldgen/structure-feature/index.html @@ -20,7 +20,7 @@ Structure Feature Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/surface-builder/index.html b/worldgen/surface-builder/index.html index b23ddbd6..f6cf686b 100644 --- a/worldgen/surface-builder/index.html +++ b/worldgen/surface-builder/index.html @@ -20,7 +20,7 @@ Surface Builder Generator Minecraft 1.16, 1.17, 1.18 - + diff --git a/worldgen/template-pool/index.html b/worldgen/template-pool/index.html index 8df1fb48..ced48014 100644 --- a/worldgen/template-pool/index.html +++ b/worldgen/template-pool/index.html @@ -20,7 +20,7 @@ Template Pool Generator Minecraft 1.16, 1.17, 1.18 - +