# The MMS reference for Minecraft 26.3, generated by `mms reference`.

version: "26.3"
docs: "https://minecraftmetascript.github.io/mms/docs"
kinds:
  - name: "Advancement"
    folder: "data/<namespace>/advancement/"
  - name: "Atlas"
    folder: "assets/<namespace>/atlases/"
  - name: "BannerPattern"
    folder: "data/<namespace>/banner_pattern/"
  - name: "Biome"
    folder: "data/<namespace>/worldgen/biome/"
  - name: "BiomeTag"
    folder: "data/<namespace>/tags/worldgen/biome/"
    doc: "A tag of worldgen/biome entries. Other tags of the same registry follow `Tag` the same way."
  - name: "BlockState"
    folder: "assets/<namespace>/blockstates/"
  - name: "BlockStateProvider"
    folder: "data/<namespace>/worldgen/block_state_provider/"
  - name: "BlockTag"
    folder: "data/<namespace>/tags/block/"
    doc: "A tag of block entries. Other tags of the same registry follow `Tag` the same way."
  - name: "BlockTransformer"
    folder: "data/<namespace>/block_transformer/"
  - name: "Carver"
    folder: "data/<namespace>/worldgen/carver/"
  - name: "CatSoundVariant"
    folder: "data/<namespace>/cat_sound_variant/"
  - name: "CatVariant"
    folder: "data/<namespace>/cat_variant/"
  - name: "ChatType"
    folder: "data/<namespace>/chat_type/"
  - name: "ChickenSoundVariant"
    folder: "data/<namespace>/chicken_sound_variant/"
  - name: "ChickenVariant"
    folder: "data/<namespace>/chicken_variant/"
  - name: "ContextFloatProvider"
    folder: "data/<namespace>/context_float_provider/"
  - name: "ContextIntProvider"
    folder: "data/<namespace>/context_int_provider/"
  - name: "CowSoundVariant"
    folder: "data/<namespace>/cow_sound_variant/"
  - name: "CowVariant"
    folder: "data/<namespace>/cow_variant/"
  - name: "DamageType"
    folder: "data/<namespace>/damage_type/"
  - name: "DamageTypeTag"
    folder: "data/<namespace>/tags/damage_type/"
    doc: "A tag of damage_type entries. Other tags of the same registry follow `Tag` the same way."
  - name: "DecoratedPotPattern"
    folder: "data/<namespace>/decorated_pot_pattern/"
  - name: "DensityFunction"
    folder: "data/<namespace>/worldgen/density_function/"
  - name: "Dialog"
    folder: "data/<namespace>/dialog/"
  - name: "Dimension"
    folder: "data/<namespace>/dimension/"
  - name: "DimensionType"
    folder: "data/<namespace>/dimension_type/"
  - name: "Enchantment"
    folder: "data/<namespace>/enchantment/"
  - name: "EnchantmentProvider"
    folder: "data/<namespace>/enchantment_provider/"
  - name: "EntityTypeTag"
    folder: "data/<namespace>/tags/entity_type/"
    doc: "A tag of entity_type entries. Other tags of the same registry follow `Tag` the same way."
  - name: "Equipment"
    folder: "assets/<namespace>/equipment/"
  - name: "Feature"
    folder: "data/<namespace>/worldgen/feature/"
  - name: "FlatLevelGeneratorPreset"
    folder: "data/<namespace>/worldgen/flat_level_generator_preset/"
  - name: "FluidTag"
    folder: "data/<namespace>/tags/fluid/"
    doc: "A tag of fluid entries. Other tags of the same registry follow `Tag` the same way."
  - name: "Font"
    folder: "assets/<namespace>/font/"
  - name: "FrogVariant"
    folder: "data/<namespace>/frog_variant/"
  - name: "Function"
    doc: "A function: commands, variables and control flow, compiled to .mcfunction files."
  - name: "FunctionTag"
    folder: "data/<namespace>/tags/function/"
    doc: "A tag of function entries. Other tags of the same registry follow `Tag` the same way."
  - name: "Global"
    doc: "A value for the whole pack, set when the pack first loads."
  - name: "Instrument"
    folder: "data/<namespace>/instrument/"
  - name: "ItemModel"
    folder: "assets/<namespace>/items/"
  - name: "ItemModifier"
    folder: "data/<namespace>/item_modifier/"
  - name: "ItemTag"
    folder: "data/<namespace>/tags/item/"
    doc: "A tag of item entries. Other tags of the same registry follow `Tag` the same way."
  - name: "JigsawHole"
    doc: "A name for jigsaw blocks, used only by the editor: `JigsawHole road_end` lists `<namespace>:road_end` in the Jigsaw view's Name and Target lists, so pieces built in the game join by names spelled the same way. It writes no file."
  - name: "JukeboxSong"
    folder: "data/<namespace>/jukebox_song/"
  - name: "Lang"
    folder: "assets/<namespace>/lang/"
  - name: "LootTable"
    folder: "data/<namespace>/loot_table/"
  - name: "MaterialCondition"
    folder: "data/<namespace>/worldgen/material_condition/"
  - name: "MaterialRule"
    folder: "data/<namespace>/worldgen/material_rule/"
  - name: "Model"
    folder: "assets/<namespace>/models/"
  - name: "MultiNoiseBiomeSourceParameterList"
    folder: "data/<namespace>/worldgen/multi_noise_biome_source_parameter_list/"
  - name: "Namespace"
    doc: "Sets the namespace for the declarations after it in the file."
  - name: "Noise"
    folder: "data/<namespace>/worldgen/noise/"
  - name: "NoiseSettings"
    folder: "data/<namespace>/worldgen/noise_settings/"
  - name: "Objective"
    doc: "A scoreboard objective, created by the generated load function."
  - name: "OnAdvancement"
    doc: "Code that runs as and at a player each time they meet a trigger: `OnAdvancement name = Trigger(...) { ... }` writes the advancement, its reward function and the revoke."
  - name: "OnFirstJoin"
    doc: "Code that runs once for each player, the first time they are in the world with the pack, as and at that player."
  - name: "OnLoad"
    doc: "Code that runs when the pack loads, from #minecraft:load."
  - name: "OnRespawn"
    doc: "Code that runs as and at a player right after they respawn."
  - name: "OnTick"
    doc: "Code that runs every tick, from #minecraft:tick."
  - name: "PaintingVariant"
    folder: "data/<namespace>/painting_variant/"
  - name: "Particle"
    folder: "assets/<namespace>/particles/"
  - name: "PigSoundVariant"
    folder: "data/<namespace>/pig_sound_variant/"
  - name: "PigVariant"
    folder: "data/<namespace>/pig_variant/"
  - name: "PlacedFeature"
    folder: "data/<namespace>/worldgen/placed_feature/"
  - name: "PostEffect"
    folder: "assets/<namespace>/post_effect/"
  - name: "Predicate"
    folder: "data/<namespace>/predicate/"
  - name: "ProcessorList"
    folder: "data/<namespace>/worldgen/processor_list/"
  - name: "Recipe"
    folder: "data/<namespace>/recipe/"
  - name: "SlotSource"
    folder: "data/<namespace>/slot_source/"
  - name: "Storage"
    doc: "A record kept in command storage: `Storage game: GameState` keeps a `Type GameState { wave: int = 0 }` at `<namespace>:mms game`. Functions read and write its fields as `game.wave`; the pack sets each missing field to its default when it loads."
  - name: "Structure"
    folder: "data/<namespace>/worldgen/structure/"
  - name: "StructureSet"
    folder: "data/<namespace>/worldgen/structure_set/"
  - name: "SulfurCubeArchetype"
    folder: "data/<namespace>/sulfur_cube_archetype/"
  - name: "SurfaceCondition"
    folder: "data/<namespace>/worldgen/material_condition/"
  - name: "SurfaceRule"
    folder: "data/<namespace>/worldgen/material_rule/"
  - name: "TemplatePool"
    folder: "data/<namespace>/worldgen/template_pool/"
  - name: "Test"
    doc: "A test of the pack's functions, run by `mms test` and the editor: a `setup { }` block, then `run f()` and `expect condition` lines. Tests run in a fresh world after the pack loads and are never written to the pack."
  - name: "TestEnvironment"
    folder: "data/<namespace>/test_environment/"
  - name: "TestInstance"
    folder: "data/<namespace>/test_instance/"
  - name: "Timeline"
    folder: "data/<namespace>/timeline/"
  - name: "TradeSet"
    folder: "data/<namespace>/trade_set/"
  - name: "TrialSpawner"
    folder: "data/<namespace>/trial_spawner/"
  - name: "TrimMaterial"
    folder: "data/<namespace>/trim_material/"
  - name: "TrimPattern"
    folder: "data/<namespace>/trim_pattern/"
  - name: "VillagerTrade"
    folder: "data/<namespace>/villager_trade/"
  - name: "WaypointStyle"
    folder: "assets/<namespace>/waypoint_style/"
  - name: "WolfSoundVariant"
    folder: "data/<namespace>/wolf_sound_variant/"
  - name: "WolfVariant"
    folder: "data/<namespace>/wolf_variant/"
  - name: "WorldClock"
    folder: "data/<namespace>/world_clock/"
  - name: "WorldPreset"
    folder: "data/<namespace>/worldgen/world_preset/"
  - name: "ZombieNautilusVariant"
    folder: "data/<namespace>/zombie_nautilus_variant/"
blueprints:
  - name: "Book"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/kinds/Book"
    doc: "A written book with pages in book markup:\n`Book guide { title = \"Guide\", author = \"The Garrison\", text = [\"# Welcome\", \"Plant the **banner** on gold.\"] }`.\nIts name stands for the book in item stacks, loot entries and `${...}`\nin commands."
    fields:
      - name: "title"
        type: "string"
        doc: "The title on the cover and the item's name, at most 32 characters."
      - name: "author"
        type: "string"
      - name: "generation"
        type: "BookGeneration?"
        optional: true
      - name: "text"
        type: "BookText?"
        optional: true
        doc: "The book's text in book markup, one string per line, or `TextFile(\"books/guide.mmsbook\")` to read it from a file. A line of `---` starts the next page."
      - name: "pages"
        type: "[Text]?"
        optional: true
        doc: "The pages as text components, for full control. Use `text` instead for book markup."
      - name: "components"
        type: "DataComponentPatch"
        optional: true
        default: "{}"
        doc: "More item components, such as `lore` or `custom_data`. Every use of the book gets them."
    stands_for:
      - type: "ItemStackTemplate"
        doc: "In a recipe result, a loot entry, or `${...}` in a command: a written book with these pages."
      - type: "ItemStack"
      - type: "LootPoolEntry"
      - type: "Id<item>"
        doc: "A Book used where the game takes a plain item id, such as a recipe ingredient or an item tag. It stands for written_book there, so any written book matches."
  - name: "CustomItem"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/kinds/CustomItem"
    doc: "A vanilla item with its own look and name. It writes the model drawn\nfrom its texture, the item model that its item_model component names\nand its name in the lang files. Its name then stands for the base item\nwith those components wherever an item stack goes: recipe results,\nloot entries and `${...}` in commands."
    fields:
      - name: "base"
        type: "Id<item>"
        doc: "The vanilla item this one is made from. It keeps the base item's behaviour; recipes and item tests that ask for an item id match the base."
      - name: "name"
        type: "LangText?"
        optional: true
        doc: "The item's name: text for `en_us`, or one text per language such as `{ en_us = \"Ember Shard\", de_de = \"Glutsplitter\" }`. It becomes an `item.<namespace>.<name>` entry in the lang files and the item's `item_name` component."
      - name: "texture"
        type: "Texture?"
        optional: true
        doc: "The item's picture, usually `Texture(\"art/name.png\")`, which is copied to textures/item/<name>.png. It makes a flat item model, like most vanilla items."
      - name: "parent"
        type: "Id<model>?"
        optional: true
        doc: "The parent of the model drawn from `texture`: `item/generated` (the default) for flat items, `item/handheld` for tools held like a sword."
      - name: "model"
        type: "Id<model>?"
        optional: true
        doc: "An existing model to show instead of one drawn from `texture`, such as a `Model` declared in the project."
      - name: "item_model"
        type: "ItemModel?"
        optional: true
        doc: "An item model to use instead of the generated one: the id of an `ItemModel`, or its body, such as `{ model = Select(...) }` for an item that changes its look."
      - name: "components"
        type: "DataComponentPatch"
        optional: true
        default: "{}"
        doc: "More item components, such as `max_stack_size` or `rarity`. Every use of the item gets them."
      - name: "consume_on_use"
        type: "int?"
        optional: true
        doc: "How many of the item each right-click use takes from the stack, paid once per press by on_right_click, on_use_on_block or on_right_click_entity."
      - name: "damage_on_use"
        type: "int?"
        optional: true
        doc: "How much durability each right-click use costs, paid like consume_on_use. The item needs a `max_damage` component, and gets `max_stack_size = 1` unless it sets one. When the durability runs out the item breaks, and on_break runs."
      - name: "on_right_click"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when they right-click with the item: once per press, not again while the button is held. When the item also has on_use_on_block or on_right_click_entity, a press that runs one of those does not run this one too, so this is the click at anything else, such as the air."
      - name: "on_hold_right_click"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, on every tick they hold right click with the item."
      - name: "on_use_on_block"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run when a player right-clicks a block with the item, once per press: as the player, positioned at the centre of the block."
      - name: "on_right_click_entity"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run when a player right-clicks an entity with the item, once per press: as the player, at the entity, which has the tag `mms_target` while it runs."
      - name: "on_hit"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when they hurt an entity while holding the item in their main hand."
      - name: "on_kill"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when they kill an entity while holding the item in their main hand."
      - name: "on_consume"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when they finish eating or drinking the item. The item needs a `consumable` component, or a base item that is food or a potion. It cannot be combined with the right-click hooks."
      - name: "on_pickup"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when they pick the item up from the ground."
      - name: "on_break"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run, as and at the player, when the item runs out of durability and breaks. The item needs durability: a tool, weapon or armor base, or a `max_damage` component."
      - name: "on_projectile_hit_block"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run when an arrow hits a block: an arrow shot from the item, for a bow or crossbow base, or the arrow that is the item, for an arrow, tipped_arrow or spectral_arrow base. It runs as the arrow, at the point it hit; `execute on origin` is the shooter."
      - name: "on_projectile_hit_entity"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run when an arrow hurts an entity: an arrow shot from the item, for a bow or crossbow base, or the arrow that is the item, for an arrow, tipped_arrow or spectral_arrow base. It runs as and at the entity hit; `execute on attacker` is the shooter."
      - name: "on_projectile_land"
        type: "Function?"
        optional: true
        doc: "A `Function` without parameters to run where a thrown splash or lingering potion that is the item lands, whatever it hits. It runs at the spot, as a marker that is removed afterwards. Needs a splash_potion or lingering_potion base."
    stands_for:
      - type: "ItemStackTemplate"
        doc: "In a recipe result, a loot entry, or `${...}` in a command: the base item with the custom item's components."
      - type: "ItemStack"
      - type: "LootPoolEntry"
      - type: "Id<item>"
        doc: "A CustomItem used where the game takes a plain item id, such as a recipe ingredient or an item tag. It stands for its base item there, so it also matches the base item without the custom components."
  - name: "JigsawStructure"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/kinds/JigsawStructure"
    doc: "A structure grown from jigsaw pieces, with how often it appears:\n`JigsawStructure dungeon { biomes = #minecraft:is_overworld, step = underground_structures, spacing = 32, separation = 12, height = AboveBottom(20), start = start, pools = { start = [Piece(\"start\")] } }`.\nIt writes the structure set, the structure and one template pool per\nentry of `pools`. Its name stands for the structure, as in\n`/locate structure ${dungeon}`."
    fields:
      - name: "biomes"
        type: "Ids<worldgen/biome>"
        doc: "Where it can start: a biome, a tag such as `#minecraft:is_overworld`, or a list of biomes."
      - name: "step"
        type: "DecorationStep"
        doc: "The generation step it is placed in, such as `surface_structures` or `underground_structures`."
      - name: "spacing"
        type: "int"
        doc: "The size in chunks of the grid cells it is spread over; about one structure per cell."
      - name: "separation"
        type: "int"
      - name: "salt"
        type: "int?"
        optional: true
      - name: "height"
        type: "HeightProvider"
        doc: "The height of the start piece, such as `AboveBottom(20)` or `Constant(64)`."
      - name: "heightmap"
        type: "Heightmap?"
        optional: true
        doc: "The start piece's y is taken from the ground's surface instead, with `height` added to it, as villages do."
      - name: "depth"
        type: "int"
        optional: true
        default: "7"
        doc: "How many pieces deep it grows from the start piece, from 1 to 20."
      - name: "max_distance"
        type: "int"
        optional: true
        default: "80"
        doc: "How far in blocks a piece can be from the start piece, from 1 to 128."
      - name: "terrain_adaptation"
        type: "TerrainAdaptation?"
        optional: true
        doc: "How the terrain fits around it: `beard_thin` and `beard_box` raise the ground under it, `bury` sinks it, `encapsulate` fills around it."
      - name: "start"
        type: "Id<worldgen/template_pool>"
        doc: "The pool the start piece comes from, usually one of `pools`."
      - name: "pools"
        type: "{string: [WeightedElement] | TemplatePool}"
        doc: "The template pools, by name: a list of pieces, such as `start = [Piece(\"start\")]`,\nor a whole pool, such as `halls = { fallback = caps, elements = [Piece(\"halls/hall\")] }`.\nEach one is a TemplatePool of that name, so jigsaw blocks draw from\n`<namespace>:<name>`."
templates:
  - name: "book_pages"
    signature: "book_pages(text: BookText): [Text]"
    builtin: true
    doc: "Lays out book markup as a book's pages: a `---` line starts the next page. The text is a list of lines, or `TextFile(\"books/guide.mmsbook\")`."
    params:
      - name: "text"
        type: "BookText"
  - name: "cos"
    signature: "cos(degrees: double): double"
    builtin: true
    doc: "The cosine of an angle in degrees."
    params:
      - name: "degrees"
        type: "double"
  - name: "sin"
    signature: "sin(degrees: double): double"
    builtin: true
    doc: "The sine of an angle in degrees."
    params:
      - name: "degrees"
        type: "double"
  - name: "len"
    signature: "len(value: any): int"
    builtin: true
    doc: "The number of items in a list, fields in an object, or characters in a string."
    params:
      - name: "value"
        type: "any"
  - name: "by_language"
    signature: "by_language(text: LangText?): {string: string}"
    builtin: true
    doc: "A LangText as an object of language code to text; plain text is English."
    params:
      - name: "text"
        type: "LangText?"
        optional: true
  - name: "english"
    signature: "english(text: LangText): string"
    builtin: true
    doc: "The English text of a LangText, or its first text when it has no English."
    params:
      - name: "text"
        type: "LangText"
  - name: "contains"
    signature: "contains(list: [any], value: any): bool"
    builtin: true
    doc: "Whether a list holds a value."
    params:
      - name: "list"
        type: "[any]"
      - name: "value"
        type: "any"
  - name: "matches"
    signature: "matches(text: string, pattern: string): bool"
    builtin: true
    doc: "Whether a string matches a regular expression, as a whole."
    params:
      - name: "text"
        type: "string"
      - name: "pattern"
        type: "string"
  - name: "replace"
    signature: "replace(text: string, old: string, new: string): string"
    builtin: true
    doc: "A string with every `old` replaced by `new`."
    params:
      - name: "text"
        type: "string"
      - name: "old"
        type: "string"
      - name: "new"
        type: "string"
  - name: "named"
    signature: "named(asset: any, name: string): any"
    builtin: true
    doc: "An asset call such as Texture(\"art/ruby.png\") with an id name, unless it has one: named(texture, \"item/ruby\")."
    params:
      - name: "asset"
        type: "any"
      - name: "name"
        type: "string"
  - name: "kind_of"
    signature: "kind_of(value: any): string"
    builtin: true
    doc: "The kind of a value: \"none\", \"bool\", \"number\", \"string\", \"name\", \"list\", \"object\", \"range\", \"commands\", or \"runtime\" for a value only known when the pack runs."
    params:
      - name: "value"
        type: "any"
  - name: "hash"
    signature: "hash(text: string): int"
    builtin: true
    doc: "A whole number from 0 to 2147483647 made from a string, the same in every build: `hash(\"dungeon:dungeon\")`."
    params:
      - name: "text"
        type: "string"
  - name: "tell"
    signature: "tell(target: Selector, message: Text): Commands"
    builtin: true
    doc: "Sends `message` to the chat of each player `target` selects: `tell(@a, \"Wave ${wave} begins\")`. The message is text markup, and `${...}` in it shows a score, a Global, a selector's names or a constant."
    params:
      - name: "target"
        type: "Selector"
      - name: "message"
        type: "Text"
  - name: "title"
    signature: "title(target: Selector, message: Text, subtitle: Text?): Commands"
    builtin: true
    doc: "Shows `message` in large text in the middle of the screen of each player `target` selects, with `subtitle` under it."
    params:
      - name: "target"
        type: "Selector"
      - name: "message"
        type: "Text"
      - name: "subtitle"
        type: "Text?"
        optional: true
  - name: "exists"
    signature: "exists(target: Selector): bool"
    builtin: true
    doc: "Whether `target` selects at least one entity, in a function: `if (exists(@e[tag=boss])) { ... }`."
    params:
      - name: "target"
        type: "Selector"
  - name: "count"
    signature: "count(target: Selector): int"
    builtin: true
    doc: "How many entities `target` selects, in a function: `let n = count(@e[type=zombie, distance=..16])`."
    params:
      - name: "target"
        type: "Selector"
  - name: "actionbar"
    signature: "actionbar(target: Selector, message: Text): Commands"
    builtin: true
    doc: "Shows `message` just above the hotbar of each player `target` selects."
    params:
      - name: "target"
        type: "Selector"
      - name: "message"
        type: "Text"
  - name: "Piece"
    signature: "Piece(path: string, weight: int = 1, processors: Id<worldgen/processor_list> | ProcessorList = minecraft:empty, projection: Projection = rigid): WeightedElement"
    doc: "One structure file as a weighted pool entry: `Piece(\"halls/hall\", 3)`\nreads structures/halls/hall.nbt and gives it weight 3. The file becomes\nthe structure `<namespace>:halls/hall` in the pack. `processors` is a\nprocessor list's id, or the processors written inline:\n`Piece(\"halls/hall\", processors = [BlockRot(integrity = 0.8)])`."
    params:
      - name: "path"
        type: "string"
      - name: "weight"
        type: "int"
        optional: true
        default: "1"
      - name: "processors"
        type: "Id<worldgen/processor_list> | ProcessorList"
        optional: true
        default: "minecraft:empty"
      - name: "projection"
        type: "Projection"
        optional: true
        default: "rigid"
prelude_types:
  - name: "BookGeneration"
    is: "BookGeneration = \"original\" | \"copy\" | \"copy_of_copy\" | \"tattered\""
    doc: "How many times a written book has been copied."
  - name: "LangText"
    is: "LangText = string | {string: string}"
    doc: "Text in English, or one text per language: `{ en_us = \"Ruby\", de_de = \"Rubin\" }`."
forms:
  - name: "Range"
    doc: "`lo..hi`, a range. Either end can be left out."
    means:
      - where: "IntNumberProviderRef"
        doc: "`1..3` where a number provider goes: a uniform number from 1 to 3."
      - where: "FloatNumberProviderRef"
        doc: "`0.5..2` where a number provider goes: a uniform number from 0.5 to 2."
      - where: "IntRange"
        doc: "`1..3`, `1..` or `..3` where bounds go."
      - where: "FloatRange"
        doc: "`0.5..2`, `0.5..` or `..2` where bounds go."
      - where: "MinMaxBounds"
        doc: "`1..3`, `1..` or `..3` where bounds go."
  - name: "Not"
    doc: "`!x`."
    means:
      - where: "LootCondition"
      - where: "MaterialCondition"
        doc: "`!a` on a surface condition."
  - name: "And"
    doc: "`a && b && ...`. A chain of `&&` is one form, with every term; parentheses keep a group."
    means:
      - where: "LootCondition"
        doc: "`a && b` on loot conditions: true when every term is."
  - name: "Or"
    doc: "`a || b || ...`. A chain of `||` is one form, with every term; parentheses keep a group."
    means:
      - where: "LootCondition"
        doc: "`a || b` on loot conditions: true when any term is."
  - name: "Sum"
    doc: "`a + b`."
    means:
      - where: "DensityFunction"
  - name: "Difference"
    doc: "`a - b`."
    means:
      - where: "DensityFunction"
  - name: "Product"
    doc: "`a * b`."
    means:
      - where: "DensityFunction"
      - where: "ItemStackTemplate"
        doc: "`diamond * 4`: a stack of four diamonds."
  - name: "Quotient"
    doc: "`a / b`."
    means:
      - where: "DensityFunction"
  - name: "Negation"
    doc: "`-x`, where x is not a number."
    means:
      - where: "DensityFunction"
  - name: "BareId"
    doc: "A bare id, such as `diamond` or `minecraft:diamond`."
    means:
      - where: "LootPoolEntry"
  - name: "TagRef"
    doc: "A tag, such as `#logs`."
    means:
      - where: "LootPoolEntry"
  - name: "NumberLiteral"
    doc: "A number."
    means:
      - where: "VerticalAnchor"
  - name: "ListLiteral"
    doc: "A list. Lists inside it are flattened into it."
    means:
      - where: "MaterialRule"
        doc: "`[a, b]` where a surface rule goes: the first rule that applies."
helpers:
  - group: "Objects"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/objects"
    helpers:
      - name: "AND"
        signature: "AND(AND: [MultiPartCondition])"
        params:
          - name: "AND"
            type: "list of MultiPartCondition"
      - name: "AboveBottom"
        signature: "AboveBottom(above_bottom: int)"
        params:
          - name: "above_bottom"
            type: "int"
      - name: "AboveRootPlacement"
        signature: "AboveRootPlacement(above_root_provider: BlockStateProviderRef, above_root_placement_chance: float)"
        params:
          - name: "above_root_provider"
            type: "BlockStateProviderRef"
          - name: "above_root_placement_chance"
            type: "number 0..1"
      - name: "Absolute"
        signature: "Absolute(absolute: int)"
        params:
          - name: "absolute"
            type: "int"
      - name: "Advancement"
        signature: "Advancement(criteria: object, parent?: advancement id, display?: value, requirements?: [[string]], rewards?: AdvancementRewards, sends_telemetry_event?: bool)"
        params:
          - name: "criteria"
            type: "map of string to AdvancementCriterion"
            doc: "If `requirements` is not defined, all defined criteria will be required."
          - name: "parent"
            type: "advancement id"
            optional: true
            doc: "If this field is absent, this advancement is a root advancement.\nCircular references cause a loading failure."
          - name: "display"
            type: "any (depends on parent)"
            optional: true
            doc: "If present, advancement will be visible in the advancement tabs."
          - name: "requirements"
            type: "list of (list of string (at least 1)) (at least 1)"
            optional: true
            doc: "If all criteria are required at once, this may be omitted.\n\nContains all of the `criteria` keys.\n\nIf all of the lists each have at least one criteria met, the advancement is complete (basically AND grouping of OR groups)."
          - name: "rewards"
            type: "AdvancementRewards"
            optional: true
            doc: "Provided to the player when this advancement is obtained."
          - name: "sends_telemetry_event"
            type: "bool"
            optional: true
            doc: "Defaults to `false`. The vanilla game client only reads this for advancements from the `minecraft` namespace."
      - name: "AdvancementRewards"
        signature: "AdvancementRewards(experience?: int, loot?: LootTableListRef, recipes?: [recipe id], function?: function id)"
        params:
          - name: "experience"
            type: "int"
            optional: true
            doc: "XP to add."
          - name: "loot"
            type: "LootTableListRef"
            optional: true
            doc: "Loot tables to give."
          - name: "recipes"
            type: "list of recipe ids"
            optional: true
            doc: "Recipes to unlock."
          - name: "function"
            type: "function id"
            optional: true
            doc: "Function to run as and at the player. Function tags are not allowed."
      - name: "Aquifer"
        signature: "Aquifer(barrier: DensityFunctionRef, fluid_level_floodedness: DensityFunctionRef, fluid_level_spread: DensityFunctionRef, lava: DensityFunctionRef, exclusion: DensityFunctionRef, surface_level: DensityFunctionRef)"
        params:
          - name: "barrier"
            type: "DensityFunctionRef"
          - name: "fluid_level_floodedness"
            type: "DensityFunctionRef"
          - name: "fluid_level_spread"
            type: "DensityFunctionRef"
          - name: "lava"
            type: "DensityFunctionRef"
          - name: "exclusion"
            type: "DensityFunctionRef"
          - name: "surface_level"
            type: "DensityFunctionRef"
      - name: "AssetId"
        signature: "AssetId(asset_id: texture id)"
        params:
          - name: "asset_id"
            type: "texture id"
      - name: "Atlas"
        signature: "Atlas(sources: [SpriteSource])"
        params:
          - name: "sources"
            type: "list of SpriteSource"
            doc: "List of sprite sources which can add or remove sprite textures to this atlas."
      - name: "AttributeEntry"
        signature: "AttributeEntry(attribute: attribute id, id: attribute_modifier id, amount: float, operation: AttributeOperation)"
        params:
          - name: "attribute"
            type: "attribute id"
            doc: "Attribute type to modify."
          - name: "id"
            type: "attribute_modifier id"
            doc: "The unique identifier of this attribute modifier."
          - name: "amount"
            type: "number"
            doc: "Change in the attribute."
          - name: "operation"
            type: "AttributeOperation"
            doc: "The operation used for this modifier."
      - name: "AttributeModifier"
        signature: "AttributeModifier(attribute: attribute id, id: attribute_modifier id, amount: FloatNumberProviderRef, operation: AttributeOperation, slot: EquipmentSlotGroup | [EquipmentSlotGroup])"
        params:
          - name: "attribute"
            type: "attribute id"
            doc: "Attribute type to modify."
          - name: "id"
            type: "attribute_modifier id"
            doc: "The unique identifier of this attribute modifier."
          - name: "amount"
            type: "FloatNumberProviderRef"
          - name: "operation"
            type: "AttributeOperation"
            doc: "The operation used for this modifier."
          - name: "slot"
            type: "EquipmentSlotGroup | list of EquipmentSlotGroup"
            doc: "If a list, one of the listed slots will be chosen randomly."
      - name: "AxisAngle"
        signature: "AxisAngle(axis: [float], angle: float)"
        params:
          - name: "axis"
            type: "list of number (exactly 3)"
            doc: "Local position of the axis in [x, y, z]."
          - name: "angle"
            type: "number"
            doc: "Angle to rotate around the axis in radians."
      - name: "BannerPattern"
        signature: "BannerPattern(asset_id: texture id, translation_key: string)"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "Also resolves to `assets/<namespace>/textures/entity/shield/<name>.png`."
          - name: "translation_key"
            type: "string"
            doc: "Translation key prefix per dye color (e.g. `block.minecraft.banner.custom.pattern` resolves to `block.minecraft.banner.custom.pattern.<dye color>`)."
      - name: "BannerPatternLayer"
        signature: "BannerPatternLayer(pattern: banner_pattern id, color: DyeColor)"
        params:
          - name: "pattern"
            type: "banner_pattern id"
          - name: "color"
            type: "DyeColor"
      - name: "BelowTop"
        signature: "BelowTop(below_top: int)"
        params:
          - name: "below_top"
            type: "int"
      - name: "Biome"
        signature: "Biome(temperature: float, downfall: float, has_precipitation: bool, effects: BiomeEffects, carvers: CarverListRef, features: [[PlacedFeatureRef] | placed_feature id], attributes?: EnvironmentAttributeMap, temperature_modifier?: TemperatureModifier)"
        params:
          - name: "temperature"
            type: "number"
          - name: "downfall"
            type: "number"
          - name: "has_precipitation"
            type: "bool"
          - name: "effects"
            type: "BiomeEffects"
          - name: "carvers"
            type: "CarverListRef"
          - name: "features"
            type: "list of (#placed_feature tag | list of PlacedFeatureRef) (at most 11)"
          - name: "attributes"
            type: "PositionalEnvironmentAttributeMap"
            optional: true
          - name: "temperature_modifier"
            type: "TemperatureModifier"
            optional: true
      - name: "BiomeEffects"
        signature: "BiomeEffects(water_color: StringRGB, grass_color?: StringRGB, foliage_color?: StringRGB, dry_foliage_color?: StringRGB, grass_color_modifier?: GrassColorModifier)"
        params:
          - name: "water_color"
            type: "StringRGB"
          - name: "grass_color"
            type: "StringRGB"
            optional: true
          - name: "foliage_color"
            type: "StringRGB"
            optional: true
          - name: "dry_foliage_color"
            type: "StringRGB"
            optional: true
          - name: "grass_color_modifier"
            type: "GrassColorModifier"
            optional: true
      - name: "BlockColumnLayer"
        signature: "BlockColumnLayer(height: IntProvider, provider: BlockStateProviderRef)"
        params:
          - name: "height"
            type: "IntProvider of int 0.."
          - name: "provider"
            type: "BlockStateProviderRef"
      - name: "BlockPredicate"
        signature: "BlockPredicate(blocks?: block id | [block id], state?: BlockPredicateState, nbt?: string | value, components?: DataComponentExactPredicate, predicates?: DataComponentPredicate)"
        params:
          - name: "blocks"
            type: "block id | #block tag | list of block ids"
            optional: true
          - name: "state"
            type: "BlockPredicateState"
            optional: true
          - name: "nbt"
            type: "string | any (depends on blocks)"
            optional: true
          - name: "components"
            type: "DataComponentExactPredicate"
            optional: true
            doc: "Match exact data component values on the block entity."
          - name: "predicates"
            type: "DataComponentPredicate"
            optional: true
            doc: "Test data component values on the block entity."
      - name: "BlockPredicateState"
        signature: "BlockPredicateState()"
      - name: "BlockTransformData"
        signature: "BlockTransformData(block_state_provider: BlockStateProviderRef, sound?: SoundEventRef, particle?: BlockTransformParticle, disallowed_faces?: [Direction], loot?: loot_table id, drop_strategy?: BlockTransformDropStrategy, transform_type?: BlockTransformType, update_from_neighbors?: bool, consume_on_use?: bool, item_damage_per_use?: int)"
        params:
          - name: "block_state_provider"
            type: "BlockStateProviderRef"
            doc: "If the provider returns no result, the next transformer will be attempted."
          - name: "sound"
            type: "SoundEventRef"
            optional: true
            doc: "Defaults to not playing sound."
          - name: "particle"
            type: "BlockTransformParticle"
            optional: true
            doc: "Defaults to `none`."
          - name: "disallowed_faces"
            type: "list of Direction"
            optional: true
            doc: "If a disallowed face is interacted with, the next transformer will be attempted. \\\nDefaults to empty (allowing all faces)."
          - name: "loot"
            type: "loot_table id"
            optional: true
            doc: "The loot to drop on a successful transformation. \\\nDefaults to drop nothing."
          - name: "drop_strategy"
            type: "BlockTransformDropStrategy"
            optional: true
            doc: "Where the `loot` should drop. \\\nDefaults to `from_middle`."
          - name: "transform_type"
            type: "BlockTransformType"
            optional: true
            doc: "How nearby blocks are affected by the transformation. \\\nDefaults to `single_block`."
          - name: "update_from_neighbors"
            type: "bool"
            optional: true
            doc: "Whether the transformed block should update based on neighboring blocks. \\\nDefaults to `true`."
          - name: "consume_on_use"
            type: "bool"
            optional: true
            doc: "Only has effect on stackable items. \\\nDefaults to `true`."
          - name: "item_damage_per_use"
            type: "int 0.."
            optional: true
            doc: "Only has effect on unstackable items. \\\nDefauls to 1."
      - name: "Button"
        signature: "Button(label: Text, tooltip?: Text, width?: int, action?: ClickAction)"
        params:
          - name: "label"
            type: "Text"
          - name: "tooltip"
            type: "Text"
            optional: true
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Width of the button.\nDefaults to 150."
          - name: "action"
            type: "ClickAction"
            optional: true
            doc: "If not present, clicking button will simply close dialog without any action."
      - name: "CanyonShape"
        signature: "CanyonShape(distance_factor: FloatProvider, thickness: FloatProvider, width_smoothness: int, horizontal_radius_factor: FloatProvider, vertical_radius_default_factor: float, vertical_radius_center_factor: float, y_scale: FloatProvider)"
        params:
          - name: "distance_factor"
            type: "FloatProvider of number"
          - name: "thickness"
            type: "FloatProvider of number"
          - name: "width_smoothness"
            type: "int 0.."
          - name: "horizontal_radius_factor"
            type: "FloatProvider of number"
          - name: "vertical_radius_default_factor"
            type: "number"
          - name: "vertical_radius_center_factor"
            type: "number"
          - name: "y_scale"
            type: "FloatProvider of number"
      - name: "CatSounds"
        signature: "CatSounds(ambient_sound: SoundEventRef, stray_ambient_sound: SoundEventRef, hiss_sound: SoundEventRef, hurt_sound: SoundEventRef, death_sound: SoundEventRef, eat_sound: SoundEventRef, beg_for_food_sound: SoundEventRef, purr_sound: SoundEventRef, purreow_sound: SoundEventRef)"
        params:
          - name: "ambient_sound"
            type: "SoundEventRef"
          - name: "stray_ambient_sound"
            type: "SoundEventRef"
          - name: "hiss_sound"
            type: "SoundEventRef"
          - name: "hurt_sound"
            type: "SoundEventRef"
          - name: "death_sound"
            type: "SoundEventRef"
          - name: "eat_sound"
            type: "SoundEventRef"
          - name: "beg_for_food_sound"
            type: "SoundEventRef"
          - name: "purr_sound"
            type: "SoundEventRef"
          - name: "purreow_sound"
            type: "SoundEventRef"
      - name: "CatVariant"
        signature: "CatVariant(asset_id: texture id, baby_asset_id: texture id, spawn_conditions: [SpawnPrioritySelector])"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The cat texture to use for this variant."
          - name: "baby_asset_id"
            type: "texture id"
            doc: "The baby cat texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
      - name: "ChatDecoration"
        signature: "ChatDecoration(translation_key: string, parameters: [ChatDecorationParameter], style?: TextStyle)"
        params:
          - name: "translation_key"
            type: "string"
          - name: "parameters"
            type: "list of ChatDecorationParameter"
          - name: "style"
            type: "TextStyle"
            optional: true
      - name: "ChatType"
        signature: "ChatType(chat: ChatDecoration, narration: ChatDecoration)"
        params:
          - name: "chat"
            type: "ChatDecoration"
          - name: "narration"
            type: "ChatDecoration"
      - name: "ChickenVariant"
        signature: "ChickenVariant(asset_id: texture id, baby_asset_id: texture id, spawn_conditions: [SpawnPrioritySelector], model?: ChickenModelType)"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The chicken texture to use for this variant."
          - name: "baby_asset_id"
            type: "texture id"
            doc: "The baby chicken texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
          - name: "model"
            type: "ChickenModelType"
            optional: true
      - name: "CollectionPredicate"
        signature: "CollectionPredicate(contains?: [EntityEffectsPredicate], count?: [object], size?: MinMaxBounds)"
        params:
          - name: "contains"
            type: "list of EntityEffectsPredicate"
            optional: true
            doc: "A list of tests. For each test, there must be at least one entry whose contents match exactly."
          - name: "count"
            type: "list of { test: EntityEffectsPredicate, count: MinMaxBounds of int }"
            optional: true
          - name: "size"
            type: "MinMaxBounds of int"
            optional: true
            doc: "When set, total number of entries in the this collection."
      - name: "ColorWhenUndyed"
        signature: "ColorWhenUndyed(color_when_undyed?: RGB)"
        params:
          - name: "color_when_undyed"
            type: "RGB"
            optional: true
            doc: "If the item is not dyed, this color is used instead. \\\nIf not specified and the item is not dyed, this layer will be hidden."
      - name: "ContactDamage"
        signature: "ContactDamage(damage_type: damage_type id, amount: FloatProvider, attribute_to_source: bool)"
        params:
          - name: "damage_type"
            type: "damage_type id"
          - name: "amount"
            type: "FloatProvider of number 0.."
          - name: "attribute_to_source"
            type: "bool"
            doc: "Whether the damage is attributed to the sulfur cube."
      - name: "CowSounds"
        signature: "CowSounds(ambient_sound: SoundEventRef, hurt_sound: SoundEventRef, death_sound: SoundEventRef, step_sound: SoundEventRef)"
        params:
          - name: "ambient_sound"
            type: "SoundEventRef"
          - name: "hurt_sound"
            type: "SoundEventRef"
          - name: "death_sound"
            type: "SoundEventRef"
          - name: "step_sound"
            type: "SoundEventRef"
      - name: "CowVariant"
        signature: "CowVariant(asset_id: texture id, baby_asset_id: texture id, spawn_conditions: [SpawnPrioritySelector], model?: CowModelType)"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The cow texture to use for this variant."
          - name: "baby_asset_id"
            type: "texture id"
            doc: "The baby cow texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
          - name: "model"
            type: "CowModelType"
            optional: true
      - name: "CustomDataMap"
        signature: "CustomDataMap()"
      - name: "DamagePredicate"
        signature: "DamagePredicate(dealt?: MinMaxBounds, taken?: MinMaxBounds, blocked?: bool, source_entity?: EntityPredicate, type?: DamageSourcePredicate)"
        params:
          - name: "dealt"
            type: "MinMaxBounds of number"
            optional: true
            doc: "Amount of incoming damage before damage reduction."
          - name: "taken"
            type: "MinMaxBounds of number"
            optional: true
            doc: "Amount of incoming damage after damage reduction."
          - name: "blocked"
            type: "bool"
            optional: true
            doc: "Whether the damage was successfully blocked."
          - name: "source_entity"
            type: "EntityPredicate"
            optional: true
            doc: "Source of the damage (eg: a skeleton shooting an arrow or player igniting tnt)."
          - name: "type"
            type: "DamageSourcePredicate"
            optional: true
      - name: "DamageSourcePredicate"
        signature: "DamageSourcePredicate(tags?: [DamageTagPredicate], source_entity?: EntityPredicate, direct_entity?: EntityPredicate, is_direct?: bool)"
        params:
          - name: "tags"
            type: "list of DamageTagPredicate"
            optional: true
            doc: "Damage type tags that the damage type is in."
          - name: "source_entity"
            type: "EntityPredicate"
            optional: true
            doc: "Source of the damage (eg: a skeleton shooting an arrow or player igniting tnt)."
          - name: "direct_entity"
            type: "EntityPredicate"
            optional: true
            doc: "Direct entity responsible for the damage (eg: the arrow or tnt)."
          - name: "is_direct"
            type: "bool"
            optional: true
            doc: "Damage is direct when its direct and source entities are the same."
      - name: "DamageTagPredicate"
        signature: "DamageTagPredicate(id: damage_type id | [damage_type id], expected: bool)"
        params:
          - name: "id"
            type: "damage_type id | #damage_type tag | list of damage_type ids"
          - name: "expected"
            type: "bool"
            doc: "Whether the damage is expected to have or not have the tag."
      - name: "DamageType"
        signature: "DamageType(message_id: string, exhaustion: float, scaling: DamageScaling, effects?: DamageEffects, death_message_type?: DeathMessageType)"
        params:
          - name: "message_id"
            type: "string"
            doc: "The message id used for deaths caused by this damage type.\nIs combined with the result of `death_message_type` to form a translation key."
          - name: "exhaustion"
            type: "number 0.."
            doc: "Amount of hunger exhaustion to cause."
          - name: "scaling"
            type: "DamageScaling"
            doc: "Whether to scale damage with difficulty levels."
          - name: "effects"
            type: "DamageEffects"
            optional: true
            doc: "Controls how damage manifests when inflicted on players. Defaults to `hurt`."
          - name: "death_message_type"
            type: "DeathMessageType"
            optional: true
            doc: "Controls if special death message variants are used. Defaults to `default`.\n\nFor more info see: https://minecraft.wiki/w/Damage_type#Death_messages"
      - name: "DataComponentExactPredicate"
        signature: "DataComponentExactPredicate()"
      - name: "DataComponentPatch"
        signature: "DataComponentPatch()"
      - name: "DataComponentPredicate"
        signature: "DataComponentPredicate()"
      - name: "DebugFunctionEntry"
        signature: "DebugFunctionEntry(label: string, function: DensityFunctionRef)"
        params:
          - name: "label"
            type: "string"
          - name: "function"
            type: "DensityFunctionRef"
      - name: "DecoratedPotPattern"
        signature: "DecoratedPotPattern(asset_id: texture id)"
        params:
          - name: "asset_id"
            type: "texture id"
      - name: "Dimension"
        signature: "Dimension(type: DimensionTypeRef, generator: ChunkGenerator)"
        params:
          - name: "type"
            type: "DimensionTypeRef"
          - name: "generator"
            type: "ChunkGenerator"
      - name: "DimensionType"
        signature: "DimensionType(has_skylight: bool, has_ceiling: bool, has_ender_dragon_fight: bool, coordinate_scale: float, ambient_light: float, logical_height: int, infiniburn: block id | [block id], min_y: int, height: int, monster_spawn_light_level: IntProvider, monster_spawn_block_light_limit: int, attributes?: EnvironmentAttributeMap, default_clock?: world_clock id, timelines?: timeline id | [timeline id], has_fixed_time?: bool, skybox?: SkyboxType, cardinal_light?: CardinalLightType)"
        params:
          - name: "has_skylight"
            type: "bool"
            doc: "Affects the weather, lighting engine and respawning rules."
          - name: "has_ceiling"
            type: "bool"
            doc: "Affects the weather, map items and respawning rules."
          - name: "has_ender_dragon_fight"
            type: "bool"
          - name: "coordinate_scale"
            type: "number 1e-05..3e+07"
          - name: "ambient_light"
            type: "number 0..1"
          - name: "logical_height"
            type: "int 0..4064"
            doc: "Portals can't spawn and chorus fruit can't teleport players above this height."
          - name: "infiniburn"
            type: "block id | #block tag | list of block ids"
            doc: "Defining what blocks keep fire infinitely burning."
          - name: "min_y"
            type: "int -2032..2031"
            doc: "The minimum height in which blocks can exist."
          - name: "height"
            type: "int 16..4064"
            doc: "The total height in which blocks can exist. Max Y = Min Y + Height."
          - name: "monster_spawn_light_level"
            type: "IntProvider of int 0..15"
          - name: "monster_spawn_block_light_limit"
            type: "int 0..15"
          - name: "attributes"
            type: "GlobalEnvironmentAttributeMap"
            optional: true
          - name: "default_clock"
            type: "world_clock id"
            optional: true
          - name: "timelines"
            type: "timeline id | #timeline tag | list of timeline ids"
            optional: true
          - name: "has_fixed_time"
            type: "bool"
            optional: true
            doc: "Defaults to `false`."
          - name: "skybox"
            type: "SkyboxType"
            optional: true
            doc: "Skybox type.\nDefaults to `overworld`."
          - name: "cardinal_light"
            type: "CardinalLightType"
            optional: true
            doc: "The direction of cardinal lighting that affects blocks."
      - name: "Dimensions"
        signature: "Dimensions(dimensions: object)"
        params:
          - name: "dimensions"
            type: "map of dimension id to Dimension"
      - name: "DistancePredicate"
        signature: "DistancePredicate(x?: MinMaxBounds, y?: MinMaxBounds, z?: MinMaxBounds, absolute?: MinMaxBounds, horizontal?: MinMaxBounds)"
        params:
          - name: "x"
            type: "MinMaxBounds of number"
            optional: true
          - name: "y"
            type: "MinMaxBounds of number"
            optional: true
          - name: "z"
            type: "MinMaxBounds of number"
            optional: true
          - name: "absolute"
            type: "MinMaxBounds of number"
            optional: true
          - name: "horizontal"
            type: "MinMaxBounds of number"
            optional: true
      - name: "Dyeable"
        signature: "Dyeable(color_when_undyed?: RGB)"
        params:
          - name: "color_when_undyed"
            type: "RGB"
            optional: true
            doc: "If the item is not dyed, this color is used instead. \\\nIf not specified and the item is not dyed, this layer will be hidden."
      - name: "Enchantment"
        signature: "Enchantment(description: Text, supported_items: item id | [item id], weight: int, max_level: int, min_cost: EnchantmentCost, max_cost: EnchantmentCost, anvil_cost: int, slots: [EquipmentSlotGroup], exclusive_set?: enchantment id | [enchantment id], primary_items?: item id | [item id], effects?: EnchantmentEffectComponentMap)"
        params:
          - name: "description"
            type: "Text"
          - name: "supported_items"
            type: "item id | #item tag | list of item ids"
          - name: "weight"
            type: "int 1..1024"
            doc: "How commonly the Enchantment appears, compared to the total combined `weight` of all available Enchantments."
          - name: "max_level"
            type: "int 1..255"
            doc: "Maximum level of the enchantment."
          - name: "min_cost"
            type: "EnchantmentCost"
            doc: "Minimum experience cost."
          - name: "max_cost"
            type: "EnchantmentCost"
            doc: "Maximum experience cost."
          - name: "anvil_cost"
            type: "int 0.."
            doc: "Halved when an Enchantment is added to a book.\nThe effective fee is multiplied by the level of the Enchantment."
          - name: "slots"
            type: "list of EquipmentSlotGroup"
          - name: "exclusive_set"
            type: "enchantment id | #enchantment tag | list of enchantment ids"
            optional: true
          - name: "primary_items"
            type: "item id | #item tag | list of item ids"
            optional: true
            doc: "Item types for which this Enchantment shows up in Enchanting Tables and on traded equipment.\n\nMust be a subset of `supported_items`."
          - name: "effects"
            type: "EnchantmentEffectComponentMap"
            optional: true
      - name: "EnchantmentCost"
        signature: "EnchantmentCost(base: int, per_level_above_first: int)"
        params:
          - name: "base"
            type: "int"
            doc: "Base cost at level 1."
          - name: "per_level_above_first"
            type: "int"
            doc: "Cost increase per level above 1."
      - name: "EnchantmentEffectComponentMap"
        signature: "EnchantmentEffectComponentMap()"
      - name: "EndSpike"
        signature: "EndSpike(centerX: int, centerZ: int, radius: int, height: int, guarded?: bool)"
        params:
          - name: "centerX"
            type: "int"
          - name: "centerZ"
            type: "int"
          - name: "radius"
            type: "int"
          - name: "height"
            type: "int"
          - name: "guarded"
            type: "bool"
            optional: true
      - name: "EntityEffectsPredicate"
        signature: "EntityEffectsPredicate()"
      - name: "EntitySubPredicateMap"
        signature: "EntitySubPredicateMap()"
      - name: "EnvironmentAttributeMap"
        signature: "EnvironmentAttributeMap()"
      - name: "EnvironmentAttributeTrackMap"
        signature: "EnvironmentAttributeTrackMap()"
      - name: "Equipment"
        signature: "Equipment(layers: Layers, trim_overrides?: [TrimOverride])"
        params:
          - name: "layers"
            type: "Layers"
            doc: "List of layers for each model layer type."
          - name: "trim_overrides"
            type: "list of TrimOverride"
            optional: true
            doc: "Replaces trim texture based on armor trim. \\\nOnly the first entry that matches is applied."
      - name: "ExclusionZone"
        signature: "ExclusionZone(other_set: StructureSetRef, chunk_count: int)"
        params:
          - name: "other_set"
            type: "StructureSetRef"
          - name: "chunk_count"
            type: "int 1..16"
      - name: "Explosion"
        signature: "Explosion(shape: FireworkShape, colors?: [int], fade_colors?: [int], has_trail?: bool, has_twinkle?: bool)"
        params:
          - name: "shape"
            type: "FireworkShape"
            doc: "The shape of the explosion."
          - name: "colors"
            type: "list of int"
            optional: true
            doc: "Colors of the initial particles of the explosion, randomly selected from.\nCalculated as `RED << 16 | GREEN << 8 | BLUE`. Each of these fields must be between 0 and 255, inclusive."
          - name: "fade_colors"
            type: "list of int"
            optional: true
            doc: "Colors of the fading particles of the explosion"
          - name: "has_trail"
            type: "bool"
            optional: true
            doc: "Added to a firework star via Diamond."
          - name: "has_twinkle"
            type: "bool"
            optional: true
            doc: "Added to a firework star via Glowstone Dust."
      - name: "ExplosionData"
        signature: "ExplosionData(fuse: int, power: int, causes_fire: bool)"
        params:
          - name: "fuse"
            type: "int 1.."
            doc: "The fuse time in ticks when ignited. \\\nWhen ignited by an explosion, the fuse will be a random value between `explosion_fuse / 8` and `3 * explosion_fuse / 8`."
          - name: "power"
            type: "int 0.."
            doc: "The explosion power."
          - name: "causes_fire"
            type: "bool"
            doc: "Whether the explosion causes fire."
      - name: "FilterPattern"
        signature: "FilterPattern(namespace?: string, path?: string)"
        params:
          - name: "namespace"
            type: "string"
            optional: true
          - name: "path"
            type: "string"
            optional: true
      - name: "FlatGeneratorLayer"
        signature: "FlatGeneratorLayer(height: int, block: block id)"
        params:
          - name: "height"
            type: "int 0..4096"
          - name: "block"
            type: "block id"
      - name: "FlatGeneratorPreset"
        signature: "FlatGeneratorPreset(display: item id, settings: FlatGeneratorSettings)"
        params:
          - name: "display"
            type: "item id"
          - name: "settings"
            type: "FlatGeneratorSettings"
      - name: "FlatGeneratorSettings"
        signature: "FlatGeneratorSettings(layers: [FlatGeneratorLayer], biome?: biome id, lakes?: bool, features?: bool, structure_overrides?: [structure_set id] | structure_set id)"
        params:
          - name: "layers"
            type: "list of FlatGeneratorLayer"
          - name: "biome"
            type: "biome id"
            optional: true
          - name: "lakes"
            type: "bool"
            optional: true
          - name: "features"
            type: "bool"
            optional: true
          - name: "structure_overrides"
            type: "structure_set id | #structure_set tag | list of structure_set ids"
            optional: true
      - name: "FlatWeightedEntry"
        signature: "FlatWeightedEntry(weight: int, type: entity_type id, count: IntProvider)"
        params:
          - name: "weight"
            type: "int 0.."
          - name: "type"
            type: "entity_type id"
          - name: "count"
            type: "IntProvider of int"
      - name: "FluidPredicate"
        signature: "FluidPredicate(fluids?: fluid id | [fluid id], state?: object)"
        params:
          - name: "fluids"
            type: "fluid id | #fluid tag | list of fluid ids"
            optional: true
          - name: "state"
            type: "map of string to MinMaxBounds of int | bool | string"
            optional: true
      - name: "Font"
        signature: "Font(providers: [GlyphProvider])"
        params:
          - name: "providers"
            type: "list of GlyphProvider"
      - name: "FrogVariant"
        signature: "FrogVariant(asset_id: texture id, spawn_conditions: [SpawnPrioritySelector])"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The frog texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
      - name: "FullBlockState"
        signature: "FullBlockState(id: block id, properties?: mcdoc:block_states[[id]])"
        params:
          - name: "id"
            type: "block id"
          - name: "properties"
            type: "any (depends on id)"
            optional: true
      - name: "GeodeBlockSettings"
        signature: "GeodeBlockSettings(filling_provider: BlockStateProviderRef, inner_layer_provider: BlockStateProviderRef, alternate_inner_layer_provider: BlockStateProviderRef, middle_layer_provider: BlockStateProviderRef, outer_layer_provider: BlockStateProviderRef, inner_placements: [BlockState], cannot_replace: block id | [block id], invalid_blocks: block id | [block id])"
        params:
          - name: "filling_provider"
            type: "BlockStateProviderRef"
          - name: "inner_layer_provider"
            type: "BlockStateProviderRef"
          - name: "alternate_inner_layer_provider"
            type: "BlockStateProviderRef"
          - name: "middle_layer_provider"
            type: "BlockStateProviderRef"
          - name: "outer_layer_provider"
            type: "BlockStateProviderRef"
          - name: "inner_placements"
            type: "list of BlockState (at least 1)"
          - name: "cannot_replace"
            type: "block id | #block tag | list of block ids"
            doc: "Blocks that will not be replaced by the geode."
          - name: "invalid_blocks"
            type: "block id | #block tag | list of block ids"
            doc: "When encountering an invalid block, feature placement is cancelled."
      - name: "GeodeCrackSettings"
        signature: "GeodeCrackSettings(generate_crack_chance?: float, base_crack_size?: float, crack_point_offset?: int)"
        params:
          - name: "generate_crack_chance"
            type: "number 0..1"
            optional: true
          - name: "base_crack_size"
            type: "number 0..5"
            optional: true
          - name: "crack_point_offset"
            type: "int 0..10"
            optional: true
      - name: "GeodeLayerSettings"
        signature: "GeodeLayerSettings(filling?: float, inner_layer?: float, middle_layer?: float, outer_layer?: float)"
        params:
          - name: "filling"
            type: "number 0.01..50"
            optional: true
          - name: "inner_layer"
            type: "number 0.01..50"
            optional: true
          - name: "middle_layer"
            type: "number 0.01..50"
            optional: true
          - name: "outer_layer"
            type: "number 0.01..50"
            optional: true
      - name: "Instrument"
        signature: "Instrument(sound_event: SoundEventRef, range: float, use_duration: float, description: Text, durability_damage?: int)"
        params:
          - name: "sound_event"
            type: "SoundEventRef"
          - name: "range"
            type: "number 0..<"
            doc: "Maximum range in blocks that the sound can be heard"
          - name: "use_duration"
            type: "number 0.."
            doc: "Duration of use in seconds, used as item cooldown"
          - name: "description"
            type: "Text"
          - name: "durability_damage"
            type: "int 0.."
            optional: true
      - name: "InternalTarget"
        signature: "InternalTarget(width?: int, height?: int, persistent?: bool, clear_color?: RGBA)"
        params:
          - name: "width"
            type: "int"
            optional: true
          - name: "height"
            type: "int"
            optional: true
          - name: "persistent"
            type: "bool"
            optional: true
            doc: "If `true`, target will be persistent across frames. Defaults to `false`.\nThe contents of the target will be cleared when the screen is resized."
          - name: "clear_color"
            type: "RGBA"
            optional: true
            doc: "Target will be filled with this color when created or cleared. Defaults to `0`."
      - name: "ItemDefinition"
        signature: "ItemDefinition(model: ItemModel, hand_animation_on_swap?: bool, oversized_in_gui?: bool, swap_animation_scale?: float)"
        params:
          - name: "model"
            type: "ItemModel"
          - name: "hand_animation_on_swap"
            type: "bool"
            optional: true
            doc: "Whether the down-and-up animation should be played in first-person view when the item stack is changed.\nDefaults to `true`."
          - name: "oversized_in_gui"
            type: "bool"
            optional: true
            doc: "Whether the item model is allowed to be bigger than its item slot.\nDefaults to `false`, which clips the item model in GUI to the item slot size.\nThe behavior of `true` is **not** officially supported."
          - name: "swap_animation_scale"
            type: "number"
            optional: true
            doc: "How fast the item moves up and down when swapping items in hotbar.\nDefaults to 1.0"
      - name: "ItemStackOfComponent"
        signature: "ItemStackOfComponent(id: item id, components?: DataComponentPatch, count?: int)"
        params:
          - name: "id"
            type: "item id"
            doc: "ID of the item."
          - name: "components"
            type: "DataComponentPatch"
            optional: true
          - name: "count"
            type: "int 1..99"
            optional: true
            doc: "Number of items in the stack.\nDefaults to `1`."
      - name: "ItemUesdOnLocationConditions"
        signature: "ItemUesdOnLocationConditions(player?: AdvancementEntityPredicate, location?: AdvancementLocationPredicate)"
        params:
          - name: "player"
            type: "AdvancementEntityPredicate"
            optional: true
            doc: "Predicate context: Advancement Entity."
          - name: "location"
            type: "AdvancementLocationPredicate"
            optional: true
            doc: "Predicate context: Advancement Location."
      - name: "JukeboxSong"
        signature: "JukeboxSong(description: Text, comparator_output: int, length_in_seconds: float, sound_event: SoundEventRef)"
        params:
          - name: "description"
            type: "Text"
            doc: "Displayed in the HUD actionbar & item tooltip."
          - name: "comparator_output"
            type: "int 0..15"
          - name: "length_in_seconds"
            type: "number 0..<"
          - name: "sound_event"
            type: "SoundEventRef"
      - name: "KnockbackModifiers"
        signature: "KnockbackModifiers(horizontal_power: float, vertical_power: float)"
        params:
          - name: "horizontal_power"
            type: "number"
            doc: "The horizontal power of the knockback."
          - name: "vertical_power"
            type: "number"
            doc: "The vertical power of the knockback."
      - name: "Lang"
        signature: "Lang()"
      - name: "Layer"
        signature: "Layer(texture: texture id, dyeable?: Dyeable)"
        params:
          - name: "texture"
            type: "texture id"
            doc: "Texture location for this layer, inside `entity/equipment/<layer>/`."
          - name: "dyeable"
            type: "Dyeable"
            optional: true
            doc: "If specified, this layer will be tinted by the color contained in the `dyed_color` component."
      - name: "Layers"
        signature: "Layers(humanoid?: [Layer], humanoid_leggings?: [Layer], humanoid_baby?: [Layer], wings?: [WingsLayer], wolf_body?: [Layer], horse_body?: [Layer], llama_body?: [Layer], happy_ghast_body?: [Layer], nautilus_saddle?: [Layer], nautilus_body?: [Layer], pig_saddle?: [Layer], strider_saddle?: [Layer], camel_husk_saddle?: [Layer], camel_saddle?: [Layer], horse_saddle?: [Layer], donkey_saddle?: [Layer], mule_saddle?: [Layer], zombie_horse_saddle?: [Layer], skeleton_horse_saddle?: [Layer])"
        params:
          - name: "humanoid"
            type: "list of Layer of texture id"
            optional: true
          - name: "humanoid_leggings"
            type: "list of Layer of texture id"
            optional: true
          - name: "humanoid_baby"
            type: "list of Layer of texture id"
            optional: true
          - name: "wings"
            type: "list of WingsLayer of texture id"
            optional: true
          - name: "wolf_body"
            type: "list of Layer of texture id"
            optional: true
          - name: "horse_body"
            type: "list of Layer of texture id"
            optional: true
          - name: "llama_body"
            type: "list of Layer of texture id"
            optional: true
          - name: "happy_ghast_body"
            type: "list of Layer of texture id"
            optional: true
          - name: "nautilus_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "nautilus_body"
            type: "list of Layer of texture id"
            optional: true
          - name: "pig_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "strider_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "camel_husk_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "camel_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "horse_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "donkey_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "mule_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "zombie_horse_saddle"
            type: "list of Layer of texture id"
            optional: true
          - name: "skeleton_horse_saddle"
            type: "list of Layer of texture id"
            optional: true
      - name: "Light"
        signature: "Light(light?: MinMaxBounds)"
        params:
          - name: "light"
            type: "MinMaxBounds of int 0..15"
            optional: true
      - name: "LocationPredicate"
        signature: "LocationPredicate(position?: object, biomes?: biome id | [biome id], structures?: structure id | [structure id], dimension?: dimension id, light?: object, block?: BlockPredicate, fluid?: FluidPredicate, smokey?: bool, can_see_sky?: bool)"
        params:
          - name: "position"
            type: "{ x?: MinMaxBounds of number, y?: MinMaxBounds of number, z?: MinMaxBounds of number }"
            optional: true
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
            optional: true
          - name: "structures"
            type: "structure id | #structure tag | list of structure ids"
            optional: true
          - name: "dimension"
            type: "dimension id"
            optional: true
          - name: "light"
            type: "Light(…)"
            optional: true
            doc: "Calculated using: `max(sky-darkening, block)`."
          - name: "block"
            type: "BlockPredicate"
            optional: true
          - name: "fluid"
            type: "FluidPredicate"
            optional: true
          - name: "smokey"
            type: "bool"
            optional: true
            doc: "Whether the block is above (5 blocks or less) a campfire or soul campfire."
          - name: "can_see_sky"
            type: "bool"
            optional: true
            doc: "Whether the location has the maximum possible level of sky light"
      - name: "LootPool"
        signature: "LootPool(rolls: IntNumberProviderRef, entries: [LootPoolEntry])"
        params:
          - name: "rolls"
            type: "IntNumberProviderRef"
          - name: "entries"
            type: "list of LootPoolEntry"
      - name: "LootTable"
        signature: "LootTable(type?: LootContextParamSets, pools?: [LootPool], modifier?: ItemModifier, random_sequence?: random_sequence id)"
        params:
          - name: "type"
            type: "LootContextParamSets"
            optional: true
          - name: "pools"
            type: "list of LootPool"
            optional: true
          - name: "modifier"
            type: "ItemModifier"
            optional: true
          - name: "random_sequence"
            type: "random_sequence id"
            optional: true
      - name: "MangroveRootPlacement"
        signature: "MangroveRootPlacement(max_root_width: int, max_root_length: int, random_skew_chance: float, can_grow_through: [block id] | block id, muddy_roots_in: [block id] | block id, muddy_roots_provider: BlockStateProviderRef)"
        params:
          - name: "max_root_width"
            type: "int 1..12"
          - name: "max_root_length"
            type: "int 1..64"
          - name: "random_skew_chance"
            type: "number 0..1"
          - name: "can_grow_through"
            type: "block id | #block tag | list of block ids"
          - name: "muddy_roots_in"
            type: "block id | #block tag | list of block ids"
          - name: "muddy_roots_provider"
            type: "BlockStateProviderRef"
      - name: "MobEffectPredicate"
        signature: "MobEffectPredicate(amplifier?: MinMaxBounds, duration?: MinMaxBounds, ambient?: bool, visible?: bool)"
        params:
          - name: "amplifier"
            type: "MinMaxBounds of int"
            optional: true
          - name: "duration"
            type: "MinMaxBounds of int"
            optional: true
          - name: "ambient"
            type: "bool"
            optional: true
          - name: "visible"
            type: "bool"
            optional: true
      - name: "Model"
        signature: "Model(parent?: model id, ambientocclusion?: bool, gui_light?: \"front\" | \"side\", textures?: object, elements?: [ModelElement], display?: object)"
        params:
          - name: "parent"
            type: "model id"
            optional: true
          - name: "ambientocclusion"
            type: "bool"
            optional: true
          - name: "gui_light"
            type: "\"front\" | \"side\""
            optional: true
          - name: "textures"
            type: "map of string to texture id | TextureMaterial"
            optional: true
          - name: "elements"
            type: "list of ModelElement"
            optional: true
          - name: "display"
            type: "map of CustomizableItemDisplayContext to { rotation?: list of number (exactly 3), translation?: list of number -80..80 (exactly 3), scale?: list of number -4..4 (exactly 3) }"
            optional: true
      - name: "ModelElement"
        signature: "ModelElement(from: [float], to: [float], faces: object, rotation?: ModelElementRotation, shade_direction_override?: Direction, light_emission?: int)"
        params:
          - name: "from"
            type: "list of number -16..32 (exactly 3)"
          - name: "to"
            type: "list of number -16..32 (exactly 3)"
          - name: "faces"
            type: "map of Direction to object"
          - name: "rotation"
            type: "ModelElementRotation"
            optional: true
          - name: "shade_direction_override"
            type: "Direction"
            optional: true
          - name: "light_emission"
            type: "int 0..15"
            optional: true
      - name: "ModelVariantBase"
        signature: "ModelVariantBase(model: ModelRef, x?: (0 | 90 | 180 | 270), y?: (0 | 90 | 180 | 270), z?: (0 | 90 | 180 | 270), uvlock?: bool)"
        params:
          - name: "model"
            type: "ModelRef"
          - name: "x"
            type: "0 | 90 | 180 | 270"
            optional: true
          - name: "y"
            type: "0 | 90 | 180 | 270"
            optional: true
          - name: "z"
            type: "0 | 90 | 180 | 270"
            optional: true
          - name: "uvlock"
            type: "bool"
            optional: true
            doc: "If set to `true`, the textures are not rotated with the block."
      - name: "MultiNoiseBiomeSourceParameterList"
        signature: "MultiNoiseBiomeSourceParameterList(preset: MultiNoisePreset)"
        params:
          - name: "preset"
            type: "MultiNoisePreset"
      - name: "Multipart"
        signature: "Multipart(multipart: [object])"
        params:
          - name: "multipart"
            type: "list of { when?: MultiPartCondition, apply: ModelVariant }"
      - name: "NoiseGeneratorSettings"
        signature: "NoiseGeneratorSettings(default_block: BlockState, default_fluid: BlockState, sea_level: int, disable_mob_generation: bool, legacy_random_source: bool, noise: NoiseSettings, noise_router: NoiseRouter, spawn_target: [SpawnTargetPoint], material_rule: MaterialRuleRef, aquifers?: Aquifer, debug_functions?: [DebugFunctionEntry])"
        params:
          - name: "default_block"
            type: "BlockState"
          - name: "default_fluid"
            type: "BlockState"
          - name: "sea_level"
            type: "int"
          - name: "disable_mob_generation"
            type: "bool"
            doc: "If true, mobs will not spawn during generation."
          - name: "legacy_random_source"
            type: "bool"
          - name: "noise"
            type: "NoiseSettings"
          - name: "noise_router"
            type: "NoiseRouter"
          - name: "spawn_target"
            type: "list of SpawnTargetPoint"
          - name: "material_rule"
            type: "MaterialRuleRef"
          - name: "aquifers"
            type: "Aquifer"
            optional: true
          - name: "debug_functions"
            type: "list of DebugFunctionEntry"
            optional: true
      - name: "NoiseParameters"
        signature: "NoiseParameters(base_octave: int, base_amplitude?: float, octave_count?: int, normalize?: bool | \"legacy\", amplitude_modifiers?: [float])"
        params:
          - name: "base_octave"
            type: "int -32..32"
          - name: "base_amplitude"
            type: "number 0..1e+06"
            optional: true
            doc: "Defaults to 1.0."
          - name: "octave_count"
            type: "int 1..32"
            optional: true
            doc: "Defaults to 1."
          - name: "normalize"
            type: "bool | \"legacy\""
            optional: true
            doc: "Defaults to `true`."
          - name: "amplitude_modifiers"
            type: "list of number 0..1e+06 (at most 32)"
            optional: true
            doc: "When empty or not present, defaults to all 1.0. \\\nOtherwise, the size must match `octave_count`."
      - name: "NoiseRouter"
        signature: "NoiseRouter(temperature: DensityFunctionRef, vegetation: DensityFunctionRef, continents: DensityFunctionRef, erosion: DensityFunctionRef, depth: DensityFunctionRef, ridges: DensityFunctionRef, chunk_surface_level: DensityFunctionRef, final_density: DensityFunctionRef)"
        params:
          - name: "temperature"
            type: "DensityFunctionRef"
          - name: "vegetation"
            type: "DensityFunctionRef"
          - name: "continents"
            type: "DensityFunctionRef"
          - name: "erosion"
            type: "DensityFunctionRef"
          - name: "depth"
            type: "DensityFunctionRef"
          - name: "ridges"
            type: "DensityFunctionRef"
          - name: "chunk_surface_level"
            type: "DensityFunctionRef"
          - name: "final_density"
            type: "DensityFunctionRef"
      - name: "NoiseSettings"
        signature: "NoiseSettings(min_y: int, height: int)"
        params:
          - name: "min_y"
            type: "int -2048..2047"
            doc: "Minimum height where blocks start generating."
          - name: "height"
            type: "int 0..4096"
            doc: "The total height where blocks can generate. Max Y = Min Y + Height."
      - name: "OR"
        signature: "OR(OR: [MultiPartCondition])"
        params:
          - name: "OR"
            type: "list of MultiPartCondition"
      - name: "Option"
        signature: "Option(id: string, display?: Text, initial?: bool)"
        params:
          - name: "id"
            type: "string"
            doc: "String to send on submit."
          - name: "display"
            type: "Text"
            optional: true
            doc: "Label displayed on the button.\nWhen not present, `id` will be used instead."
          - name: "initial"
            type: "bool"
            optional: true
            doc: "Whether this option is the initial value.\nOnly one option can have this field set to `true`."
      - name: "PaintingVariant"
        signature: "PaintingVariant(asset_id: texture id, width: int, height: int, title?: Text, author?: Text)"
        params:
          - name: "asset_id"
            type: "texture id"
          - name: "width"
            type: "int 1..16"
            doc: "Dimension in blocks."
          - name: "height"
            type: "int 1..16"
            doc: "Dimension in blocks."
          - name: "title"
            type: "Text"
            optional: true
          - name: "author"
            type: "Text"
            optional: true
      - name: "Particle"
        signature: "Particle(textures: [texture id])"
        params:
          - name: "textures"
            type: "list of texture ids"
      - name: "PigVariant"
        signature: "PigVariant(asset_id: texture id, baby_asset_id: texture id, spawn_conditions: [SpawnPrioritySelector], model?: PigModelType)"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The pig texture to use for this variant."
          - name: "baby_asset_id"
            type: "texture id"
            doc: "The baby pig texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
          - name: "model"
            type: "PigModelType"
            optional: true
      - name: "PlacedFeature"
        signature: "PlacedFeature(feature: ConfiguredFeatureRef, placement: [PlacementModifier])"
        params:
          - name: "feature"
            type: "ConfiguredFeatureRef"
          - name: "placement"
            type: "list of PlacementModifier"
      - name: "PlainMessage"
        signature: "PlainMessage(contents: Text, width?: int)"
        params:
          - name: "contents"
            type: "Text"
            doc: "A multiline label.\nClick events in the text trigger `after_action` like any other action."
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Maximum width of message.\nDefaults to 200."
      - name: "Player"
        signature: "Player(player?: AdvancementEntityPredicate)"
        params:
          - name: "player"
            type: "AdvancementEntityPredicate"
            optional: true
            doc: "Predicate context: Advancement Entity."
      - name: "PlayerConditions"
        signature: "PlayerConditions(player?: AdvancementEntityPredicate)"
        params:
          - name: "player"
            type: "AdvancementEntityPredicate"
            optional: true
            doc: "Predicate context: Advancement Entity."
      - name: "Pool"
        signature: "Pool(rolls: IntNumberProviderRef, entries: [LootPoolEntry])"
        params:
          - name: "rolls"
            type: "IntNumberProviderRef"
          - name: "entries"
            type: "list of LootPoolEntry"
      - name: "PostEffect"
        signature: "PostEffect(targets?: Targets, passes?: [Pass])"
        params:
          - name: "targets"
            type: "Targets"
            optional: true
          - name: "passes"
            type: "list of Pass"
            optional: true
      - name: "PotionIngredient"
        signature: "PotionIngredient(item: Ingredient, potion_contents?: PotionsPredicate)"
        params:
          - name: "item"
            type: "Ingredient"
          - name: "potion_contents"
            type: "PotionsPredicate"
            optional: true
      - name: "PotionsPredicate"
        signature: "PotionsPredicate(potions?: PotionTypeMatch, effects?: CollectionPredicate)"
        params:
          - name: "potions"
            type: "PotionTypeMatch"
            optional: true
          - name: "effects"
            type: "CollectionPredicate of EntityEffectsPredicate"
            optional: true
      - name: "Preset"
        signature: "Preset(preset: MultiNoisePreset)"
        params:
          - name: "preset"
            type: "MultiNoisePreset"
      - name: "ProcessorRule"
        signature: "ProcessorRule(location_predicate: RuleTest, input_predicate: RuleTest, output_state: BlockState, position_predicate?: PosRuleTest, block_entity_modifier?: BlockEntityModifier)"
        params:
          - name: "location_predicate"
            type: "RuleTest"
          - name: "input_predicate"
            type: "RuleTest"
          - name: "output_state"
            type: "BlockState"
          - name: "position_predicate"
            type: "PosRuleTest"
            optional: true
          - name: "block_entity_modifier"
            type: "BlockEntityModifier"
            optional: true
      - name: "Processors"
        signature: "Processors(processors: [Processor])"
        params:
          - name: "processors"
            type: "list of Processor"
      - name: "ProfileProperty"
        signature: "ProfileProperty(name: string, value: string, signature?: string)"
        params:
          - name: "name"
            type: "string (0 to 64)"
            doc: "Usually `textures`."
          - name: "value"
            type: "string (0 to 32767)"
            doc: "Base64 encoded JSON value of the texture index."
          - name: "signature"
            type: "string (0 to 1024)"
            optional: true
            doc: "Verifies the hash of the resulting texture."
      - name: "ProfilePropertyMap"
        signature: "ProfilePropertyMap()"
      - name: "Providers"
        signature: "Providers(providers: [GlyphProvider])"
        params:
          - name: "providers"
            type: "list of GlyphProvider"
      - name: "RelativeToSeaLevel"
        signature: "RelativeToSeaLevel(relative_to_sea_level: int)"
        params:
          - name: "relative_to_sea_level"
            type: "int"
      - name: "RuinedPortalSetup"
        signature: "RuinedPortalSetup(placement: RuinedPortalPlacement, air_pocket_probability: float, mossiness: float, overgrown: bool, vines: bool, can_be_cold: bool, replace_with_blackstone: bool, weight: float)"
        params:
          - name: "placement"
            type: "RuinedPortalPlacement"
          - name: "air_pocket_probability"
            type: "number 0..1"
          - name: "mossiness"
            type: "number 0..1"
          - name: "overgrown"
            type: "bool"
          - name: "vines"
            type: "bool"
          - name: "can_be_cold"
            type: "bool"
          - name: "replace_with_blackstone"
            type: "bool"
          - name: "weight"
            type: "number 0.."
      - name: "SoundSettings"
        signature: "SoundSettings(hit_sound: SoundEventRef, push_sound: SoundEventRef, push_sound_impulse_threshold: float, push_sound_cooldown: float)"
        params:
          - name: "hit_sound"
            type: "SoundEventRef"
          - name: "push_sound"
            type: "SoundEventRef"
          - name: "push_sound_impulse_threshold"
            type: "number"
            doc: "Minimum impact speed required to trigger the sound."
          - name: "push_sound_cooldown"
            type: "number"
            doc: "Cooldown in seconds for the sound effect."
      - name: "SoundVariant"
        signature: "SoundVariant(adult_sounds: CatSounds, baby_sounds: CatSounds)"
        params:
          - name: "adult_sounds"
            type: "CatSounds"
          - name: "baby_sounds"
            type: "CatSounds"
      - name: "Sources"
        signature: "Sources(sources: [SpriteSource])"
        params:
          - name: "sources"
            type: "list of SpriteSource"
            doc: "List of sprite sources which can add or remove sprite textures to this atlas."
      - name: "SpawnOverride"
        signature: "SpawnOverride(bounding_box: BoundingBox, spawns: FlatWeightedList)"
        params:
          - name: "bounding_box"
            type: "BoundingBox"
          - name: "spawns"
            type: "FlatWeightedList of SpawnerData"
      - name: "SpawnPrioritySelector"
        signature: "SpawnPrioritySelector(priority: int, condition?: SpawnCondition)"
        params:
          - name: "priority"
            type: "int"
            doc: "The spawn priority to use."
          - name: "condition"
            type: "SpawnCondition"
            optional: true
            doc: "The spawn condition to check. If not present, the condition always matches."
      - name: "SpawnTargetPoint"
        signature: "SpawnTargetPoint()"
      - name: "SplinePoint"
        signature: "SplinePoint(location: float, derivative: float, value: CubicSpline)"
        params:
          - name: "location"
            type: "number"
          - name: "derivative"
            type: "number"
          - name: "value"
            type: "CubicSpline"
      - name: "StewEffect"
        signature: "StewEffect(type: mob_effect id, duration: IntNumberProviderRef)"
        params:
          - name: "type"
            type: "mob_effect id"
            doc: "The status effect of this stew effect."
          - name: "duration"
            type: "IntNumberProviderRef"
            doc: "The duration of this stew effect, in seconds."
      - name: "StructureSet"
        signature: "StructureSet(structures: [StructureSetElement], placement: StructurePlacement)"
        params:
          - name: "structures"
            type: "list of StructureSetElement"
          - name: "placement"
            type: "StructurePlacement"
      - name: "StructureSetElement"
        signature: "StructureSetElement(structure: structure id, weight: int)"
        params:
          - name: "structure"
            type: "structure id"
          - name: "weight"
            type: "int 1.."
      - name: "SulfurCubeArchetype"
        signature: "SulfurCubeArchetype(items: item id | [item id], knockback_modifiers: KnockbackModifiers, attribute_modifiers: [AttributeEntry], sound_settings: SoundSettings, buoyant?: bool, explosion?: ExplosionData, contact_damage?: ContactDamage)"
        params:
          - name: "items"
            type: "item id | #item tag | list of item ids"
          - name: "knockback_modifiers"
            type: "KnockbackModifiers"
          - name: "attribute_modifiers"
            type: "list of AttributeEntry"
          - name: "sound_settings"
            type: "SoundSettings"
          - name: "buoyant"
            type: "bool"
            optional: true
            doc: "Defaults to `false`."
          - name: "explosion"
            type: "ExplosionData"
            optional: true
            doc: "When present, sulfur cube with this archetype will explode when ignited."
          - name: "contact_damage"
            type: "ContactDamage"
            optional: true
      - name: "TargetBlock"
        signature: "TargetBlock(target: RuleTest, state: BlockState)"
        params:
          - name: "target"
            type: "RuleTest"
          - name: "state"
            type: "BlockState"
      - name: "TargetInput"
        signature: "TargetInput(target: shader_target id, sampler_name: string, use_depth_buffer?: bool, bilinear?: bool)"
        params:
          - name: "target"
            type: "shader_target id"
          - name: "sampler_name"
            type: "string"
          - name: "use_depth_buffer"
            type: "bool"
            optional: true
          - name: "bilinear"
            type: "bool"
            optional: true
      - name: "Targets"
        signature: "Targets()"
      - name: "TemplatePool"
        signature: "TemplatePool(fallback: template_pool id, elements: [WeightedElement], name?: string)"
        params:
          - name: "fallback"
            type: "template_pool id"
          - name: "elements"
            type: "list of WeightedElement"
          - name: "name"
            type: "string"
            optional: true
      - name: "TextStyle"
        signature: "TextStyle(color?: string | TextColor, shadow_color?: RGBA, font?: font id, bold?: bool, italic?: bool, underlined?: bool, strikethrough?: bool, obfuscated?: bool, insertion?: string, click_event?: ClickEvent, hover_event?: HoverEvent)"
        params:
          - name: "color"
            type: "string | TextColor"
            optional: true
          - name: "shadow_color"
            type: "RGBA"
            optional: true
            doc: "Overrides the shadow properties of the text.\nIf specified as 0, the shadow will never be displayed."
          - name: "font"
            type: "font id"
            optional: true
          - name: "bold"
            type: "bool"
            optional: true
          - name: "italic"
            type: "bool"
            optional: true
          - name: "underlined"
            type: "bool"
            optional: true
          - name: "strikethrough"
            type: "bool"
            optional: true
          - name: "obfuscated"
            type: "bool"
            optional: true
          - name: "insertion"
            type: "string"
            optional: true
          - name: "click_event"
            type: "ClickEvent"
            optional: true
          - name: "hover_event"
            type: "HoverEvent"
            optional: true
      - name: "TextureInput"
        signature: "TextureInput(location: texture id, sampler_name: string, width: int, height: int, bilinear?: bool)"
        params:
          - name: "location"
            type: "texture id"
          - name: "sampler_name"
            type: "string"
          - name: "width"
            type: "int 1.."
          - name: "height"
            type: "int 1.."
          - name: "bilinear"
            type: "bool"
            optional: true
      - name: "TextureMaterial"
        signature: "TextureMaterial(sprite: texture id, force_translucent?: bool)"
        params:
          - name: "sprite"
            type: "texture id"
          - name: "force_translucent"
            type: "bool"
            optional: true
            doc: "Whether the texture should be forced into the translucent render pass. \\\nTextures without any translucent pixels are not assigned to the translucent pass by default. \\\nDefaults to `false`."
      - name: "Textures"
        signature: "Textures(textures: [texture id])"
        params:
          - name: "textures"
            type: "list of texture ids"
      - name: "TimeMarker"
        signature: "TimeMarker(ticks: int, show_in_commands?: bool)"
        params:
          - name: "ticks"
            type: "int 0.."
          - name: "show_in_commands"
            type: "bool"
            optional: true
            doc: "Whether the time marker shows up in command suggestions. \\\nThe time marker is still available in commands even if it is not suggested. \\\nDefaults to `false`."
      - name: "TimeMarkerMap"
        signature: "TimeMarkerMap()"
      - name: "Timeline"
        signature: "Timeline(clock: world_clock id, period_ticks?: int, time_markers?: TimeMarkerMap, tracks?: EnvironmentAttributeTrackMap)"
        params:
          - name: "clock"
            type: "world_clock id"
            doc: "The world clock this timeline is tied to."
          - name: "period_ticks"
            type: "int 1.."
            optional: true
            doc: "When not present, the timeline will not repeat."
          - name: "time_markers"
            type: "TimeMarkerMap"
            optional: true
          - name: "tracks"
            type: "EnvironmentAttributeTrackMap"
            optional: true
      - name: "TradeCost"
        signature: "TradeCost(id: item id, components?: DataComponentExactPredicate, count?: IntNumberProvider)"
        params:
          - name: "id"
            type: "item id"
            doc: "ID of the item."
          - name: "components"
            type: "DataComponentExactPredicate"
            optional: true
          - name: "count"
            type: "IntNumberProvider"
            optional: true
            doc: "Defaults to `1`."
      - name: "TradeSet"
        signature: "TradeSet(trades: villager_trade id | [villager_trade id], amount: IntNumberProvider, allow_duplicates?: bool, random_sequence?: random_sequence id)"
        params:
          - name: "trades"
            type: "villager_trade id | #villager_trade tag | list of villager_trade ids"
            doc: "Possible trade generators."
          - name: "amount"
            type: "IntNumberProvider"
            doc: "Amount of trades to be generated."
          - name: "allow_duplicates"
            type: "bool"
            optional: true
            doc: "Whether the trade set can use the same generator multiple times and generate duplicate trades.\nDefaults to `false`."
          - name: "random_sequence"
            type: "random_sequence id"
            optional: true
      - name: "TransmuteResult"
        signature: "TransmuteResult(id?: item id, count?: int, components?: DataComponentPatch)"
        params:
          - name: "id"
            type: "item id"
            optional: true
            doc: "Defaults to the input item."
          - name: "count"
            type: "int 1..99"
            optional: true
            doc: "Defaults to `1`."
          - name: "components"
            type: "DataComponentPatch"
            optional: true
      - name: "TrialSpawnerConfig"
        signature: "TrialSpawnerConfig(spawn_range?: int, total_mobs?: float, total_mobs_added_per_player?: float, simultaneous_mobs?: float, simultaneous_mobs_added_per_player?: float, ticks_between_spawn?: int, spawn_potentials?: [SpawnPotential], loot_tables_to_eject?: WeightedList, items_to_drop_when_ominous?: loot_table id)"
        params:
          - name: "spawn_range"
            type: "int 1..128"
            optional: true
            doc: "Maximum distance from the spawner that en entity can spawn"
          - name: "total_mobs"
            type: "number"
            optional: true
            doc: "Total amount of entities that are spawned during one activation, when 1 player is nearby"
          - name: "total_mobs_added_per_player"
            type: "number"
            optional: true
            doc: "Number added to `total_mobs` for each additional player"
          - name: "simultaneous_mobs"
            type: "number"
            optional: true
            doc: "Number of entities that that can be present at once, when 1 player is nearby"
          - name: "simultaneous_mobs_added_per_player"
            type: "number"
            optional: true
            doc: "Number added to `simultaneous_mobs` for each additional player"
          - name: "ticks_between_spawn"
            type: "int"
            optional: true
            doc: "Ticks until the next spawn."
          - name: "spawn_potentials"
            type: "list of SpawnPotential"
            optional: true
            doc: "Entities that can be placed."
          - name: "loot_tables_to_eject"
            type: "WeightedList of loot_table id"
            optional: true
            doc: "Loot tables to use when ejecting loot. Chooses one loot table based on weight and then uses it as often as there are players nearby."
          - name: "items_to_drop_when_ominous"
            type: "loot_table id"
            optional: true
            doc: "Loot table to use when summoning ominous item spawners. One roll seeded based on rough location to determine all items used during the battle."
      - name: "TrimMaterial"
        signature: "TrimMaterial(palette_id: PaletteRef, description: Text)"
        params:
          - name: "palette_id"
            type: "PaletteRef"
            doc: "Palette ID which will be used in the resource pack."
          - name: "description"
            type: "Text"
            doc: "Text displayed in the item tooltip."
      - name: "TrimOverride"
        signature: "TrimOverride(when: object, texture?: string, palette?: PaletteRef)"
        params:
          - name: "when"
            type: "{ pattern?: trim_pattern id, material?: trim_material id }"
          - name: "texture"
            type: "id"
            optional: true
            doc: "When present, overrides the base texture provided by trim pattern. \\\nThe texture is located under `trims/entity/<layer>/`."
          - name: "palette"
            type: "PaletteRef"
            optional: true
            doc: "When present, overrides the palette texture provided by trim material."
      - name: "TrimPattern"
        signature: "TrimPattern(asset_id: string, description: Text, decal?: bool)"
        params:
          - name: "asset_id"
            type: "id"
            doc: "ID of the pattern that will be used in the resource pack as an overlay on the armor. \\\nThe texture is located under `trims/entity/<layer>/`."
          - name: "description"
            type: "Text"
            doc: "Text displayed in the item tooltip."
          - name: "decal"
            type: "bool"
            optional: true
            doc: "Whether the pattern texture will be masked based on the underlying armor. Defaults to `false`."
      - name: "UniformBlocks"
        signature: "UniformBlocks()"
      - name: "UniformIntProvider"
        signature: "UniformIntProvider(min_inclusive: int, max_inclusive: int)"
        params:
          - name: "min_inclusive"
            type: "int -16..0"
          - name: "max_inclusive"
            type: "int -16..0"
      - name: "UniformValue"
        signature: "UniformValue(type: UniformValueType, value: value, name?: string)"
        params:
          - name: "type"
            type: "UniformValueType"
          - name: "value"
            type: "any (depends on type)"
          - name: "name"
            type: "string"
            optional: true
            doc: "Unused by the game, but good to set in practice."
      - name: "UnihexOverrideRange"
        signature: "UnihexOverrideRange(from: string, to: string, left: int, right: int)"
        params:
          - name: "from"
            type: "string"
            doc: "Minimum in codepoint range (inclusive)."
          - name: "to"
            type: "string"
            doc: "Maximum in codepoint range (inclusive)."
          - name: "left"
            type: "int 0..255"
            doc: "Position of left-most column of the glyph."
          - name: "right"
            type: "int 0..255"
            doc: "Position of right-most column of the glyph."
      - name: "UnstitchRegion"
        signature: "UnstitchRegion(sprite: texture id, x: float, y: float, width: float, height: float)"
        params:
          - name: "sprite"
            type: "texture id"
          - name: "x"
            type: "number"
          - name: "y"
            type: "number"
          - name: "width"
            type: "number"
          - name: "height"
            type: "number"
      - name: "Variants"
        signature: "Variants(variants: object)"
        params:
          - name: "variants"
            type: "map of string to ModelVariant"
      - name: "VillagerTrade"
        signature: "VillagerTrade(wants: TradeCost, gives: ItemStackTemplate, additional_wants?: TradeCost, given_item_modifier?: ItemModifierWithoutRootRef, max_uses?: IntNumberProvider, reputation_discount?: FloatNumberProvider, xp?: IntNumberProvider, merchant_predicate?: Predicate, double_trade_price_enchantments?: enchantment id | [enchantment id])"
        params:
          - name: "wants"
            type: "TradeCost"
            doc: "Price item required by the merchant. \\\nThe count is affected by various factors, including offered item, demand and player reputation."
          - name: "gives"
            type: "ItemStackTemplate"
            doc: "Item being offered by the merchant."
          - name: "additional_wants"
            type: "TradeCost"
            optional: true
            doc: "Second item required by the merchant. \\\nThe count is not affected by any factors."
          - name: "given_item_modifier"
            type: "ItemModifierWithoutRootRef"
            optional: true
            doc: "Modifiers applied to the `gives` item. \\\nDoes **not** support `reference` item modifier. \\\nSome modifiers can affect the price through the `additional_trade_cost` transient component. \\\nThe `additional_trade_cost` component is not saved on the offered item.\n\nID reference is not allowed here."
          - name: "max_uses"
            type: "IntNumberProvider"
            optional: true
            doc: "Maximum number of uses of this trade before the villager has to restock. Defaults to `4`."
          - name: "reputation_discount"
            type: "FloatNumberProvider"
            optional: true
            doc: "How much demand & reputation each affect the price, is serialized as `priceMultiplier`. Defaults to `0.0`."
          - name: "xp"
            type: "IntNumberProvider"
            optional: true
            doc: "Amount to increase the merchant's XP score by that determines their trade tier. Defaults to `1`."
          - name: "merchant_predicate"
            type: "Predicate"
            optional: true
            doc: "Check whether the trade should be offered by the merchant. \\\nDoes **not** support the `reference` predicate."
          - name: "double_trade_price_enchantments"
            type: "enchantment id | #enchantment tag | list of enchantment ids"
            optional: true
            doc: "If the offered enchanted book has the specified enchantments, the price will be affected by doubling the `additional_trade_cost` transient component."
      - name: "WaypointStyle"
        signature: "WaypointStyle(sprites: [texture id], near_distance?: int, far_distance?: int)"
        params:
          - name: "sprites"
            type: "list of texture ids (at least 1)"
          - name: "near_distance"
            type: "int 0..6e+07"
            optional: true
            doc: "Defaults to 128."
          - name: "far_distance"
            type: "int 0..6e+07"
            optional: true
            doc: "Defaults to 322."
      - name: "WeightedElement"
        signature: "WeightedElement(weight: int, element: Element)"
        params:
          - name: "weight"
            type: "int 1..150"
          - name: "element"
            type: "Element"
      - name: "WeightedEntry"
        signature: "WeightedEntry(weight: int, data: FloatRef)"
        params:
          - name: "weight"
            type: "int 0.."
          - name: "data"
            type: "FloatRef"
      - name: "WingsLayer"
        signature: "WingsLayer(texture: texture id, dyeable?: Dyeable, use_player_texture?: bool)"
        params:
          - name: "texture"
            type: "texture id"
            doc: "Texture location for this layer, inside `entity/equipment/<layer>/`."
          - name: "dyeable"
            type: "Dyeable"
            optional: true
            doc: "If specified, this layer will be tinted by the color contained in the `dyed_color` component."
          - name: "use_player_texture"
            type: "bool"
            optional: true
            doc: "Whether this layer texture should be overridden by the player's custom elytra texture. \\\nDefaults to `false`."
      - name: "WolfVariant"
        signature: "WolfVariant(assets: WolfVariantAssetInfo, baby_assets: WolfVariantAssetInfo, spawn_conditions: [SpawnPrioritySelector])"
        params:
          - name: "assets"
            type: "WolfVariantAssetInfo"
            doc: "The texture set to use for this wolf variant."
          - name: "baby_assets"
            type: "WolfVariantAssetInfo"
            doc: "The baby texture set to use for this wolf variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
      - name: "WolfVariantAssetInfo"
        signature: "WolfVariantAssetInfo(wild: texture id, tame: texture id, angry: texture id)"
        params:
          - name: "wild"
            type: "texture id"
          - name: "tame"
            type: "texture id"
          - name: "angry"
            type: "texture id"
      - name: "WorldPreset"
        signature: "WorldPreset(dimensions: object)"
        params:
          - name: "dimensions"
            type: "map of dimension id to Dimension"
      - name: "ZombieNautilusVariant"
        signature: "ZombieNautilusVariant(asset_id: texture id, spawn_conditions: [SpawnPrioritySelector], model?: ZombieNautilusModelType)"
        params:
          - name: "asset_id"
            type: "texture id"
            doc: "The zombie nautilus texture to use for this variant."
          - name: "spawn_conditions"
            type: "list of SpawnPrioritySelector"
            doc: "The spawn conditions for this variant. Selection process:\n- Conditions for all variants for the given entity type are evaluated for the spawn position\n- Entries with a priority lower than the maximum priority of the remaining entries are removed\n- A random entry is picked out of the remaining ones\n- If no conditions are remaining, the variant remains unchanged from the default"
          - name: "model"
            type: "ZombieNautilusModelType"
            optional: true
  - group: "Biome source"
    dispatcher: "minecraft:biome_source"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/biome_source"
    helpers:
      - name: "Checkerboard"
        makes: "minecraft:checkerboard"
        signature: "Checkerboard(biomes: [biome id] | biome id, scale?: int)"
        doc: "Biomes in a checkerboard of square tiles, repeating the list in order."
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
            doc: "The biomes, in order."
          - name: "scale"
            type: "int 0..62"
            optional: true
            doc: "Tile size: each tile is 2^(scale + 2) blocks across. From 0 to 62; defaults to 2."
      - name: "Fixed"
        makes: "minecraft:fixed"
        signature: "Fixed(biome: biome id)"
        doc: "The same biome everywhere."
        params:
          - name: "biome"
            type: "biome id"
            doc: "The biome."
      - name: "MultiNoise"
        makes: "minecraft:multi_noise"
        signature: "MultiNoise(preset?: multi_noise_biome_source_parameter_list id)"
        doc: "Picks biomes by climate noise, as the overworld and nether do. `preset` uses vanilla's tables; otherwise list biomes with their climate parameters."
        params:
          - name: "preset"
            type: "multi_noise_biome_source_parameter_list id"
            optional: true
      - name: "TheEnd"
        makes: "minecraft:the_end"
        signature: "TheEnd()"
        doc: "The End's biomes: the central island, highlands, midlands, small islands and barrens."
  - group: "Block predicate"
    dispatcher: "minecraft:block_predicate"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/block_predicate"
    helpers:
      - name: "AllOf"
        makes: "minecraft:all_of"
        signature: "AllOf(predicates: [BlockPredicate])"
        doc: "Passes when every predicate passes."
        params:
          - name: "predicates"
            type: "list of BlockPredicate"
      - name: "AnyOf"
        makes: "minecraft:any_of"
        signature: "AnyOf(predicates: [BlockPredicate])"
        doc: "Passes when any predicate passes."
        params:
          - name: "predicates"
            type: "list of BlockPredicate"
      - name: "HasSturdyFace"
        makes: "minecraft:has_sturdy_face"
        signature: "HasSturdyFace(direction: Direction, offset?: [int])"
        doc: "Passes when the block has a full face on one side."
        params:
          - name: "direction"
            type: "Direction"
            doc: "The side to check."
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
      - name: "HeightRange"
        makes: "minecraft:height_range"
        signature: "HeightRange(min_inclusive: VerticalAnchor, max_inclusive: VerticalAnchor)"
        params:
          - name: "min_inclusive"
            type: "VerticalAnchor"
          - name: "max_inclusive"
            type: "VerticalAnchor"
      - name: "InsideWorldBounds"
        makes: "minecraft:inside_world_bounds"
        signature: "InsideWorldBounds(offset?: [int])"
        doc: "Passes when the block is inside the world's height limits."
        params:
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
      - name: "MatchingBiomes"
        makes: "minecraft:matching_biomes"
        signature: "MatchingBiomes(biomes: biome id | [biome id])"
        doc: "Passes when the block's biome is one of these."
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
      - name: "MatchingBlockTag"
        makes: "minecraft:matching_block_tag"
        signature: "MatchingBlockTag(tag: block id, offset?: [int])"
        doc: "Passes when the block is in a block tag."
        params:
          - name: "tag"
            type: "block id | #block tag"
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
      - name: "MatchingBlocks"
        makes: "minecraft:matching_blocks"
        signature: "MatchingBlocks(blocks: [block id] | block id, offset?: [int])"
        doc: "Passes when the block is one of these."
        params:
          - name: "blocks"
            type: "block id | #block tag | list of block ids"
            doc: "The blocks that pass."
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
      - name: "MatchingFluids"
        makes: "minecraft:matching_fluids"
        signature: "MatchingFluids(fluids: [fluid id] | fluid id, offset?: [int])"
        doc: "Passes when the fluid at the block is one of these."
        params:
          - name: "fluids"
            type: "fluid id | #fluid tag | list of fluid ids"
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
      - name: "Not"
        makes: "minecraft:not"
        signature: "Not(predicate: BlockPredicate)"
        doc: "Passes when `predicate` fails."
        params:
          - name: "predicate"
            type: "BlockPredicate"
      - name: "Replaceable"
        makes: "minecraft:replaceable"
        signature: "Replaceable()"
        doc: "Passes when the block can be replaced, as air, water and grass can."
      - name: "Solid"
        makes: "minecraft:solid"
        signature: "Solid()"
        doc: "Passes when the block is solid."
      - name: "True"
        makes: "minecraft:true"
        signature: "True()"
        doc: "Always passes."
      - name: "Unobstructed"
        makes: "minecraft:unobstructed"
        signature: "Unobstructed(offset?: [int])"
        doc: "Passes when no entity is in the way of the block."
        params:
          - name: "offset"
            type: "list of int (exactly 3)"
            optional: true
      - name: "VolumeMatch"
        makes: "minecraft:volume_match"
        signature: "VolumeMatch(min: [int], max: [int], match: BlockPredicate)"
        params:
          - name: "min"
            type: "list of int -16..16 (exactly 3)"
          - name: "max"
            type: "list of int -16..16 (exactly 3)"
          - name: "match"
            type: "BlockPredicate"
      - name: "WouldSurvive"
        makes: "minecraft:would_survive"
        signature: "WouldSurvive(state: BlockState, offset?: [int])"
        doc: "Passes when a block would stay put here, as a sapling needs dirt below."
        params:
          - name: "state"
            type: "BlockState"
            doc: "The block to test."
          - name: "offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
            doc: "The block offset to check."
  - group: "Block state provider"
    dispatcher: "minecraft:block_state_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/block_state_provider"
    helpers:
      - name: "CopyProperties"
        makes: "minecraft:copy_properties"
        signature: "CopyProperties(source: BlockStateProviderRef)"
        params:
          - name: "source"
            type: "BlockStateProviderRef"
      - name: "DualNoise"
        makes: "minecraft:dual_noise"
        signature: "DualNoise(seed: int, noise: NoiseParameters, scale: float, variety: InclusiveRange, slow_noise: NoiseParameters, slow_scale: float, states: [BlockState])"
        doc: "Like `Noise`, with a second, slower noise that picks how many of `states` can appear in each area."
        params:
          - name: "seed"
            type: "int"
          - name: "noise"
            type: "NoiseParameters"
          - name: "scale"
            type: "number 0.."
          - name: "variety"
            type: "InclusiveRange of int 1..64"
          - name: "slow_noise"
            type: "NoiseParameters"
          - name: "slow_scale"
            type: "number 0.."
          - name: "states"
            type: "list of BlockState"
      - name: "Noise"
        makes: "minecraft:noise"
        signature: "Noise(seed: int, noise: NoiseParameters, scale: float, states: [BlockState])"
        doc: "Picks from `states` by a noise, so the same block appears in patches."
        params:
          - name: "seed"
            type: "int"
            doc: "Seeds the noise."
          - name: "noise"
            type: "NoiseParameters"
          - name: "scale"
            type: "number 0.."
            doc: "Scales x and z before sampling; smaller values give larger patches."
          - name: "states"
            type: "list of BlockState"
            doc: "The blocks to pick from."
      - name: "NoiseThreshold"
        makes: "minecraft:noise_threshold"
        signature: "NoiseThreshold(seed: int, noise: NoiseParameters, scale: float, threshold: float, high_chance: float, default_state: BlockState, low_states: [BlockState], high_states: [BlockState])"
        doc: "Uses `default_state` where a noise is below `threshold`, and one of `low_states` or `high_states` above it. Vanilla flower forests use it."
        params:
          - name: "seed"
            type: "int"
          - name: "noise"
            type: "NoiseParameters"
          - name: "scale"
            type: "number 0.."
          - name: "threshold"
            type: "number -1..1"
          - name: "high_chance"
            type: "number 0..1"
          - name: "default_state"
            type: "BlockState"
          - name: "low_states"
            type: "list of BlockState"
          - name: "high_states"
            type: "list of BlockState"
      - name: "RandomBlock"
        makes: "minecraft:random_block"
        signature: "RandomBlock(blocks: block id | [block id])"
        doc: "Picks one of these blocks at random, each equally likely."
        params:
          - name: "blocks"
            type: "block id | #block tag | list of block ids"
      - name: "RandomizedInt"
        makes: "minecraft:randomized_int"
        signature: "RandomizedInt(property: string, values: IntProvider, source: BlockStateProviderRef)"
        doc: "Another provider's block, with an integer property set at random, such as a flower's `flower_amount`."
        params:
          - name: "property"
            type: "string"
            doc: "The property to set."
          - name: "values"
            type: "IntProvider of int"
            doc: "The values to pick from."
          - name: "source"
            type: "BlockStateProviderRef"
            doc: "The provider that picks the block."
      - name: "Rotated"
        makes: "minecraft:rotated"
        signature: "Rotated(state: BlockStateProviderRef, direction?: Direction)"
        doc: "A block with an `axis` property, turned to match the direction it is placed in, as logs are."
        params:
          - name: "state"
            type: "BlockStateProviderRef"
          - name: "direction"
            type: "Direction"
            optional: true
      - name: "RuleBased"
        makes: "minecraft:rule_based"
        signature: "RuleBased(rules: [object], fallback?: BlockStateProviderRef)"
        doc: "Uses the first rule whose block predicate passes at the position, or `fallback` when none does."
        params:
          - name: "rules"
            type: "list of { if_true: BlockPredicate, then: BlockStateProviderRef }"
          - name: "fallback"
            type: "BlockStateProviderRef"
            optional: true
      - name: "Simple"
        makes: "minecraft:simple"
        signature: "Simple(state: BlockState)"
        doc: "Always the same block."
        params:
          - name: "state"
            type: "BlockState"
            doc: "The block, with optional state such as `oak_log[axis = y]`."
      - name: "Weighted"
        makes: "minecraft:weighted"
        signature: "Weighted(entries: NonEmptyWeightedList)"
        doc: "Picks a block at random, by weight."
        params:
          - name: "entries"
            type: "NonEmptyWeightedList of BlockState"
  - group: "Carver config"
    dispatcher: "minecraft:carver_config"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/carver_config"
    helpers:
      - name: "Canyon"
        makes: "minecraft:canyon"
        signature: "Canyon(probability: float, y: HeightProvider, vertical_rotation: FloatProvider, shape: CanyonShape)"
        params:
          - name: "probability"
            type: "number 0..1"
          - name: "y"
            type: "HeightProvider"
          - name: "vertical_rotation"
            type: "FloatProvider of number"
          - name: "shape"
            type: "CanyonShape"
      - name: "Cave"
        makes: "minecraft:cave"
        signature: "Cave(probability: float, y: HeightProvider, count: IntProvider, thickness: FloatProvider, room_vertical_radius_multiplier: FloatProvider, horizontal_radius_multiplier: FloatProvider, vertical_radius_multiplier: FloatProvider, floor_level: FloatProvider, weird_thickness_bias?: bool, start_vertical_radius_multiplier?: FloatProvider)"
        params:
          - name: "probability"
            type: "number 0..1"
          - name: "y"
            type: "HeightProvider"
          - name: "count"
            type: "IntProvider of int 0.."
          - name: "thickness"
            type: "FloatProvider of number 0.."
          - name: "room_vertical_radius_multiplier"
            type: "FloatProvider of number"
          - name: "horizontal_radius_multiplier"
            type: "FloatProvider of number"
          - name: "vertical_radius_multiplier"
            type: "FloatProvider of number"
          - name: "floor_level"
            type: "FloatProvider of number -1..1"
          - name: "weird_thickness_bias"
            type: "bool"
            optional: true
            doc: "Defaults to `false`."
          - name: "start_vertical_radius_multiplier"
            type: "FloatProvider of number"
            optional: true
            doc: "Defaults to constant 1.0"
  - group: "Chunk generator"
    dispatcher: "minecraft:chunk_generator"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/chunk_generator"
    helpers:
      - name: "Debug"
        makes: "minecraft:debug"
        signature: "Debug()"
        doc: "The debug world: every block state in a grid."
      - name: "Flat"
        makes: "minecraft:flat"
        signature: "Flat(settings: FlatGeneratorSettings)"
        doc: "A superflat world: layers of blocks and one biome."
        params:
          - name: "settings"
            type: "FlatGeneratorSettings"
      - name: "Noise"
        makes: "minecraft:noise"
        signature: "Noise(settings: NoiseGeneratorSettingsRef, biome_source: BiomeSource)"
        doc: "Generates terrain from noise settings and density functions, and biomes from a biome source. Vanilla dimensions use it."
        params:
          - name: "settings"
            type: "NoiseGeneratorSettingsRef"
            doc: "The noise settings: a `NoiseSettings` declaration or a vanilla one such as `minecraft:overworld`."
          - name: "biome_source"
            type: "BiomeSource"
            doc: "Where biomes come from."
  - group: "Click event"
    dispatcher: "minecraft:click_event"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/click_event"
    helpers:
      - name: "ChangePage"
        makes: "minecraft:change_page"
        signature: "ChangePage(page: int)"
        params:
          - name: "page"
            type: "int 1.."
            doc: "The page number to go to."
      - name: "CopyToClipboard"
        makes: "minecraft:copy_to_clipboard"
        signature: "CopyToClipboard(value: string)"
        params:
          - name: "value"
            type: "string"
            doc: "The text value to copy to the clipboard."
      - name: "Custom"
        makes: "minecraft:custom"
        signature: "Custom(id: string, payload?: mcdoc:custom_event[[id]])"
        params:
          - name: "id"
            type: "id"
            doc: "ID of a custom action.\nHas no functionality on vanilla servers."
          - name: "payload"
            type: "any (depends on id)"
            optional: true
      - name: "OpenUrl"
        makes: "minecraft:open_url"
        signature: "OpenUrl(url: string)"
        params:
          - name: "url"
            type: "string"
      - name: "RunCommand"
        makes: "minecraft:run_command"
        signature: "RunCommand(command: string)"
        params:
          - name: "command"
            type: "string"
      - name: "ShowDialog"
        makes: "minecraft:show_dialog"
        signature: "ShowDialog(dialog: dialog id | Dialog)"
        params:
          - name: "dialog"
            type: "dialog id | Dialog"
      - name: "SuggestCommand"
        makes: "minecraft:suggest_command"
        signature: "SuggestCommand(command: string)"
        params:
          - name: "command"
            type: "string"
  - group: "Context float provider"
    dispatcher: "minecraft:context_float_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/context_float_provider"
    helpers:
      - name: "Abs"
        makes: "minecraft:abs"
        signature: "Abs(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Add"
        makes: "minecraft:add"
        signature: "Add(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Avg"
        makes: "minecraft:avg"
        signature: "Avg(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Ceil"
        makes: "minecraft:ceil"
        signature: "Ceil(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Conditional"
        makes: "minecraft:conditional"
        signature: "Conditional(condition: PredicateRef, on_true: FloatRef, on_false?: FloatRef)"
        params:
          - name: "condition"
            type: "PredicateRef"
          - name: "on_true"
            type: "FloatRef"
          - name: "on_false"
            type: "FloatRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: float)"
        params:
          - name: "value"
            type: "number"
      - name: "Cos"
        makes: "minecraft:cos"
        signature: "Cos(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Div"
        makes: "minecraft:div"
        signature: "Div(left: FloatRef, right: FloatRef)"
        params:
          - name: "left"
            type: "FloatRef"
          - name: "right"
            type: "FloatRef"
      - name: "EnchantmentLevel"
        makes: "minecraft:enchantment_level"
        signature: "EnchantmentLevel(amount: LevelBasedValue)"
        params:
          - name: "amount"
            type: "LevelBasedValue"
      - name: "EnvironmentAttribute"
        makes: "minecraft:environment_attribute"
        signature: "EnvironmentAttribute(attribute: NumericalEnvironmentAttribute)"
        params:
          - name: "attribute"
            type: "NumericalEnvironmentAttribute"
      - name: "Floor"
        makes: "minecraft:floor"
        signature: "Floor(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "FromInt"
        makes: "minecraft:from_int"
        signature: "FromInt(input: IntRef)"
        params:
          - name: "input"
            type: "IntRef"
      - name: "Length"
        makes: "minecraft:length"
        signature: "Length(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Max"
        makes: "minecraft:max"
        signature: "Max(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Min"
        makes: "minecraft:min"
        signature: "Min(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Mod"
        makes: "minecraft:mod"
        signature: "Mod(left: FloatRef, right: FloatRef)"
        params:
          - name: "left"
            type: "FloatRef"
          - name: "right"
            type: "FloatRef"
      - name: "Mul"
        makes: "minecraft:mul"
        signature: "Mul(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Negate"
        makes: "minecraft:negate"
        signature: "Negate(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "NumberDispatcher"
        makes: "minecraft:number_dispatcher"
        signature: "NumberDispatcher(cases: [object], default?: FloatRef)"
        params:
          - name: "cases"
            type: "list of { condition: PredicateRef, value: FloatRef }"
            doc: "Each condition is tested in order, the first in the list that passes is used."
          - name: "default"
            type: "FloatRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Pow"
        makes: "minecraft:pow"
        signature: "Pow(base: FloatRef, exponent: FloatRef)"
        params:
          - name: "base"
            type: "FloatRef"
          - name: "exponent"
            type: "FloatRef"
      - name: "Round"
        makes: "minecraft:round"
        signature: "Round(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Sin"
        makes: "minecraft:sin"
        signature: "Sin(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Sqrt"
        makes: "minecraft:sqrt"
        signature: "Sqrt(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Storage"
        makes: "minecraft:storage"
        signature: "Storage(storage: storage id, path: string, fallback?: FloatRef)"
        params:
          - name: "storage"
            type: "storage id"
          - name: "path"
            type: "string"
          - name: "fallback"
            type: "FloatRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Sub"
        makes: "minecraft:sub"
        signature: "Sub(left: FloatRef, right: FloatRef)"
        params:
          - name: "left"
            type: "FloatRef"
          - name: "right"
            type: "FloatRef"
      - name: "Truncate"
        makes: "minecraft:truncate"
        signature: "Truncate(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Uniform"
        makes: "minecraft:uniform"
        signature: "Uniform(min: FloatRef, max: FloatRef)"
        params:
          - name: "min"
            type: "FloatRef"
          - name: "max"
            type: "FloatRef"
      - name: "WeightedList"
        makes: "minecraft:weighted_list"
        signature: "WeightedList(distribution: NonEmptyWeightedList)"
        params:
          - name: "distribution"
            type: "NonEmptyWeightedList of FloatRef"
  - group: "Context int provider"
    dispatcher: "minecraft:context_int_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/context_int_provider"
    helpers:
      - name: "Abs"
        makes: "minecraft:abs"
        signature: "Abs(input: IntRef)"
        params:
          - name: "input"
            type: "IntRef"
      - name: "Add"
        makes: "minecraft:add"
        signature: "Add(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Avg"
        makes: "minecraft:avg"
        signature: "Avg(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Binomial"
        makes: "minecraft:binomial"
        signature: "Binomial(n: IntRef, p: FloatRef)"
        params:
          - name: "n"
            type: "IntRef"
            doc: "Number of coin flips."
          - name: "p"
            type: "FloatRef"
            doc: "Probability of a single coin flip succeeding."
      - name: "Conditional"
        makes: "minecraft:conditional"
        signature: "Conditional(condition: PredicateRef, on_true: IntRef, on_false?: IntRef)"
        params:
          - name: "condition"
            type: "PredicateRef"
          - name: "on_true"
            type: "IntRef"
          - name: "on_false"
            type: "IntRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: int)"
        params:
          - name: "value"
            type: "int"
      - name: "Div"
        makes: "minecraft:div"
        signature: "Div(left: IntRef, right: IntRef)"
        params:
          - name: "left"
            type: "IntRef"
          - name: "right"
            type: "IntRef"
      - name: "EnvironmentAttribute"
        makes: "minecraft:environment_attribute"
        signature: "EnvironmentAttribute(attribute: IntegerEnvironmentAttribute)"
        params:
          - name: "attribute"
            type: "IntegerEnvironmentAttribute"
      - name: "FloorDiv"
        makes: "minecraft:floor_div"
        signature: "FloorDiv(left: IntRef, right: IntRef)"
        params:
          - name: "left"
            type: "IntRef"
          - name: "right"
            type: "IntRef"
      - name: "FloorMod"
        makes: "minecraft:floor_mod"
        signature: "FloorMod(left: IntRef, right: IntRef)"
        params:
          - name: "left"
            type: "IntRef"
          - name: "right"
            type: "IntRef"
      - name: "FromFloat"
        makes: "minecraft:from_float"
        signature: "FromFloat(input: FloatRef)"
        params:
          - name: "input"
            type: "FloatRef"
      - name: "Max"
        makes: "minecraft:max"
        signature: "Max(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Min"
        makes: "minecraft:min"
        signature: "Min(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Mod"
        makes: "minecraft:mod"
        signature: "Mod(left: IntRef, right: IntRef)"
        params:
          - name: "left"
            type: "IntRef"
          - name: "right"
            type: "IntRef"
      - name: "Mul"
        makes: "minecraft:mul"
        signature: "Mul(inputs: AggregateOperands)"
        params:
          - name: "inputs"
            type: "AggregateOperands"
      - name: "Negate"
        makes: "minecraft:negate"
        signature: "Negate(input: IntRef)"
        params:
          - name: "input"
            type: "IntRef"
      - name: "NumberDispatcher"
        makes: "minecraft:number_dispatcher"
        signature: "NumberDispatcher(cases: [object], default?: IntRef)"
        params:
          - name: "cases"
            type: "list of { condition: PredicateRef, value: IntRef }"
            doc: "Each condition is tested in order, the first in the list that passes is used."
          - name: "default"
            type: "IntRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Pow"
        makes: "minecraft:pow"
        signature: "Pow(base: IntRef, exponent: IntRef)"
        params:
          - name: "base"
            type: "IntRef"
          - name: "exponent"
            type: "IntRef"
      - name: "Score"
        makes: "minecraft:score"
        signature: "Score(target: ScoreProvider, score: string, fallback?: IntRef)"
        params:
          - name: "target"
            type: "ScoreProvider"
          - name: "score"
            type: "string"
          - name: "fallback"
            type: "IntRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Storage"
        makes: "minecraft:storage"
        signature: "Storage(storage: storage id, path: string, fallback?: IntRef)"
        params:
          - name: "storage"
            type: "storage id"
          - name: "path"
            type: "string"
          - name: "fallback"
            type: "IntRef"
            optional: true
            doc: "Defaults to constant 0."
      - name: "Sub"
        makes: "minecraft:sub"
        signature: "Sub(left: IntRef, right: IntRef)"
        params:
          - name: "left"
            type: "IntRef"
          - name: "right"
            type: "IntRef"
      - name: "Uniform"
        makes: "minecraft:uniform"
        signature: "Uniform(min: IntRef, max: IntRef)"
        params:
          - name: "min"
            type: "IntRef"
          - name: "max"
            type: "IntRef"
      - name: "WeightedList"
        makes: "minecraft:weighted_list"
        signature: "WeightedList(distribution: NonEmptyWeightedList)"
        params:
          - name: "distribution"
            type: "NonEmptyWeightedList of IntRef"
  - group: "Density function"
    dispatcher: "minecraft:density_function"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/density_function"
    helpers:
      - name: "Abs"
        makes: "minecraft:abs"
        signature: "Abs(input: DensityFunctionRef)"
        doc: "The absolute value of `input`. Turns a noise into sharp ridges along its zero line."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Add"
        makes: "minecraft:add"
        signature: "Add(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "`left + right`. Usually written with `+`."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
        example: "DensityFunction raised = Noise(minecraft:ridge, 1, 0) + 0.2"
      - name: "Beardifier"
        makes: "minecraft:beardifier"
        signature: "Beardifier()"
        doc: "Adds density around structures that adapt the terrain, such as villages and ancient cities. Vanilla adds it to `final_density`."
      - name: "BlendAlpha"
        makes: "minecraft:blend_alpha"
        signature: "BlendAlpha()"
        doc: "Blending with chunks from before 1.18: 1 in new chunks, lower near old ones."
      - name: "BlendDensity"
        makes: "minecraft:blend_density"
        signature: "BlendDensity(input: DensityFunctionRef)"
        doc: "Blends `input` with the terrain of chunks from before 1.18. In new chunks it is `input` unchanged."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "BlendOffset"
        makes: "minecraft:blend_offset"
        signature: "BlendOffset()"
        doc: "Blending with chunks from before 1.18: 0 in new chunks."
      - name: "Cache"
        makes: "minecraft:cache"
        signature: "Cache(input: DensityFunctionRef)"
        doc: "Computes `input` once per position, for a function used in several places. The value is unchanged."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Ceil"
        makes: "minecraft:ceil"
        signature: "Ceil(input: DensityFunctionRef, multiple?: DensityFunctionRef)"
        doc: "Rounds `input` up to a whole multiple of `multiple`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "multiple"
            type: "DensityFunctionRef"
            optional: true
            doc: "Defaults to constant 1."
      - name: "Clamp"
        makes: "minecraft:clamp"
        signature: "Clamp(input: DensityFunctionRef, min: NoiseRange, max: NoiseRange)"
        doc: "Keeps `input` between `min` and `max`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "min"
            type: "NoiseRange"
            doc: "The lowest value let through."
          - name: "max"
            type: "NoiseRange"
            doc: "The highest value let through."
        example: "DensityFunction capped = Clamp(Noise(minecraft:ridge, 1, 1), -0.5, 0.5)"
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: NoiseRange)"
        doc: "The same number everywhere. A plain number does the same thing."
        params:
          - name: "value"
            type: "NoiseRange"
            doc: "The number."
        example: "DensityFunction half = Constant(0.5)"
      - name: "Cube"
        makes: "minecraft:cube"
        signature: "Cube(input: DensityFunctionRef)"
        doc: "`input * input * input`. Keeps the sign and flattens values near 0."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "DistanceToPoint"
        makes: "minecraft:distance_to_point"
        signature: "DistanceToPoint(point: [int], metric: DistanceMetric)"
        params:
          - name: "point"
            type: "list of int (exactly 3)"
          - name: "metric"
            type: "DistanceMetric"
      - name: "Div"
        makes: "minecraft:div"
        signature: "Div(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "`left / right`. Usually written with `/`."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
      - name: "EndOuterIslands"
        makes: "minecraft:end_outer_islands"
        signature: "EndOuterIslands()"
        doc: "The End's island terrain: the main island in the middle, and scattered islands beyond 1024 blocks."
      - name: "FindTopSurface"
        makes: "minecraft:find_top_surface"
        signature: "FindTopSurface(density: DensityFunctionRef, upper_bound: DensityFunctionRef, lower_bound: int, cell_height: int)"
        params:
          - name: "density"
            type: "DensityFunctionRef"
          - name: "upper_bound"
            type: "DensityFunctionRef"
          - name: "lower_bound"
            type: "int -4064..4062"
          - name: "cell_height"
            type: "int 1.."
      - name: "Floor"
        makes: "minecraft:floor"
        signature: "Floor(input: DensityFunctionRef, multiple?: DensityFunctionRef)"
        doc: "Rounds `input` down to a whole multiple of `multiple`. Rounding a gradient makes terraces."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "multiple"
            type: "DensityFunctionRef"
            optional: true
            doc: "Defaults to constant 1."
      - name: "Gradient"
        makes: "minecraft:gradient"
        signature: "Gradient(axis: Axis, from_coordinate: value, to_coordinate: value, from_value: NoiseRange, to_value: NoiseRange, tiling?: TilingMode)"
        doc: "Changes linearly along one axis: `from_value` at `from_coordinate`, `to_value` at `to_coordinate`. Beyond the two coordinates it holds the end values, unless `tiling` says otherwise. Use it to make terrain solid at the bottom and air at the top."
        params:
          - name: "axis"
            type: "Axis"
            doc: "The axis the gradient runs along: `x`, `y` or `z`."
          - name: "from_coordinate"
            type: "any (depends on axis)"
            doc: "Where the gradient starts, in blocks."
          - name: "to_coordinate"
            type: "any (depends on axis)"
            doc: "Where the gradient ends, in blocks."
          - name: "from_value"
            type: "NoiseRange"
            doc: "The value at `from_coordinate`."
          - name: "to_value"
            type: "NoiseRange"
            doc: "The value at `to_coordinate`."
          - name: "tiling"
            type: "TilingMode"
            optional: true
            doc: "What happens beyond the two coordinates: `clamp_to_edge` holds the end values, `repeat` starts over, `mirrored_repeat` runs back and forth. Defaults to `clamp_to_edge`."
        example: "DensityFunction ground = Gradient(\n  axis = y,\n  from_coordinate = 0,\n  to_coordinate = 128,\n  from_value = 1,\n  to_value = -1,\n)"
      - name: "HalfNegative"
        makes: "minecraft:half_negative"
        signature: "HalfNegative(input: DensityFunctionRef)"
        doc: "`input`, with negative values halved. Vanilla uses it to soften cave walls."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Interpolated"
        makes: "minecraft:interpolated"
        signature: "Interpolated(input: DensityFunctionRef, cell_size_xz: int, cell_size_y: int)"
        doc: "Computes `input` only at the corners of cells and blends between them. Smoother and much faster than sampling every block; vanilla wraps its terrain in it."
        params:
          - name: "input"
            type: "DensityFunctionRef"
            doc: "The function to interpolate."
          - name: "cell_size_xz"
            type: "int 1.."
            doc: "Cell width, in blocks."
          - name: "cell_size_y"
            type: "int 1.."
            doc: "Cell height, in blocks."
      - name: "IntervalSelect"
        makes: "minecraft:interval_select"
        signature: "IntervalSelect(input: DensityFunctionRef, thresholds: [NoiseRange], functions: [DensityFunctionRef])"
        doc: "Picks one of `functions` by which interval of `thresholds` the value of `input` falls in: below the first threshold picks the first function, and so on."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "thresholds"
            type: "list of NoiseRange (at least 1)"
            doc: "Must have exactly one fewer element than `functions`."
          - name: "functions"
            type: "list of DensityFunctionRef (at least 2)"
            doc: "Must have exactly one more element than `thresholds`."
      - name: "Lerp"
        makes: "minecraft:lerp"
        signature: "Lerp(alpha: DensityFunctionRef, first: DensityFunctionRef, second: DensityFunctionRef)"
        doc: "Blends from `first` to `second` by `alpha`: `first` where `alpha` is 0, `second` where it is 1."
        params:
          - name: "alpha"
            type: "DensityFunctionRef"
            doc: "How far to blend, usually from 0 to 1."
          - name: "first"
            type: "DensityFunctionRef"
            doc: "The value where `alpha` is 0."
          - name: "second"
            type: "DensityFunctionRef"
            doc: "The value where `alpha` is 1."
      - name: "Log"
        makes: "minecraft:log"
        signature: "Log(input: DensityFunctionRef)"
        doc: "The natural logarithm of `input`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Max"
        makes: "minecraft:max"
        signature: "Max(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "The larger of the two inputs. `Max(a, b)` joins two terrains."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
        example: "DensityFunction both = Max(Noise(minecraft:ridge, 1, 0), Noise(minecraft:jagged, 1, 0))"
      - name: "Min"
        makes: "minecraft:min"
        signature: "Min(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "The smaller of the two inputs. `Min(a, b)` keeps the lower of two terrains."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
      - name: "Mul"
        makes: "minecraft:mul"
        signature: "Mul(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "`left * right`. Usually written with `*`. Vanilla stops computing `right` where `left` is 0."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
      - name: "Negate"
        makes: "minecraft:negate"
        signature: "Negate(input: DensityFunctionRef)"
        doc: "`-input`. Usually written with a leading `-`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Noise"
        makes: "minecraft:noise"
        signature: "Noise(noise: NoiseParametersRef, xz_scale: float, y_scale: float, shift_x?: DensityFunctionRef, shift_y?: DensityFunctionRef, shift_z?: DensityFunctionRef)"
        doc: "Samples a noise at the block's position, scaled per axis. The result is roughly between -1 and 1. Most terrain starts here."
        params:
          - name: "noise"
            type: "NoiseParametersRef"
            doc: "The noise, by id: a `Noise` declaration or a vanilla one such as `minecraft:ridge`."
          - name: "xz_scale"
            type: "number"
            doc: "Multiplies x and z before sampling. Below 1 stretches the noise out horizontally; above 1 squeezes it."
          - name: "y_scale"
            type: "number"
            doc: "Multiplies y before sampling. `0` makes the noise the same at every height (2D)."
          - name: "shift_x"
            type: "DensityFunctionRef"
            optional: true
            doc: "Added to x before sampling, so the noise doesn't line up with others. Vanilla uses `ShiftA`. Defaults to constant 0."
          - name: "shift_y"
            type: "DensityFunctionRef"
            optional: true
            doc: "Added to y before sampling. Defaults to constant 0."
          - name: "shift_z"
            type: "DensityFunctionRef"
            optional: true
            doc: "Added to z before sampling. Vanilla uses `ShiftB`. Defaults to constant 0."
        example: "Noise hills { base_octave = -7, amplitude_modifiers = [1, 1] }\nDensityFunction land = Noise(hills, 1, 0) * 0.5"
      - name: "OldBlendedNoise"
        makes: "minecraft:old_blended_noise"
        signature: "OldBlendedNoise(xz_scale: float, y_scale: float, xz_factor: float, y_factor: float, smear_scale_multiplier: float)"
        doc: "The 3D terrain noise from before 1.18, which vanilla still uses as the base of overworld and nether terrain."
        params:
          - name: "xz_scale"
            type: "number"
          - name: "y_scale"
            type: "number"
          - name: "xz_factor"
            type: "number"
          - name: "y_factor"
            type: "number"
          - name: "smear_scale_multiplier"
            type: "number 1..8"
      - name: "Pow"
        makes: "minecraft:pow"
        signature: "Pow(base: DensityFunctionRef, exponent: DensityFunctionRef)"
        doc: "`base` raised to the power `exponent`."
        params:
          - name: "base"
            type: "DensityFunctionRef"
          - name: "exponent"
            type: "DensityFunctionRef"
      - name: "QuarterNegative"
        makes: "minecraft:quarter_negative"
        signature: "QuarterNegative(input: DensityFunctionRef)"
        doc: "`input`, with negative values divided by four."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "RangeChoice"
        makes: "minecraft:range_choice"
        signature: "RangeChoice(input: DensityFunctionRef, min_inclusive: NoiseRange, max_exclusive: NoiseRange, when_in_range: DensityFunctionRef, when_out_of_range: DensityFunctionRef)"
        doc: "Picks between two functions by the value of `input`: `when_in_range` where `min_inclusive <= input < max_exclusive`, `when_out_of_range` elsewhere. Only the chosen one is computed."
        params:
          - name: "input"
            type: "DensityFunctionRef"
            doc: "The value to test."
          - name: "min_inclusive"
            type: "NoiseRange"
            doc: "The lowest value that counts as in range."
          - name: "max_exclusive"
            type: "NoiseRange"
            doc: "The value above the range; it counts as out of range."
          - name: "when_in_range"
            type: "DensityFunctionRef"
            doc: "Used where `input` is in range."
          - name: "when_out_of_range"
            type: "DensityFunctionRef"
            doc: "Used everywhere else."
      - name: "Reciprocal"
        makes: "minecraft:reciprocal"
        signature: "Reciprocal(input: DensityFunctionRef)"
        doc: "`1 / input`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Round"
        makes: "minecraft:round"
        signature: "Round(input: DensityFunctionRef, multiple?: DensityFunctionRef)"
        doc: "Rounds `input` to the nearest whole multiple of `multiple`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "multiple"
            type: "DensityFunctionRef"
            optional: true
            doc: "Defaults to constant 1."
      - name: "Shift"
        makes: "minecraft:shift"
        signature: "Shift(noise: NoiseParametersRef)"
        doc: "Samples `noise` at a quarter of the block's x, y and z and multiplies it by 4. Used as a shift for another noise."
        params:
          - name: "noise"
            type: "NoiseParametersRef"
      - name: "ShiftA"
        makes: "minecraft:shift_a"
        signature: "ShiftA(noise: NoiseParametersRef)"
        doc: "Samples `noise` at a quarter of the block's x and z (y is 0) and multiplies it by 4. Vanilla uses it as `shift_x` of its climate noises."
        params:
          - name: "noise"
            type: "NoiseParametersRef"
      - name: "ShiftB"
        makes: "minecraft:shift_b"
        signature: "ShiftB(noise: NoiseParametersRef)"
        doc: "Like `ShiftA`, with x and z swapped. Vanilla uses it as `shift_z` of its climate noises."
        params:
          - name: "noise"
            type: "NoiseParametersRef"
      - name: "Sign"
        makes: "minecraft:sign"
        signature: "Sign(input: DensityFunctionRef)"
        doc: "`-1`, `0` or `1`, following the sign of `input`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Slice"
        makes: "minecraft:slice"
        signature: "Slice(axis: Axis, coordinate: int, input: DensityFunctionRef)"
        params:
          - name: "axis"
            type: "Axis"
          - name: "coordinate"
            type: "int"
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Slide"
        makes: "minecraft:slide"
        signature: "Slide(input: DensityFunctionRef)"
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Spline"
        makes: "minecraft:spline"
        signature: "Spline(spline: CubicSpline)"
        doc: "Maps a value through a cubic spline: a curve through points, each with a `location`, a `value` and a `derivative`. Vanilla shapes continents, erosion and peaks into terrain height with splines."
        params:
          - name: "spline"
            type: "CubicSpline"
      - name: "Sqrt"
        makes: "minecraft:sqrt"
        signature: "Sqrt(input: DensityFunctionRef)"
        doc: "The square root of `input`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Square"
        makes: "minecraft:square"
        signature: "Square(input: DensityFunctionRef)"
        doc: "`input * input`. Always 0 or more, and flattens values near 0."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Squeeze"
        makes: "minecraft:squeeze"
        signature: "Squeeze(input: DensityFunctionRef)"
        doc: "Clamps `input` to -1..1, then bends it to `x / 2 - x³ / 24`. Vanilla applies it near the end of `final_density` to smooth sharp values."
        params:
          - name: "input"
            type: "DensityFunctionRef"
      - name: "Sub"
        makes: "minecraft:sub"
        signature: "Sub(left: DensityFunctionRef, right: DensityFunctionRef)"
        doc: "`left - right`. Usually written with `-`."
        params:
          - name: "left"
            type: "DensityFunctionRef"
          - name: "right"
            type: "DensityFunctionRef"
      - name: "Truncate"
        makes: "minecraft:truncate"
        signature: "Truncate(input: DensityFunctionRef, multiple?: DensityFunctionRef)"
        doc: "Rounds `input` toward zero, to a whole multiple of `multiple`."
        params:
          - name: "input"
            type: "DensityFunctionRef"
          - name: "multiple"
            type: "DensityFunctionRef"
            optional: true
            doc: "Defaults to constant 1."
  - group: "Dialog"
    dispatcher: "minecraft:dialog"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/dialog"
    helpers:
      - name: "Confirmation"
        makes: "minecraft:confirmation"
        signature: "Confirmation(title: Text, yes: Button, no: Button, external_title?: Text, body?: DialogBody | [DialogBody], inputs?: [InputControl], can_close_with_escape?: bool, after_action?: AfterAction)"
        params:
          - name: "title"
            type: "Text"
          - name: "yes"
            type: "Button"
          - name: "no"
            type: "Button"
            doc: "This action is also used for ESC-triggered exit."
          - name: "external_title"
            type: "Text"
            optional: true
            doc: "Name to be used for a button leading to this dialog.\nIf not present, `title` will be used instead."
          - name: "body"
            type: "DialogBody | list of DialogBody"
            optional: true
          - name: "inputs"
            type: "list of InputControl"
            optional: true
          - name: "can_close_with_escape"
            type: "bool"
            optional: true
            doc: "Whether the dialog can be closed with ESC key.\nDefaults to `true`."
          - name: "after_action"
            type: "AfterAction"
            optional: true
            doc: "An additional operation performed on dialog after click or submit actions.\nDefaults to `close`. \\\nValue `none` requires `pause` set to `false`."
      - name: "DialogList"
        makes: "minecraft:dialog_list"
        signature: "DialogList(title: Text, dialogs: DialogListRef, external_title?: Text, body?: DialogBody | [DialogBody], inputs?: [InputControl], can_close_with_escape?: bool, after_action?: AfterAction, exit_action?: Button, columns?: int, button_width?: int)"
        params:
          - name: "title"
            type: "Text"
          - name: "dialogs"
            type: "DialogListRef"
          - name: "external_title"
            type: "Text"
            optional: true
            doc: "Name to be used for a button leading to this dialog.\nIf not present, `title` will be used instead."
          - name: "body"
            type: "DialogBody | list of DialogBody"
            optional: true
          - name: "inputs"
            type: "list of InputControl"
            optional: true
          - name: "can_close_with_escape"
            type: "bool"
            optional: true
            doc: "Whether the dialog can be closed with ESC key.\nDefaults to `true`."
          - name: "after_action"
            type: "AfterAction"
            optional: true
            doc: "An additional operation performed on dialog after click or submit actions.\nDefaults to `close`. \\\nValue `none` requires `pause` set to `false`."
          - name: "exit_action"
            type: "Button"
            optional: true
            doc: "The button in footer.\nThe action is also used for ESC-triggered exit."
          - name: "columns"
            type: "int 1.."
            optional: true
            doc: "The number of columns.\nDefaults to 2."
          - name: "button_width"
            type: "int 1.."
            optional: true
            doc: "Width of buttons in the list.\nDefaults to 150."
      - name: "MultiAction"
        makes: "minecraft:multi_action"
        signature: "MultiAction(title: Text, actions: [Button], external_title?: Text, body?: DialogBody | [DialogBody], inputs?: [InputControl], can_close_with_escape?: bool, after_action?: AfterAction, exit_action?: Button, columns?: int)"
        params:
          - name: "title"
            type: "Text"
          - name: "actions"
            type: "list of Button (at least 1)"
          - name: "external_title"
            type: "Text"
            optional: true
            doc: "Name to be used for a button leading to this dialog.\nIf not present, `title` will be used instead."
          - name: "body"
            type: "DialogBody | list of DialogBody"
            optional: true
          - name: "inputs"
            type: "list of InputControl"
            optional: true
          - name: "can_close_with_escape"
            type: "bool"
            optional: true
            doc: "Whether the dialog can be closed with ESC key.\nDefaults to `true`."
          - name: "after_action"
            type: "AfterAction"
            optional: true
            doc: "An additional operation performed on dialog after click or submit actions.\nDefaults to `close`. \\\nValue `none` requires `pause` set to `false`."
          - name: "exit_action"
            type: "Button"
            optional: true
            doc: "The button in footer.\nThe action is also used for ESC-triggered exit."
          - name: "columns"
            type: "int 1.."
            optional: true
            doc: "The number of columns.\nDefaults to 2."
      - name: "Notice"
        makes: "minecraft:notice"
        signature: "Notice(title: Text, external_title?: Text, body?: DialogBody | [DialogBody], inputs?: [InputControl], can_close_with_escape?: bool, after_action?: AfterAction, action?: Button)"
        params:
          - name: "title"
            type: "Text"
          - name: "external_title"
            type: "Text"
            optional: true
            doc: "Name to be used for a button leading to this dialog.\nIf not present, `title` will be used instead."
          - name: "body"
            type: "DialogBody | list of DialogBody"
            optional: true
          - name: "inputs"
            type: "list of InputControl"
            optional: true
          - name: "can_close_with_escape"
            type: "bool"
            optional: true
            doc: "Whether the dialog can be closed with ESC key.\nDefaults to `true`."
          - name: "after_action"
            type: "AfterAction"
            optional: true
            doc: "An additional operation performed on dialog after click or submit actions.\nDefaults to `close`. \\\nValue `none` requires `pause` set to `false`."
          - name: "action"
            type: "Button"
            optional: true
            doc: "The only action in footer.\nDefaults to `gui.ok` label with no action or tooltip."
      - name: "ServerLinks"
        makes: "minecraft:server_links"
        signature: "ServerLinks(title: Text, external_title?: Text, body?: DialogBody | [DialogBody], inputs?: [InputControl], can_close_with_escape?: bool, after_action?: AfterAction, exit_action?: Button, columns?: int, button_width?: int)"
        params:
          - name: "title"
            type: "Text"
          - name: "external_title"
            type: "Text"
            optional: true
            doc: "Name to be used for a button leading to this dialog.\nIf not present, `title` will be used instead."
          - name: "body"
            type: "DialogBody | list of DialogBody"
            optional: true
          - name: "inputs"
            type: "list of InputControl"
            optional: true
          - name: "can_close_with_escape"
            type: "bool"
            optional: true
            doc: "Whether the dialog can be closed with ESC key.\nDefaults to `true`."
          - name: "after_action"
            type: "AfterAction"
            optional: true
            doc: "An additional operation performed on dialog after click or submit actions.\nDefaults to `close`. \\\nValue `none` requires `pause` set to `false`."
          - name: "exit_action"
            type: "Button"
            optional: true
            doc: "The button in footer.\nThe action is also used for ESC-triggered exit."
          - name: "columns"
            type: "int 1.."
            optional: true
            doc: "The number of columns.\nDefaults to 2."
          - name: "button_width"
            type: "int 1.."
            optional: true
            doc: "Width of buttons in the list.\nDefaults to 150."
  - group: "Dialog action"
    dispatcher: "minecraft:dialog_action"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/dialog_action"
    helpers:
      - name: "ChangePage"
        makes: "minecraft:change_page"
        signature: "ChangePage(page: int)"
        params:
          - name: "page"
            type: "int 1.."
            doc: "The page number to go to."
      - name: "CopyToClipboard"
        makes: "minecraft:copy_to_clipboard"
        signature: "CopyToClipboard(value: string)"
        params:
          - name: "value"
            type: "string"
            doc: "The text value to copy to the clipboard."
      - name: "Custom"
        makes: "minecraft:custom"
        signature: "Custom(id: string, payload?: mcdoc:custom_event[[id]])"
        params:
          - name: "id"
            type: "id"
            doc: "ID of a custom action.\nHas no functionality on vanilla servers."
          - name: "payload"
            type: "any (depends on id)"
            optional: true
      - name: "OpenUrl"
        makes: "minecraft:open_url"
        signature: "OpenUrl(url: string)"
        params:
          - name: "url"
            type: "string"
      - name: "RunCommand"
        makes: "minecraft:run_command"
        signature: "RunCommand(command: string)"
        params:
          - name: "command"
            type: "string"
      - name: "ShowDialog"
        makes: "minecraft:show_dialog"
        signature: "ShowDialog(dialog: dialog id | Dialog)"
        params:
          - name: "dialog"
            type: "dialog id | Dialog"
      - name: "SuggestCommand"
        makes: "minecraft:suggest_command"
        signature: "SuggestCommand(command: string)"
        params:
          - name: "command"
            type: "string"
  - group: "Dialog body"
    dispatcher: "minecraft:dialog_body"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/dialog_body"
    helpers:
      - name: "Item"
        makes: "minecraft:item"
        signature: "Item(item: ItemStackTemplate, description?: PlainMessage | Text, show_decorations?: bool, show_tooltip?: bool, width?: int, height?: int)"
        params:
          - name: "item"
            type: "ItemStackTemplate"
          - name: "description"
            type: "PlainMessage | Text"
            optional: true
            doc: "The description text rendered to the right of item."
          - name: "show_decorations"
            type: "bool"
            optional: true
            doc: "Whether count and damage bar are rendered over the item.\nDefaults to `true`."
          - name: "show_tooltip"
            type: "bool"
            optional: true
            doc: "Whether item tooltip shows up when the item is hovered.\nDefaults to `true`."
          - name: "width"
            type: "int 1..256"
            optional: true
            doc: "Width of the item.\nDefaults to 16."
          - name: "height"
            type: "int 1..256"
            optional: true
            doc: "Height of the item.\nDefaults to 16."
      - name: "PlainMessage"
        makes: "minecraft:plain_message"
        signature: "PlainMessage(contents: Text, width?: int)"
        params:
          - name: "contents"
            type: "Text"
            doc: "A multiline label.\nClick events in the text trigger `after_action` like any other action."
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Maximum width of message.\nDefaults to 200."
  - group: "Enchantment provider"
    dispatcher: "minecraft:enchantment_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/enchantment_provider"
    helpers:
      - name: "ByCost"
        makes: "minecraft:by_cost"
        signature: "ByCost(enchantments: EnchantmentsType, cost: IntProvider)"
        params:
          - name: "enchantments"
            type: "EnchantmentsType"
          - name: "cost"
            type: "IntProvider of int"
            doc: "Cost to use for the Enchanting process."
      - name: "ByCostWithDifficulty"
        makes: "minecraft:by_cost_with_difficulty"
        signature: "ByCostWithDifficulty(enchantments: EnchantmentsType, min_cost: int, max_cost_span: int)"
        params:
          - name: "enchantments"
            type: "EnchantmentsType"
          - name: "min_cost"
            type: "int 0.."
            doc: "Positive integer representing the minimum possible cost"
          - name: "max_cost_span"
            type: "int 0.."
            doc: "Span of the cost randomization when the special factor is at its maximum."
      - name: "Single"
        makes: "minecraft:single"
        signature: "Single(enchantment: enchantment id, level: IntProvider)"
        params:
          - name: "enchantment"
            type: "enchantment id"
          - name: "level"
            type: "IntProvider of int"
  - group: "Feature config"
    dispatcher: "minecraft:feature_config"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/feature_config"
    helpers:
      - name: "Bamboo"
        makes: "minecraft:bamboo"
        signature: "Bamboo(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "BlockBlob"
        makes: "minecraft:block_blob"
        signature: "BlockBlob(state: BlockState, can_place_on: BlockPredicate)"
        params:
          - name: "state"
            type: "BlockState"
          - name: "can_place_on"
            type: "BlockPredicate"
      - name: "BlockColumn"
        makes: "minecraft:block_column"
        signature: "BlockColumn(direction: Direction, allowed_placement: BlockPredicate, prioritize_tip: bool, layers: [BlockColumnLayer])"
        params:
          - name: "direction"
            type: "Direction"
          - name: "allowed_placement"
            type: "BlockPredicate"
          - name: "prioritize_tip"
            type: "bool"
          - name: "layers"
            type: "list of BlockColumnLayer"
      - name: "BlockPile"
        makes: "minecraft:block_pile"
        signature: "BlockPile(state_provider: BlockStateProviderRef)"
        params:
          - name: "state_provider"
            type: "BlockStateProviderRef"
      - name: "BlueIce"
        makes: "minecraft:blue_ice"
        signature: "BlueIce()"
      - name: "BonusChest"
        makes: "minecraft:bonus_chest"
        signature: "BonusChest()"
      - name: "ChorusPlant"
        makes: "minecraft:chorus_plant"
        signature: "ChorusPlant()"
      - name: "CoralClaw"
        makes: "minecraft:coral_claw"
        signature: "CoralClaw(feature: PlacedFeatureRef)"
        params:
          - name: "feature"
            type: "PlacedFeatureRef"
      - name: "CoralTree"
        makes: "minecraft:coral_tree"
        signature: "CoralTree(feature: PlacedFeatureRef)"
        params:
          - name: "feature"
            type: "PlacedFeatureRef"
      - name: "DeltaFeature"
        makes: "minecraft:delta_feature"
        signature: "DeltaFeature(contents: BlockState, rim: BlockState, size: IntProvider, rim_size: IntProvider)"
        params:
          - name: "contents"
            type: "BlockState"
          - name: "rim"
            type: "BlockState"
          - name: "size"
            type: "IntProvider of int 0..16"
          - name: "rim_size"
            type: "IntProvider of int 0..16"
      - name: "Disk"
        makes: "minecraft:disk"
        signature: "Disk(state_provider: BlockStateProviderRef, radius: IntProvider, half_height: int, target: BlockPredicate)"
        params:
          - name: "state_provider"
            type: "BlockStateProviderRef"
          - name: "radius"
            type: "IntProvider of int 0..8"
          - name: "half_height"
            type: "int 0..4"
          - name: "target"
            type: "BlockPredicate"
      - name: "EmeraldOre"
        makes: "minecraft:emerald_ore"
        signature: "EmeraldOre(state: BlockState, target: BlockState)"
        params:
          - name: "state"
            type: "BlockState"
          - name: "target"
            type: "BlockState"
      - name: "EndGateway"
        makes: "minecraft:end_gateway"
        signature: "EndGateway(exact: bool, exit?: [int])"
        params:
          - name: "exact"
            type: "bool"
          - name: "exit"
            type: "list of int (exactly 3)"
            optional: true
      - name: "EndIsland"
        makes: "minecraft:end_island"
        signature: "EndIsland()"
      - name: "EndPlatform"
        makes: "minecraft:end_platform"
        signature: "EndPlatform()"
      - name: "EndPodium"
        makes: "minecraft:end_podium"
        signature: "EndPodium(active?: bool)"
        params:
          - name: "active"
            type: "bool"
            optional: true
            doc: "Defaults to `false`."
      - name: "EndSpike"
        makes: "minecraft:end_spike"
        signature: "EndSpike(spikes: [EndSpike], crystal_invulnerable?: bool, crystal_beam_target?: [int])"
        params:
          - name: "spikes"
            type: "list of EndSpike"
          - name: "crystal_invulnerable"
            type: "bool"
            optional: true
          - name: "crystal_beam_target"
            type: "list of int (exactly 3)"
            optional: true
      - name: "FallenTree"
        makes: "minecraft:fallen_tree"
        signature: "FallenTree(trunk_provider: BlockStateProviderRef, log_length: IntProvider, stump_decorators: [TreeDecorator], log_decorators: [TreeDecorator])"
        params:
          - name: "trunk_provider"
            type: "BlockStateProviderRef"
          - name: "log_length"
            type: "IntProvider of int 0..16"
          - name: "stump_decorators"
            type: "list of TreeDecorator"
          - name: "log_decorators"
            type: "list of TreeDecorator"
      - name: "FillLayer"
        makes: "minecraft:fill_layer"
        signature: "FillLayer(state: BlockState, height: int)"
        params:
          - name: "state"
            type: "BlockState"
          - name: "height"
            type: "int 0..255"
      - name: "Flower"
        makes: "minecraft:flower"
        signature: "Flower(feature: FeatureRef, tries?: int, xz_spread?: int, y_spread?: int)"
        params:
          - name: "feature"
            type: "FeatureRef"
          - name: "tries"
            type: "int 1.."
            optional: true
            doc: "How many attempts will be made to find a placement. Defaults to 128."
          - name: "xz_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 7."
          - name: "y_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 3."
      - name: "Fossil"
        makes: "minecraft:fossil"
        signature: "Fossil(max_empty_corners_allowed: int, fossil_structures: [structure id], overlay_structures: [structure id], fossil_processors: ProcessorListRef, overlay_processors: ProcessorListRef)"
        params:
          - name: "max_empty_corners_allowed"
            type: "int 0..7"
            doc: "If more corners are exposed to air, feature placement is cancelled."
          - name: "fossil_structures"
            type: "list of structure ids"
          - name: "overlay_structures"
            type: "list of structure ids"
          - name: "fossil_processors"
            type: "ProcessorListRef"
          - name: "overlay_processors"
            type: "ProcessorListRef"
      - name: "FreezeTopLayer"
        makes: "minecraft:freeze_top_layer"
        signature: "FreezeTopLayer()"
      - name: "Geode"
        makes: "minecraft:geode"
        signature: "Geode(blocks: GeodeBlockSettings, layers: GeodeLayerSettings, crack: GeodeCrackSettings, invalid_blocks_threshold: int, noise_multiplier?: float, use_potential_placements_chance?: float, use_alternate_layer0_chance?: float, placements_require_layer0_alternate?: bool, outer_wall_distance?: IntProvider, distribution_points?: IntProvider, point_offset?: IntProvider, min_gen_offset?: int, max_gen_offset?: int)"
        params:
          - name: "blocks"
            type: "GeodeBlockSettings"
          - name: "layers"
            type: "GeodeLayerSettings"
          - name: "crack"
            type: "GeodeCrackSettings"
          - name: "invalid_blocks_threshold"
            type: "int"
          - name: "noise_multiplier"
            type: "number 0..1"
            optional: true
          - name: "use_potential_placements_chance"
            type: "number 0..1"
            optional: true
          - name: "use_alternate_layer0_chance"
            type: "number 0..1"
            optional: true
          - name: "placements_require_layer0_alternate"
            type: "bool"
            optional: true
          - name: "outer_wall_distance"
            type: "IntProvider of int 1..20"
            optional: true
          - name: "distribution_points"
            type: "IntProvider of int 1..20"
            optional: true
          - name: "point_offset"
            type: "IntProvider of int 1..10"
            optional: true
          - name: "min_gen_offset"
            type: "int"
            optional: true
          - name: "max_gen_offset"
            type: "int"
            optional: true
      - name: "GlowLichen"
        makes: "minecraft:glow_lichen"
        signature: "GlowLichen(block: MultifaceBlock, search_range?: int, chance_of_spreading?: float, can_place_on_floor?: bool, can_place_on_ceiling?: bool, can_place_on_wall?: bool, can_be_placed_on?: [block id] | block id)"
        params:
          - name: "block"
            type: "MultifaceBlock"
          - name: "search_range"
            type: "int 1..64"
            optional: true
          - name: "chance_of_spreading"
            type: "number 0..1"
            optional: true
          - name: "can_place_on_floor"
            type: "bool"
            optional: true
          - name: "can_place_on_ceiling"
            type: "bool"
            optional: true
          - name: "can_place_on_wall"
            type: "bool"
            optional: true
          - name: "can_be_placed_on"
            type: "block id | #block tag | list of block ids"
            optional: true
      - name: "HugeBrownMushroom"
        makes: "minecraft:huge_brown_mushroom"
        signature: "HugeBrownMushroom(cap_provider: BlockStateProviderRef, stem_provider: BlockStateProviderRef, can_place_on: BlockPredicate, foliage_radius?: int)"
        params:
          - name: "cap_provider"
            type: "BlockStateProviderRef"
          - name: "stem_provider"
            type: "BlockStateProviderRef"
          - name: "can_place_on"
            type: "BlockPredicate"
          - name: "foliage_radius"
            type: "int"
            optional: true
            doc: "Defaults to `2`."
      - name: "HugeFungus"
        makes: "minecraft:huge_fungus"
        signature: "HugeFungus(hat_state: BlockState, decor_state: BlockState, stem_state: BlockState, valid_base_block: BlockState, replaceable_blocks: BlockPredicate, planted?: bool)"
        params:
          - name: "hat_state"
            type: "BlockState"
          - name: "decor_state"
            type: "BlockState"
          - name: "stem_state"
            type: "BlockState"
          - name: "valid_base_block"
            type: "BlockState"
          - name: "replaceable_blocks"
            type: "BlockPredicate"
          - name: "planted"
            type: "bool"
            optional: true
      - name: "HugeRedMushroom"
        makes: "minecraft:huge_red_mushroom"
        signature: "HugeRedMushroom(cap_provider: BlockStateProviderRef, stem_provider: BlockStateProviderRef, can_place_on: BlockPredicate, foliage_radius?: int)"
        params:
          - name: "cap_provider"
            type: "BlockStateProviderRef"
          - name: "stem_provider"
            type: "BlockStateProviderRef"
          - name: "can_place_on"
            type: "BlockPredicate"
          - name: "foliage_radius"
            type: "int"
            optional: true
            doc: "Defaults to `2`."
      - name: "IcePatch"
        makes: "minecraft:ice_patch"
        signature: "IcePatch(state_provider: BlockStateProviderRef, radius: IntProvider, half_height: int, target: BlockPredicate)"
        params:
          - name: "state_provider"
            type: "BlockStateProviderRef"
          - name: "radius"
            type: "IntProvider of int 0..8"
          - name: "half_height"
            type: "int 0..4"
          - name: "target"
            type: "BlockPredicate"
      - name: "Iceberg"
        makes: "minecraft:iceberg"
        signature: "Iceberg(state: BlockState)"
        params:
          - name: "state"
            type: "BlockState"
      - name: "Lake"
        makes: "minecraft:lake"
        signature: "Lake(fluid: BlockStateProviderRef, barrier: BlockStateProviderRef, can_place_feature: BlockPredicate, can_replace_with_air_or_fluid: BlockPredicate, can_replace_with_barrier: BlockPredicate)"
        params:
          - name: "fluid"
            type: "BlockStateProviderRef"
          - name: "barrier"
            type: "BlockStateProviderRef"
          - name: "can_place_feature"
            type: "BlockPredicate"
          - name: "can_replace_with_air_or_fluid"
            type: "BlockPredicate"
          - name: "can_replace_with_barrier"
            type: "BlockPredicate"
      - name: "LargeDripstone"
        makes: "minecraft:large_dripstone"
        signature: "LargeDripstone(replaceable_blocks: [block id] | block id, column_radius: IntProvider, height_scale: FloatProvider, max_column_radius_to_cave_height_ratio: float, stalactite_bluntness: FloatProvider, stalagmite_bluntness: FloatProvider, wind_speed: FloatProvider, min_radius_for_wind: int, min_bluntness_for_wind: float, floor_to_ceiling_search_range?: int)"
        params:
          - name: "replaceable_blocks"
            type: "block id | #block tag | list of block ids"
          - name: "column_radius"
            type: "IntProvider of int 0..16"
          - name: "height_scale"
            type: "FloatProvider of number 0..20"
          - name: "max_column_radius_to_cave_height_ratio"
            type: "number 0..1"
          - name: "stalactite_bluntness"
            type: "FloatProvider of number 0.1..10"
          - name: "stalagmite_bluntness"
            type: "FloatProvider of number 0.1..10"
          - name: "wind_speed"
            type: "FloatProvider of number 0..2"
          - name: "min_radius_for_wind"
            type: "int 0..100"
          - name: "min_bluntness_for_wind"
            type: "number 0..1"
          - name: "floor_to_ceiling_search_range"
            type: "int 1..512"
            optional: true
      - name: "MonsterRoom"
        makes: "minecraft:monster_room"
        signature: "MonsterRoom()"
      - name: "MultifaceGrowth"
        makes: "minecraft:multiface_growth"
        signature: "MultifaceGrowth(block: MultifaceBlock, search_range?: int, chance_of_spreading?: float, can_place_on_floor?: bool, can_place_on_ceiling?: bool, can_place_on_wall?: bool, can_be_placed_on?: [block id] | block id)"
        params:
          - name: "block"
            type: "MultifaceBlock"
          - name: "search_range"
            type: "int 1..64"
            optional: true
          - name: "chance_of_spreading"
            type: "number 0..1"
            optional: true
          - name: "can_place_on_floor"
            type: "bool"
            optional: true
          - name: "can_place_on_ceiling"
            type: "bool"
            optional: true
          - name: "can_place_on_wall"
            type: "bool"
            optional: true
          - name: "can_be_placed_on"
            type: "block id | #block tag | list of block ids"
            optional: true
      - name: "NetherrackReplaceBlobs"
        makes: "minecraft:netherrack_replace_blobs"
        signature: "NetherrackReplaceBlobs(state: BlockState, target: BlockState, radius: IntProvider)"
        params:
          - name: "state"
            type: "BlockState"
          - name: "target"
            type: "BlockState"
          - name: "radius"
            type: "IntProvider of int 0..12"
      - name: "NoBonemealFlower"
        makes: "minecraft:no_bonemeal_flower"
        signature: "NoBonemealFlower(feature: FeatureRef, tries?: int, xz_spread?: int, y_spread?: int)"
        params:
          - name: "feature"
            type: "FeatureRef"
          - name: "tries"
            type: "int 1.."
            optional: true
            doc: "How many attempts will be made to find a placement. Defaults to 128."
          - name: "xz_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 7."
          - name: "y_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 3."
      - name: "NoOp"
        makes: "minecraft:no_op"
        signature: "NoOp()"
      - name: "NoSurfaceOre"
        makes: "minecraft:no_surface_ore"
        signature: "NoSurfaceOre(targets: [TargetBlock], size: int, discard_chance_on_air_exposure: float)"
        params:
          - name: "targets"
            type: "list of TargetBlock"
          - name: "size"
            type: "int 0..64"
          - name: "discard_chance_on_air_exposure"
            type: "number 0..1"
            doc: "Chance that feature placement will be discarded if the ore is exposed to air blocks."
      - name: "Ore"
        makes: "minecraft:ore"
        signature: "Ore(targets: [TargetBlock], size: int, discard_chance_on_air_exposure: float)"
        params:
          - name: "targets"
            type: "list of TargetBlock"
          - name: "size"
            type: "int 0..64"
          - name: "discard_chance_on_air_exposure"
            type: "number 0..1"
            doc: "Chance that feature placement will be discarded if the ore is exposed to air blocks."
      - name: "Overlay"
        makes: "minecraft:overlay"
        signature: "Overlay(features: PlacedFeatureListRef)"
        params:
          - name: "features"
            type: "PlacedFeatureListRef"
            doc: "The features to generate, in order. \\\nAll features are placed regardless of individual placement success."
      - name: "ProjectedRandomPatchySquare"
        makes: "minecraft:projected_random_patchy_square"
        signature: "ProjectedRandomPatchySquare(block: BlockStateProviderRef, project_through: BlockPredicate, size: IntProvider, max_projection_height: int)"
        params:
          - name: "block"
            type: "BlockStateProviderRef"
          - name: "project_through"
            type: "BlockPredicate"
          - name: "size"
            type: "IntProvider of int 1..16"
          - name: "max_projection_height"
            type: "int 0.."
      - name: "RandomBooleanSelector"
        makes: "minecraft:random_boolean_selector"
        signature: "RandomBooleanSelector(feature_false: FeatureRef, feature_true: FeatureRef)"
        params:
          - name: "feature_false"
            type: "FeatureRef"
          - name: "feature_true"
            type: "FeatureRef"
      - name: "RandomNeighborSpread"
        makes: "minecraft:random_neighbor_spread"
        signature: "RandomNeighborSpread(block: BlockStateProviderRef, accepted_neighbors: block id | [block id], can_replace: BlockPredicate, attempts: IntProvider, xz_offset: IntProvider, y_offset: IntProvider)"
        params:
          - name: "block"
            type: "BlockStateProviderRef"
          - name: "accepted_neighbors"
            type: "block id | #block tag | list of block ids"
          - name: "can_replace"
            type: "BlockPredicate"
          - name: "attempts"
            type: "IntProvider of int 1..3000"
          - name: "xz_offset"
            type: "IntProvider of int -16..16"
          - name: "y_offset"
            type: "IntProvider of int -16..16"
      - name: "RandomPatch"
        makes: "minecraft:random_patch"
        signature: "RandomPatch(feature: FeatureRef, tries?: int, xz_spread?: int, y_spread?: int)"
        params:
          - name: "feature"
            type: "FeatureRef"
          - name: "tries"
            type: "int 1.."
            optional: true
            doc: "How many attempts will be made to find a placement. Defaults to 128."
          - name: "xz_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 7."
          - name: "y_spread"
            type: "int 0.."
            optional: true
            doc: "Defaults to 3."
      - name: "RandomSelector"
        makes: "minecraft:random_selector"
        signature: "RandomSelector(features: [object], default: FeatureRef)"
        params:
          - name: "features"
            type: "list of { chance: number 0..1, feature: FeatureRef }"
          - name: "default"
            type: "FeatureRef"
      - name: "ReplaceSingleBlock"
        makes: "minecraft:replace_single_block"
        signature: "ReplaceSingleBlock(targets: [TargetBlock])"
        params:
          - name: "targets"
            type: "list of TargetBlock"
      - name: "RootSystem"
        makes: "minecraft:root_system"
        signature: "RootSystem(required_vertical_space_for_tree: int, level_test_distance: int, max_level_deviation: int, root_radius: int, root_placement_attempts: int, root_column_max_height: int, hanging_root_radius: int, hanging_roots_vertical_span: int, hanging_root_placement_attempts: int, allowed_vertical_water_for_tree: int, root_replaceable: block id | [block id], root_state_provider: BlockStateProviderRef, hanging_root_state_provider: BlockStateProviderRef, allowed_tree_position: BlockPredicate, feature: FeatureRef)"
        params:
          - name: "required_vertical_space_for_tree"
            type: "int 1..64"
          - name: "level_test_distance"
            type: "int 0..16"
          - name: "max_level_deviation"
            type: "int 0..64"
          - name: "root_radius"
            type: "int 1..64"
          - name: "root_placement_attempts"
            type: "int 1..256"
          - name: "root_column_max_height"
            type: "int 1..4096"
          - name: "hanging_root_radius"
            type: "int 1..64"
          - name: "hanging_roots_vertical_span"
            type: "int 1..16"
          - name: "hanging_root_placement_attempts"
            type: "int 0..256"
          - name: "allowed_vertical_water_for_tree"
            type: "int 1..64"
          - name: "root_replaceable"
            type: "block id | #block tag | list of block ids"
          - name: "root_state_provider"
            type: "BlockStateProviderRef"
          - name: "hanging_root_state_provider"
            type: "BlockStateProviderRef"
          - name: "allowed_tree_position"
            type: "BlockPredicate"
          - name: "feature"
            type: "FeatureRef"
      - name: "ScatteredOre"
        makes: "minecraft:scattered_ore"
        signature: "ScatteredOre(targets: [TargetBlock], size: int, discard_chance_on_air_exposure: float)"
        params:
          - name: "targets"
            type: "list of TargetBlock"
          - name: "size"
            type: "int 0..64"
          - name: "discard_chance_on_air_exposure"
            type: "number 0..1"
            doc: "Chance that feature placement will be discarded if the ore is exposed to air blocks."
      - name: "SculkPatch"
        makes: "minecraft:sculk_patch"
        signature: "SculkPatch(charge_count: int, amount_per_charge: int, spread_attempts: int, growth_rounds: int, spread_rounds: int)"
        params:
          - name: "charge_count"
            type: "int 1..32"
          - name: "amount_per_charge"
            type: "int 1..500"
          - name: "spread_attempts"
            type: "int 1..64"
          - name: "growth_rounds"
            type: "int 0..8"
          - name: "spread_rounds"
            type: "int 0..8"
      - name: "Sequence"
        makes: "minecraft:sequence"
        signature: "Sequence(features: PlacedFeatureListRef)"
        params:
          - name: "features"
            type: "PlacedFeatureListRef"
            doc: "The features to generate, in order. \\\nIf any feature in the list is not placed, the following features will also be skipped."
      - name: "SimpleBlock"
        makes: "minecraft:simple_block"
        signature: "SimpleBlock(to_place: BlockStateProviderRef, schedule_tick?: bool)"
        params:
          - name: "to_place"
            type: "BlockStateProviderRef"
          - name: "schedule_tick"
            type: "bool"
            optional: true
            doc: "Whether to schedule a block update. Defaults to `false`."
      - name: "SimpleRandomSelector"
        makes: "minecraft:simple_random_selector"
        signature: "SimpleRandomSelector(features: PlacedFeatureListRef)"
        params:
          - name: "features"
            type: "PlacedFeatureListRef"
      - name: "SingleBlockPillar"
        makes: "minecraft:single_block_pillar"
        signature: "SingleBlockPillar(block: BlockStateProviderRef, direction: VerticalDirection, can_replace?: BlockPredicate, chance_to_continue?: float, cap_feature?: PlacedFeatureRef)"
        params:
          - name: "block"
            type: "BlockStateProviderRef"
          - name: "direction"
            type: "VerticalDirection"
          - name: "can_replace"
            type: "BlockPredicate"
            optional: true
            doc: "Defaults to \"always true\"."
          - name: "chance_to_continue"
            type: "number 0..1"
            optional: true
            doc: "Defaults to 1."
          - name: "cap_feature"
            type: "PlacedFeatureRef"
            optional: true
      - name: "Speleothem"
        makes: "minecraft:speleothem"
        signature: "Speleothem(base_block: BlockState, pointed_block: BlockState, replaceable_blocks: [block id] | block id, chance_of_taller_generation?: float, chance_of_directional_spread?: float, chance_of_spread_radius2?: float, chance_of_spread_radius3?: float)"
        params:
          - name: "base_block"
            type: "BlockState"
          - name: "pointed_block"
            type: "BlockState"
          - name: "replaceable_blocks"
            type: "block id | #block tag | list of block ids"
          - name: "chance_of_taller_generation"
            type: "number 0..1"
            optional: true
          - name: "chance_of_directional_spread"
            type: "number 0..1"
            optional: true
          - name: "chance_of_spread_radius2"
            type: "number 0..1"
            optional: true
          - name: "chance_of_spread_radius3"
            type: "number 0..1"
            optional: true
      - name: "SpeleothemCluster"
        makes: "minecraft:speleothem_cluster"
        signature: "SpeleothemCluster(base_block: BlockState, pointed_block: BlockState, replaceable_blocks: [block id] | block id, floor_to_ceiling_search_range: int, height: IntProvider, radius: IntProvider, max_stalagmite_stalactite_height_diff: int, height_deviation: int, speleothem_block_layer_thickness: IntProvider, density: FloatProvider, wetness: FloatProvider, chance_of_speleothem_at_max_distance_from_center: float, max_distance_from_edge_affecting_chance_of_speleothem: int, max_distance_from_center_affecting_height_bias: int)"
        params:
          - name: "base_block"
            type: "BlockState"
          - name: "pointed_block"
            type: "BlockState"
          - name: "replaceable_blocks"
            type: "block id | #block tag | list of block ids"
          - name: "floor_to_ceiling_search_range"
            type: "int 1..512"
          - name: "height"
            type: "IntProvider of int 0..128"
          - name: "radius"
            type: "IntProvider of int 0..128"
          - name: "max_stalagmite_stalactite_height_diff"
            type: "int 0..64"
            doc: "Max height difference between the stalagmite and stalactite."
          - name: "height_deviation"
            type: "int 1..64"
          - name: "speleothem_block_layer_thickness"
            type: "IntProvider of int 0..128"
          - name: "density"
            type: "FloatProvider of number 0..2"
          - name: "wetness"
            type: "FloatProvider of number 0..2"
          - name: "chance_of_speleothem_at_max_distance_from_center"
            type: "number 0..1"
          - name: "max_distance_from_edge_affecting_chance_of_speleothem"
            type: "int 1..64"
          - name: "max_distance_from_center_affecting_height_bias"
            type: "int 1..64"
      - name: "Spike"
        makes: "minecraft:spike"
        signature: "Spike(state: BlockState, can_place_on: BlockPredicate, can_replace: BlockPredicate)"
        params:
          - name: "state"
            type: "BlockState"
          - name: "can_place_on"
            type: "BlockPredicate"
          - name: "can_replace"
            type: "BlockPredicate"
      - name: "SpringFeature"
        makes: "minecraft:spring_feature"
        signature: "SpringFeature(state: FluidState, valid_blocks: [block id] | block id, rock_count?: int, hole_count?: int, requires_block_below?: bool)"
        params:
          - name: "state"
            type: "FluidState"
          - name: "valid_blocks"
            type: "block id | #block tag | list of block ids"
          - name: "rock_count"
            type: "int"
            optional: true
            doc: "Defaults to `4`."
          - name: "hole_count"
            type: "int"
            optional: true
            doc: "Defaults to `1`."
          - name: "requires_block_below"
            type: "bool"
            optional: true
            doc: "Defaults to `true`."
      - name: "SteppedColumnCluster"
        makes: "minecraft:stepped_column_cluster"
        signature: "SteppedColumnCluster(block: BlockStateProviderRef, can_replace: BlockPredicate, continue_through: BlockPredicate, cannot_place_on: block id | [block id], column_reach: IntProvider, column_count: IntProvider, height: IntProvider, cluster_reach: IntProvider)"
        params:
          - name: "block"
            type: "BlockStateProviderRef"
          - name: "can_replace"
            type: "BlockPredicate"
          - name: "continue_through"
            type: "BlockPredicate"
          - name: "cannot_place_on"
            type: "block id | #block tag | list of block ids"
          - name: "column_reach"
            type: "IntProvider of int 0..3"
          - name: "column_count"
            type: "IntProvider of int 1..150"
          - name: "height"
            type: "IntProvider of int 1..10"
          - name: "cluster_reach"
            type: "IntProvider of int 0..13"
            doc: "The effective reach is limited by `height`."
      - name: "Template"
        makes: "minecraft:template"
        signature: "Template(templates: WeightedList, processors?: ProcessorListRef)"
        params:
          - name: "templates"
            type: "WeightedList of TemplateEntry"
          - name: "processors"
            type: "ProcessorListRef"
            optional: true
      - name: "Tree"
        makes: "minecraft:tree"
        signature: "Tree(minimum_size: FeatureSize, below_trunk_provider: BlockStateProviderRef, trunk_provider: BlockStateProviderRef, foliage_provider: BlockStateProviderRef, trunk_placer: TrunkPlacer, foliage_placer: FoliagePlacer, decorators: [TreeDecorator], ignore_vines?: bool, root_placer?: RootPlacer)"
        params:
          - name: "minimum_size"
            type: "FeatureSize"
          - name: "below_trunk_provider"
            type: "BlockStateProviderRef"
          - name: "trunk_provider"
            type: "BlockStateProviderRef"
          - name: "foliage_provider"
            type: "BlockStateProviderRef"
          - name: "trunk_placer"
            type: "TrunkPlacer"
          - name: "foliage_placer"
            type: "FoliagePlacer"
          - name: "decorators"
            type: "list of TreeDecorator"
          - name: "ignore_vines"
            type: "bool"
            optional: true
          - name: "root_placer"
            type: "RootPlacer"
            optional: true
      - name: "UnderwaterMagma"
        makes: "minecraft:underwater_magma"
        signature: "UnderwaterMagma(floor_search_range: int, placement_radius_around_floor: int, placement_probability_per_valid_position: float)"
        params:
          - name: "floor_search_range"
            type: "int 0..512"
          - name: "placement_radius_around_floor"
            type: "int 0..64"
          - name: "placement_probability_per_valid_position"
            type: "number 0..1"
      - name: "VegetationPatch"
        makes: "minecraft:vegetation_patch"
        signature: "VegetationPatch(surface: CaveSurface, depth: IntProvider, vertical_range: int, extra_bottom_block_chance: float, extra_edge_column_chance: float, vegetation_chance: float, xz_radius: IntProvider, replaceable: block id | [block id], ground_state: BlockStateProviderRef, vegetation_feature: FeatureRef)"
        params:
          - name: "surface"
            type: "CaveSurface"
          - name: "depth"
            type: "IntProvider of int 1..128"
          - name: "vertical_range"
            type: "int 1..256"
          - name: "extra_bottom_block_chance"
            type: "number 0..1"
          - name: "extra_edge_column_chance"
            type: "number 0..1"
          - name: "vegetation_chance"
            type: "number 0..1"
          - name: "xz_radius"
            type: "IntProvider of int"
          - name: "replaceable"
            type: "block id | #block tag | list of block ids"
          - name: "ground_state"
            type: "BlockStateProviderRef"
          - name: "vegetation_feature"
            type: "FeatureRef"
      - name: "Vines"
        makes: "minecraft:vines"
        signature: "Vines()"
      - name: "VoidStartPlatform"
        makes: "minecraft:void_start_platform"
        signature: "VoidStartPlatform()"
      - name: "WaterloggedVegetationPatch"
        makes: "minecraft:waterlogged_vegetation_patch"
        signature: "WaterloggedVegetationPatch(surface: CaveSurface, depth: IntProvider, vertical_range: int, extra_bottom_block_chance: float, extra_edge_column_chance: float, vegetation_chance: float, xz_radius: IntProvider, replaceable: block id | [block id], ground_state: BlockStateProviderRef, vegetation_feature: FeatureRef)"
        params:
          - name: "surface"
            type: "CaveSurface"
          - name: "depth"
            type: "IntProvider of int 1..128"
          - name: "vertical_range"
            type: "int 1..256"
          - name: "extra_bottom_block_chance"
            type: "number 0..1"
          - name: "extra_edge_column_chance"
            type: "number 0..1"
          - name: "vegetation_chance"
            type: "number 0..1"
          - name: "xz_radius"
            type: "IntProvider of int"
          - name: "replaceable"
            type: "block id | #block tag | list of block ids"
          - name: "ground_state"
            type: "BlockStateProviderRef"
          - name: "vegetation_feature"
            type: "FeatureRef"
      - name: "WeightedRandomSelector"
        makes: "minecraft:weighted_random_selector"
        signature: "WeightedRandomSelector(features: WeightedList)"
        params:
          - name: "features"
            type: "WeightedList of PlacedFeatureRef"
  - group: "Feature size"
    dispatcher: "minecraft:feature_size"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/feature_size"
    helpers:
      - name: "ThreeLayersFeatureSize"
        makes: "minecraft:three_layers_feature_size"
        signature: "ThreeLayersFeatureSize(min_clipped_height?: float, limit?: int, upper_limit?: int, lower_size?: int, middle_size?: int, upper_size?: int)"
        params:
          - name: "min_clipped_height"
            type: "number 0..80"
            optional: true
          - name: "limit"
            type: "int 0..80"
            optional: true
          - name: "upper_limit"
            type: "int 0..80"
            optional: true
          - name: "lower_size"
            type: "int 0..16"
            optional: true
          - name: "middle_size"
            type: "int 0..16"
            optional: true
          - name: "upper_size"
            type: "int 0..16"
            optional: true
      - name: "TwoLayersFeatureSize"
        makes: "minecraft:two_layers_feature_size"
        signature: "TwoLayersFeatureSize(min_clipped_height?: float, limit?: int, lower_size?: int, upper_size?: int)"
        params:
          - name: "min_clipped_height"
            type: "number 0..80"
            optional: true
          - name: "limit"
            type: "int 0..81"
            optional: true
          - name: "lower_size"
            type: "int 0..16"
            optional: true
          - name: "upper_size"
            type: "int 0..16"
            optional: true
  - group: "Float provider"
    dispatcher: "minecraft:float_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/float_provider"
    helpers:
      - name: "ClampedNormal"
        makes: "minecraft:clamped_normal"
        signature: "ClampedNormal(min: float, max: float, mean: float, deviation: float)"
        doc: "A number from a bell curve around `mean`, kept from `min` to `max`."
        params:
          - name: "min"
            type: "number 0.."
          - name: "max"
            type: "number 0.."
          - name: "mean"
            type: "number"
            doc: "The most likely value."
          - name: "deviation"
            type: "number"
            doc: "How widely values spread around `mean`."
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: float)"
        doc: "Always the same number. A plain number does the same thing."
        params:
          - name: "value"
            type: "number 0.."
      - name: "Trapezoid"
        makes: "minecraft:trapezoid"
        signature: "Trapezoid(min: float, max: float, plateau: float)"
        doc: "A number from `min` to `max`, most likely in a middle band `plateau` wide."
        params:
          - name: "min"
            type: "number 0.."
          - name: "max"
            type: "number 0.."
          - name: "plateau"
            type: "number"
      - name: "Uniform"
        makes: "minecraft:uniform"
        signature: "Uniform(min_inclusive: float, max_exclusive: float)"
        doc: "A random number from `min_inclusive` up to (not including) `max_exclusive`. Usually written as a range, `0.5..1.5`."
        params:
          - name: "min_inclusive"
            type: "number 0.."
          - name: "max_exclusive"
            type: "number 0.."
  - group: "Foliage placer"
    dispatcher: "minecraft:foliage_placer"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/foliage_placer"
    helpers:
      - name: "AcaciaFoliagePlacer"
        makes: "minecraft:acacia_foliage_placer"
        signature: "AcaciaFoliagePlacer(radius: IntProvider, offset: IntProvider)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
      - name: "BlobFoliagePlacer"
        makes: "minecraft:blob_foliage_placer"
        signature: "BlobFoliagePlacer(radius: IntProvider, offset: IntProvider, height: int)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "int 0..16"
      - name: "BushFoliagePlacer"
        makes: "minecraft:bush_foliage_placer"
        signature: "BushFoliagePlacer(radius: IntProvider, offset: IntProvider, height: int)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "int 0..16"
      - name: "CherryFoliagePlacer"
        makes: "minecraft:cherry_foliage_placer"
        signature: "CherryFoliagePlacer(radius: IntProvider, offset: IntProvider, height: IntProvider, wide_bottom_layer_hole_chance: float, corner_hole_chance: float, hanging_leaves_chance: float, hanging_leaves_extension_chance: float)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "IntProvider of int 4..16"
          - name: "wide_bottom_layer_hole_chance"
            type: "number 0..1"
          - name: "corner_hole_chance"
            type: "number 0..1"
          - name: "hanging_leaves_chance"
            type: "number 0..1"
          - name: "hanging_leaves_extension_chance"
            type: "number 0..1"
      - name: "DarkOakFoliagePlacer"
        makes: "minecraft:dark_oak_foliage_placer"
        signature: "DarkOakFoliagePlacer(radius: IntProvider, offset: IntProvider)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
      - name: "FancyFoliagePlacer"
        makes: "minecraft:fancy_foliage_placer"
        signature: "FancyFoliagePlacer(radius: IntProvider, offset: IntProvider, height: int)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "int 0..16"
      - name: "JungleFoliagePlacer"
        makes: "minecraft:jungle_foliage_placer"
        signature: "JungleFoliagePlacer(radius: IntProvider, offset: IntProvider, height: int)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "int 0..16"
      - name: "MegaPineFoliagePlacer"
        makes: "minecraft:mega_pine_foliage_placer"
        signature: "MegaPineFoliagePlacer(radius: IntProvider, offset: IntProvider, crown_height: IntProvider)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "crown_height"
            type: "IntProvider of int 0..24"
      - name: "PineFoliagePlacer"
        makes: "minecraft:pine_foliage_placer"
        signature: "PineFoliagePlacer(radius: IntProvider, offset: IntProvider, height: IntProvider)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "IntProvider of int 0..24"
      - name: "PoplarFoliagePlacer"
        makes: "minecraft:poplar_foliage_placer"
        signature: "PoplarFoliagePlacer(radius: IntProvider, offset: IntProvider, height: IntProvider, side_hole_chance: float)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "height"
            type: "IntProvider of int 5..16"
          - name: "side_hole_chance"
            type: "number 0..1"
      - name: "RandomSpreadFoliagePlacer"
        makes: "minecraft:random_spread_foliage_placer"
        signature: "RandomSpreadFoliagePlacer(radius: IntProvider, offset: IntProvider, foliage_height: IntProvider, leaf_placement_attempts: int)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "foliage_height"
            type: "IntProvider of int 1..512"
          - name: "leaf_placement_attempts"
            type: "int 0..256"
      - name: "SpruceFoliagePlacer"
        makes: "minecraft:spruce_foliage_placer"
        signature: "SpruceFoliagePlacer(radius: IntProvider, offset: IntProvider, trunk_height: IntProvider)"
        params:
          - name: "radius"
            type: "IntProvider of int 0..16"
          - name: "offset"
            type: "IntProvider of int 0..16"
          - name: "trunk_height"
            type: "IntProvider of int 0..24"
  - group: "Glyph provider"
    dispatcher: "minecraft:glyph_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/glyph_provider"
    helpers:
      - name: "Bitmap"
        makes: "minecraft:bitmap"
        signature: "Bitmap(file: string, ascent: int, chars: [string], height?: int, filter?: object)"
        params:
          - name: "file"
            type: "string"
          - name: "ascent"
            type: "int"
          - name: "chars"
            type: "list of string (at least 1) (at least 1)"
          - name: "height"
            type: "int"
            optional: true
          - name: "filter"
            type: "map of FontOption to bool"
            optional: true
      - name: "Reference"
        makes: "minecraft:reference"
        signature: "Reference(id: font id, filter?: object)"
        params:
          - name: "id"
            type: "font id"
          - name: "filter"
            type: "map of FontOption to bool"
            optional: true
      - name: "Space"
        makes: "minecraft:space"
        signature: "Space(advances: object, filter?: object)"
        params:
          - name: "advances"
            type: "map of string (exactly 1) to number"
          - name: "filter"
            type: "map of FontOption to bool"
            optional: true
      - name: "Ttf"
        makes: "minecraft:ttf"
        signature: "Ttf(file: string, size?: float, oversample?: float, shift?: [float], skip?: string | [string], filter?: object)"
        params:
          - name: "file"
            type: "string"
          - name: "size"
            type: "number"
            optional: true
          - name: "oversample"
            type: "number"
            optional: true
          - name: "shift"
            type: "list of number (exactly 2)"
            optional: true
          - name: "skip"
            type: "string | list of string"
            optional: true
          - name: "filter"
            type: "map of FontOption to bool"
            optional: true
      - name: "Unihex"
        makes: "minecraft:unihex"
        signature: "Unihex(hex_file: string, size_overrides?: [UnihexOverrideRange], filter?: object)"
        params:
          - name: "hex_file"
            type: "string"
            doc: "ZIP archive containing one or more *.hex files (files in archive with different extensions are ignored)."
          - name: "size_overrides"
            type: "list of UnihexOverrideRange"
            optional: true
            doc: "List of ranges to override the size of."
          - name: "filter"
            type: "map of FontOption to bool"
            optional: true
  - group: "Height provider"
    dispatcher: "minecraft:height_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/height_provider"
    helpers:
      - name: "BiasedToBottom"
        makes: "minecraft:biased_to_bottom"
        signature: "BiasedToBottom(min_inclusive: VerticalAnchor, max_inclusive: VerticalAnchor, inner?: int)"
        doc: "A random height from `min_inclusive` to `max_inclusive`, with low heights more likely."
        params:
          - name: "min_inclusive"
            type: "VerticalAnchor"
          - name: "max_inclusive"
            type: "VerticalAnchor"
          - name: "inner"
            type: "int 1.."
            optional: true
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: VerticalAnchor)"
        doc: "Always the same height."
        params:
          - name: "value"
            type: "VerticalAnchor"
      - name: "Trapezoid"
        makes: "minecraft:trapezoid"
        signature: "Trapezoid(min_inclusive: VerticalAnchor, max_inclusive: VerticalAnchor, plateau?: int)"
        doc: "A random height from `min_inclusive` to `max_inclusive`, most likely in the middle. Vanilla ores that peak at one depth use it."
        params:
          - name: "min_inclusive"
            type: "VerticalAnchor"
          - name: "max_inclusive"
            type: "VerticalAnchor"
          - name: "plateau"
            type: "int"
            optional: true
            doc: "Width of the most likely band in the middle. Defaults to 0, a triangle."
      - name: "Uniform"
        makes: "minecraft:uniform"
        signature: "Uniform(min_inclusive: VerticalAnchor, max_inclusive: VerticalAnchor)"
        doc: "A random height from `min_inclusive` to `max_inclusive`, each equally likely."
        params:
          - name: "min_inclusive"
            type: "VerticalAnchor"
          - name: "max_inclusive"
            type: "VerticalAnchor"
        example: "PlacedFeature low_iron {\n  feature = minecraft:ore_iron\n  placement = [Count(10), InSquare(), HeightRange(Uniform(AboveBottom(0), Absolute(64)))]\n}"
      - name: "VeryBiasedToBottom"
        makes: "minecraft:very_biased_to_bottom"
        signature: "VeryBiasedToBottom(min_inclusive: VerticalAnchor, max_inclusive: VerticalAnchor, inner?: int)"
        doc: "Like `BiasedToBottom`, with low heights even more likely."
        params:
          - name: "min_inclusive"
            type: "VerticalAnchor"
          - name: "max_inclusive"
            type: "VerticalAnchor"
          - name: "inner"
            type: "int 1.."
            optional: true
      - name: "WeightedList"
        makes: "minecraft:weighted_list"
        signature: "WeightedList(distribution: NonEmptyWeightedList)"
        doc: "Picks one of several height providers by weight."
        params:
          - name: "distribution"
            type: "NonEmptyWeightedList of HeightProvider"
  - group: "Hover event"
    dispatcher: "minecraft:hover_event"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/hover_event"
    helpers:
      - name: "ShowEntity"
        makes: "minecraft:show_entity"
        signature: "ShowEntity(id: entity_type id, uuid: [int] | string, name?: Text)"
        params:
          - name: "id"
            type: "entity_type id"
          - name: "uuid"
            type: "string | list of int (exactly 4)"
          - name: "name"
            type: "Text"
            optional: true
      - name: "ShowItem"
        makes: "minecraft:show_item"
        signature: "ShowItem(id: item id, components?: DataComponentPatch, count?: int)"
        params:
          - name: "id"
            type: "item id"
            doc: "ID of the item."
          - name: "components"
            type: "DataComponentPatch"
            optional: true
          - name: "count"
            type: "int 1..99"
            optional: true
            doc: "Number of items in the stack.\nDefaults to `1`."
      - name: "ShowText"
        makes: "minecraft:show_text"
        signature: "ShowText(value: Text)"
        params:
          - name: "value"
            type: "Text"
  - group: "Input control"
    dispatcher: "minecraft:input_control"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/input_control"
    helpers:
      - name: "Boolean"
        makes: "minecraft:boolean"
        signature: "Boolean(key: string | any, label: Text, initial?: bool, on_true?: string, on_false?: string)"
        params:
          - name: "key"
            type: "string (at least 1) | any"
            doc: "The input key, which is used to build macro command and generate custom action payload."
          - name: "label"
            type: "Text"
            doc: "Label displayed to the right of control."
          - name: "initial"
            type: "bool"
            optional: true
            doc: "Initial value of the control.\nDefaults to `false` (unchecked)."
          - name: "on_true"
            type: "string"
            optional: true
            doc: "String to send when the control is checked.\nDefaults to `\"true\"`."
          - name: "on_false"
            type: "string"
            optional: true
            doc: "String to send when the control is unchecked.\nDefaults to `\"false\"`."
      - name: "NumberRange"
        makes: "minecraft:number_range"
        signature: "NumberRange(key: string | any, label: Text, start: float, end: float, width?: int, label_format?: string, step?: float, initial?: float)"
        params:
          - name: "key"
            type: "string (at least 1) | any"
            doc: "The input key, which is used to build macro command and generate custom action payload."
          - name: "label"
            type: "Text"
            doc: "Label displayed on the slider."
          - name: "start"
            type: "number"
            doc: "Start value, inclusive."
          - name: "end"
            type: "number"
            doc: "End value, inclusive."
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Defaults to 200."
          - name: "label_format"
            type: "string"
            optional: true
            doc: "The translation to be used for building label.\n`%1$s` is replaced by `label`; `%2$s` is replaced by current value of the slider.\nDefaults to `options.generic_value`."
          - name: "step"
            type: "number 0..<"
            optional: true
            doc: "Step size of the input.\nIf not present, any value from range is allowed."
          - name: "initial"
            type: "number"
            optional: true
            doc: "Initial value of the slider. Rounded down nearest step.\nDefaults to the middle of the range."
      - name: "SingleOption"
        makes: "minecraft:single_option"
        signature: "SingleOption(key: string | any, label: Text, options: [Option | string], width?: int, label_visible?: bool)"
        params:
          - name: "key"
            type: "string (at least 1) | any"
            doc: "The input key, which is used to build macro command and generate custom action payload."
          - name: "label"
            type: "Text"
            doc: "Label displayed on the button."
          - name: "options"
            type: "list of (Option | string) (at least 1)"
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Defaults to 200."
          - name: "label_visible"
            type: "bool"
            optional: true
            doc: "Defaults to `true`."
      - name: "Text"
        makes: "minecraft:text"
        signature: "Text(key: string | any, label: Text, width?: int, label_visible?: bool, initial?: string, max_length?: int, multiline?: object)"
        params:
          - name: "key"
            type: "string (at least 1) | any"
            doc: "The input key, which is used to build macro command and generate custom action payload."
          - name: "label"
            type: "Text"
            doc: "Label displayed to the left of control."
          - name: "width"
            type: "int 1..1024"
            optional: true
            doc: "Defaults to 200."
          - name: "label_visible"
            type: "bool"
            optional: true
            doc: "Defaults to `true`."
          - name: "initial"
            type: "string"
            optional: true
            doc: "Initial contents of the text input.\nDefaults to `\"\"` (empty string)."
          - name: "max_length"
            type: "int 1.."
            optional: true
            doc: "Maximum length of input\nDefaults to 32."
          - name: "multiline"
            type: "{ max_lines?: int 1.., height?: int 1..512 }"
            optional: true
            doc: "If present, allows users to input multiple lines."
  - group: "Int provider"
    dispatcher: "minecraft:int_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/int_provider"
    helpers:
      - name: "BiasedToBottom"
        makes: "minecraft:biased_to_bottom"
        signature: "BiasedToBottom(min_inclusive: int, max_inclusive: int)"
        doc: "A random whole number from `min_inclusive` to `max_inclusive`, with low values more likely."
        params:
          - name: "min_inclusive"
            type: "int"
          - name: "max_inclusive"
            type: "int"
      - name: "Clamped"
        makes: "minecraft:clamped"
        signature: "Clamped(min_inclusive: int, max_inclusive: int, source: IntProvider)"
        doc: "Another provider's value, kept from `min_inclusive` to `max_inclusive`."
        params:
          - name: "min_inclusive"
            type: "int"
          - name: "max_inclusive"
            type: "int"
          - name: "source"
            type: "IntProvider of int"
            doc: "The provider to clamp."
      - name: "ClampedNormal"
        makes: "minecraft:clamped_normal"
        signature: "ClampedNormal(min_inclusive: int, max_inclusive: int, mean: float, deviation: float)"
        doc: "A whole number from a bell curve around `mean`, kept from `min_inclusive` to `max_inclusive`."
        params:
          - name: "min_inclusive"
            type: "int"
          - name: "max_inclusive"
            type: "int"
          - name: "mean"
            type: "number"
            doc: "The most likely value."
          - name: "deviation"
            type: "number"
            doc: "How widely values spread around `mean`."
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: int)"
        doc: "Always the same whole number. A plain number does the same thing."
        params:
          - name: "value"
            type: "int"
      - name: "Trapezoid"
        makes: "minecraft:trapezoid"
        signature: "Trapezoid(min: int, max: int, plateau: int)"
        doc: "A whole number from `min` to `max`, most likely in a middle band `plateau` wide and less likely toward the ends."
        params:
          - name: "min"
            type: "int"
          - name: "max"
            type: "int"
          - name: "plateau"
            type: "int"
            doc: "Width of the most likely band in the middle. `0` gives a triangle."
      - name: "Uniform"
        makes: "minecraft:uniform"
        signature: "Uniform(min_inclusive: int, max_inclusive: int)"
        doc: "A random whole number from `min_inclusive` to `max_inclusive`, each equally likely. Usually written as a range, `2..5`."
        params:
          - name: "min_inclusive"
            type: "int"
            doc: "The smallest value."
          - name: "max_inclusive"
            type: "int"
            doc: "The largest value."
        example: "PlacedFeature some_iron { feature = minecraft:ore_iron, placement = [Count(Uniform(2, 5)), InSquare()] }"
      - name: "VeryBiasedToBottom"
        makes: "minecraft:very_biased_to_bottom"
        signature: "VeryBiasedToBottom(min_inclusive: int, max_inclusive: int)"
        doc: "Like `BiasedToBottom`, with low values even more likely."
        params:
          - name: "min_inclusive"
            type: "int"
          - name: "max_inclusive"
            type: "int"
      - name: "WeightedList"
        makes: "minecraft:weighted_list"
        signature: "WeightedList(distribution: NonEmptyWeightedList)"
        doc: "Picks one of several providers by weight."
        params:
          - name: "distribution"
            type: "NonEmptyWeightedList of IntProvider of int"
  - group: "Item model"
    dispatcher: "minecraft:item_model"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/item_model"
    helpers:
      - name: "Composite"
        makes: "minecraft:composite"
        signature: "Composite(models: [ItemModel], transformation?: Transformation)"
        params:
          - name: "models"
            type: "list of ItemModel"
          - name: "transformation"
            type: "Transformation"
            optional: true
      - name: "Condition"
        makes: "minecraft:condition"
        signature: "Condition(property: ConditionalPropertyType, on_true: ItemModel, on_false: ItemModel, transformation?: Transformation)"
        params:
          - name: "property"
            type: "ConditionalPropertyType"
          - name: "on_true"
            type: "ItemModel"
          - name: "on_false"
            type: "ItemModel"
          - name: "transformation"
            type: "Transformation"
            optional: true
      - name: "Empty"
        makes: "minecraft:empty"
        signature: "Empty()"
      - name: "Model"
        makes: "minecraft:model"
        signature: "Model(model: ModelRef, tints?: [ModelTint], transformation?: Transformation)"
        params:
          - name: "model"
            type: "ModelRef"
          - name: "tints"
            type: "list of ModelTint"
            optional: true
          - name: "transformation"
            type: "Transformation"
            optional: true
      - name: "RangeDispatch"
        makes: "minecraft:range_dispatch"
        signature: "RangeDispatch(property: NumericPropertyType, entries: [object], scale?: float, fallback?: ItemModel, transformation?: Transformation)"
        params:
          - name: "property"
            type: "NumericPropertyType"
          - name: "entries"
            type: "list of { threshold: number, model: ItemModel }"
            doc: "List of ranges. Will select last entry with threshold less or equal to value.\nOrder does not matter, list will be sorted by threshold in ascending order."
          - name: "scale"
            type: "number"
            optional: true
            doc: "Factor to multiply the property value with. Defaults to 1."
          - name: "fallback"
            type: "ItemModel"
            optional: true
            doc: "Item model to render if no entries were less or equal to the value."
          - name: "transformation"
            type: "Transformation"
            optional: true
      - name: "Select"
        makes: "minecraft:select"
        signature: "Select(property: SelectPropertyType, fallback?: ItemModel, transformation?: Transformation)"
        params:
          - name: "property"
            type: "SelectPropertyType"
          - name: "fallback"
            type: "ItemModel"
            optional: true
            doc: "Item model to render if none of the cases matched the value."
          - name: "transformation"
            type: "Transformation"
            optional: true
      - name: "Special"
        makes: "minecraft:special"
        signature: "Special(model: object, base: ModelRef, transformation?: Transformation)"
        params:
          - name: "model"
            type: "special_item_model"
            doc: "Renders a special hardcoded model."
          - name: "base"
            type: "ModelRef"
            doc: "Base model, providing transformations, particle texture and GUI light."
          - name: "transformation"
            type: "Transformation"
            optional: true
  - group: "Level based value"
    dispatcher: "minecraft:level_based_value"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/level_based_value"
    helpers:
      - name: "Clamped"
        makes: "minecraft:clamped"
        signature: "Clamped(value: LevelBasedValue, min: float, max: float)"
        params:
          - name: "value"
            type: "LevelBasedValue"
          - name: "min"
            type: "number"
          - name: "max"
            type: "number"
      - name: "Exponent"
        makes: "minecraft:exponent"
        signature: "Exponent(base: LevelBasedValue, power: LevelBasedValue)"
        params:
          - name: "base"
            type: "LevelBasedValue"
          - name: "power"
            type: "LevelBasedValue"
      - name: "Fraction"
        makes: "minecraft:fraction"
        signature: "Fraction(numerator: LevelBasedValue, denominator: LevelBasedValue)"
        params:
          - name: "numerator"
            type: "LevelBasedValue"
          - name: "denominator"
            type: "LevelBasedValue"
      - name: "LevelsSquared"
        makes: "minecraft:levels_squared"
        signature: "LevelsSquared(added: float)"
        params:
          - name: "added"
            type: "number"
            doc: "Added to the result so that the result becomes `square(level) + added`."
      - name: "Linear"
        makes: "minecraft:linear"
        signature: "Linear(base: float, per_level_above_first: float)"
        params:
          - name: "base"
            type: "number"
            doc: "Base value at level 1."
          - name: "per_level_above_first"
            type: "number"
            doc: "Value increase per level above 1."
      - name: "Lookup"
        makes: "minecraft:lookup"
        signature: "Lookup(values: [LevelBasedValue], fallback: LevelBasedValue)"
        params:
          - name: "values"
            type: "list of LevelBasedValue (at least 1)"
            doc: "Indexed by `level - 1` to apply, if present"
          - name: "fallback"
            type: "LevelBasedValue"
            doc: "Applied if the level is greater than the size of `values`."
  - group: "List operation"
    dispatcher: "minecraft:list_operation"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/list_operation"
    helpers:
      - name: "Append"
        makes: "minecraft:append"
        signature: "Append(values: [FloatNumberProviderRef])"
        params:
          - name: "values"
            type: "list of FloatNumberProviderRef"
      - name: "Insert"
        makes: "minecraft:insert"
        signature: "Insert(values: [FloatNumberProviderRef], offset?: int)"
        params:
          - name: "values"
            type: "list of FloatNumberProviderRef"
          - name: "offset"
            type: "int 0.."
            optional: true
            doc: "The offset in the list to insert into. Defaults to 0."
      - name: "ReplaceAll"
        makes: "minecraft:replace_all"
        signature: "ReplaceAll(values: [FloatNumberProviderRef])"
        params:
          - name: "values"
            type: "list of FloatNumberProviderRef"
      - name: "ReplaceSection"
        makes: "minecraft:replace_section"
        signature: "ReplaceSection(values: [FloatNumberProviderRef], offset?: int, size?: int)"
        params:
          - name: "values"
            type: "list of FloatNumberProviderRef"
          - name: "offset"
            type: "int 0.."
            optional: true
            doc: "The offset of the section to replace. Defaults to 0."
          - name: "size"
            type: "int 0.."
            optional: true
            doc: "The size of the section to replace. Defaults to size of the new list."
  - group: "Loot condition"
    dispatcher: "minecraft:loot_condition"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/loot_condition"
    helpers:
      - name: "AllOf"
        makes: "minecraft:all_of"
        signature: "AllOf(terms: PredicateListRef)"
        doc: "Passes when every condition passes. Usually written with `&&`."
        params:
          - name: "terms"
            type: "PredicateListRef"
            doc: "Passes when all of these conditions pass."
      - name: "AnyOf"
        makes: "minecraft:any_of"
        signature: "AnyOf(terms: PredicateListRef)"
        doc: "Passes when any condition passes. Usually written with `||`."
        params:
          - name: "terms"
            type: "PredicateListRef"
            doc: "Passes when any of these conditions pass."
      - name: "DamageSourceProperties"
        makes: "minecraft:damage_source_properties"
        signature: "DamageSourceProperties(predicate: DamageSourcePredicate)"
        doc: "Passes when the damage that killed the entity matches a damage source predicate."
        params:
          - name: "predicate"
            type: "DamageSourcePredicate"
      - name: "EnchantmentActiveCheck"
        makes: "minecraft:enchantment_active_check"
        signature: "EnchantmentActiveCheck(active: bool)"
        doc: "Inside an enchantment's effects, passes when the enchantment is active (`true`) or inactive (`false`)."
        params:
          - name: "active"
            type: "bool"
      - name: "EntityProperties"
        makes: "minecraft:entity_properties"
        signature: "EntityProperties(entity: EntityTarget, predicate: EntityPredicate)"
        doc: "Passes when an entity matches an entity predicate."
        params:
          - name: "entity"
            type: "EntityTarget"
            doc: "Which entity to check: `this` (the entity that died, or the player that opened or broke something), `attacker`, `direct_attacker` or `attacking_player`."
          - name: "predicate"
            type: "EntityPredicate"
            doc: "What the entity must be."
      - name: "EntityScores"
        makes: "minecraft:entity_scores"
        signature: "EntityScores(entity: EntityTarget, scores: object)"
        doc: "Passes when an entity's scoreboard scores are in the given ranges."
        params:
          - name: "entity"
            type: "EntityTarget"
            doc: "Which entity to check: `this` (the entity that died, or the player that opened or broke something), `attacker`, `direct_attacker` or `attacking_player`."
          - name: "scores"
            type: "map of string to IntRange"
            doc: "A map from objective name to a range of scores."
      - name: "EnvironmentAttributeCheck"
        makes: "minecraft:environment_attribute_check"
        signature: "EnvironmentAttributeCheck(attribute: environment_attribute id, value: any)"
        params:
          - name: "attribute"
            type: "environment_attribute id"
          - name: "value"
            type: "any (depends on attribute)"
      - name: "FloatValueCheck"
        makes: "minecraft:float_value_check"
        signature: "FloatValueCheck(value: FloatNumberProviderRef, test: FloatRange)"
        doc: "Passes when a number is in a range."
        params:
          - name: "value"
            type: "FloatNumberProviderRef"
          - name: "test"
            type: "FloatRange"
            doc: "Passes when `value` is within the test range."
      - name: "IntValueCheck"
        makes: "minecraft:int_value_check"
        signature: "IntValueCheck(value: IntNumberProviderRef, test: IntRange)"
        doc: "Passes when a whole number is in a range."
        params:
          - name: "value"
            type: "IntNumberProviderRef"
          - name: "test"
            type: "IntRange"
            doc: "Passes when `value` is within the test range."
      - name: "Inverted"
        makes: "minecraft:inverted"
        signature: "Inverted(term: PredicateRef)"
        doc: "Passes when `term` fails. Usually written with `!`."
        params:
          - name: "term"
            type: "PredicateRef"
            doc: "The condition to invert."
      - name: "KilledByPlayer"
        makes: "minecraft:killed_by_player"
        signature: "KilledByPlayer(inverse?: bool)"
        doc: "Passes when a player killed the entity."
        params:
          - name: "inverse"
            type: "bool"
            optional: true
            doc: "`true` to pass when no player killed it instead."
      - name: "LocationCheck"
        makes: "minecraft:location_check"
        signature: "LocationCheck(predicate: LocationPredicate, offsetX?: int, offsetY?: int, offsetZ?: int)"
        doc: "Passes when the position, shifted by the offsets, matches a location predicate: biome, structure, light, block and more.\n\n- offsetX: Blocks added to x before checking.\n- offsetY: Blocks added to y before checking.\n- offsetZ: Blocks added to z before checking."
        params:
          - name: "predicate"
            type: "LocationPredicate"
            doc: "What the location must be."
          - name: "offsetX"
            type: "int"
            optional: true
          - name: "offsetY"
            type: "int"
            optional: true
          - name: "offsetZ"
            type: "int"
            optional: true
      - name: "MatchBlock"
        makes: "minecraft:match_block"
        signature: "MatchBlock(blocks?: block id | [block id], state?: BlockPredicateState, nbt?: string | value, components?: DataComponentExactPredicate, predicates?: DataComponentPredicate)"
        doc: "Passes when the block, such as the one being broken, matches."
        params:
          - name: "blocks"
            type: "block id | #block tag | list of block ids"
            optional: true
            doc: "The blocks or block tag that pass."
          - name: "state"
            type: "BlockPredicateState"
            optional: true
            doc: "Block states the block must have, such as `age = \"7\"`."
          - name: "nbt"
            type: "string | any (depends on blocks)"
            optional: true
          - name: "components"
            type: "DataComponentExactPredicate"
            optional: true
            doc: "Match exact data component values on the block entity."
          - name: "predicates"
            type: "DataComponentPredicate"
            optional: true
            doc: "Test data component values on the block entity."
      - name: "MatchTool"
        makes: "minecraft:match_tool"
        signature: "MatchTool(predicate: ItemPredicate)"
        doc: "Passes when the tool used, such as the pickaxe that broke a block, matches an item predicate."
        params:
          - name: "predicate"
            type: "ItemPredicate"
            doc: "What the tool must be."
      - name: "RandomChance"
        makes: "minecraft:random_chance"
        signature: "RandomChance(chance: FloatNumberProviderRef)"
        doc: "Passes at random, with probability `chance`."
        params:
          - name: "chance"
            type: "FloatNumberProviderRef"
            doc: "Accepts a value between `0` & `1` (inclusive)."
        example: "Predicate coin_flip = RandomChance(0.5)"
      - name: "RandomChanceWithEnchantedBonus"
        makes: "minecraft:random_chance_with_enchanted_bonus"
        signature: "RandomChanceWithEnchantedBonus(unenchanted_chance: float, enchanted_chance: LevelBasedValue, enchantment: enchantment id)"
        doc: "Passes at random, with a higher chance when the attacker's weapon has an enchantment, as looting does for rare drops."
        params:
          - name: "unenchanted_chance"
            type: "number 0..1"
            doc: "The chance without the enchantment, from 0 to 1."
          - name: "enchanted_chance"
            type: "LevelBasedValue"
            doc: "The chance by enchantment level."
          - name: "enchantment"
            type: "enchantment id"
            doc: "The enchantment that raises the chance."
      - name: "SurvivesExplosion"
        makes: "minecraft:survives_explosion"
        signature: "SurvivesExplosion()"
        doc: "Passes with a chance of 1 divided by the explosion's radius, and always when there was no explosion. Vanilla block drops use it so explosions destroy some items."
      - name: "TableBonus"
        makes: "minecraft:table_bonus"
        signature: "TableBonus(enchantment: enchantment id, chances: [float])"
        doc: "Passes at random, with the chance picked by the level of an enchantment on the tool. Vanilla uses it for saplings and flint."
        params:
          - name: "enchantment"
            type: "enchantment id"
            doc: "The enchantment whose level picks the chance."
          - name: "chances"
            type: "list of number 0..1"
            doc: "Probabilities for each enchantment level"
      - name: "TimeCheck"
        makes: "minecraft:time_check"
        signature: "TimeCheck(clock: world_clock id, value: IntRange, period?: int)"
        doc: "Passes when a world clock's time is in a range."
        params:
          - name: "clock"
            type: "world_clock id"
            doc: "The world clock to check."
          - name: "value"
            type: "IntRange"
            doc: "Check the current game tick."
          - name: "period"
            type: "int"
            optional: true
            doc: "Game tick supplied to `value` check gets modulo-divided by this.\nFor example, if set to 24000, `value` operates on a time period of days."
        example: "Predicate night = TimeCheck(clock = overworld, value = 13000..23000, period = 24000)"
      - name: "WeatherCheck"
        makes: "minecraft:weather_check"
        signature: "WeatherCheck(raining?: bool, thundering?: bool)"
        doc: "Passes when the weather matches. Leave out what doesn't matter."
        params:
          - name: "raining"
            type: "bool"
            optional: true
            doc: "`true` to require rain, `false` to require no rain."
          - name: "thundering"
            type: "bool"
            optional: true
            doc: "`true` to require a thunderstorm, `false` to require none."
        example: "Predicate storm = WeatherCheck(thundering = true)"
  - group: "Loot function"
    dispatcher: "minecraft:loot_function"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/loot_function"
    helpers:
      - name: "ApplyBonus"
        makes: "minecraft:apply_bonus"
        signature: "ApplyBonus(enchantment: enchantment id, formula: ApplyBonusFormula, condition?: PredicateRef)"
        doc: "Raises the count by the level of an enchantment on the tool, as fortune does for ores."
        params:
          - name: "enchantment"
            type: "enchantment id"
            doc: "The enchantment whose level raises the count."
          - name: "formula"
            type: "ApplyBonusFormula"
            doc: "How the level changes the count: `ore_drops`, `uniform_bonus_count` or `binomial_with_bonus_count`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "CopyComponents"
        makes: "minecraft:copy_components"
        signature: "CopyComponents(source: BlockEntityTarget | EntityTarget | ItemStackTarget, include?: [data_component_type id], exclude?: [data_component_type id], condition?: PredicateRef)"
        doc: "Copies data components from a block entity, entity or item onto the item."
        params:
          - name: "source"
            type: "BlockEntityTarget | EntityTarget | ItemStackTarget"
          - name: "include"
            type: "list of data_component_type ids"
            optional: true
            doc: "If omitted, all components present are included"
          - name: "exclude"
            type: "list of data_component_type ids"
            optional: true
            doc: "Defaults to none."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "CopyCustomData"
        makes: "minecraft:copy_custom_data"
        signature: "CopyCustomData(source: NbtProvider, ops: [object], condition?: PredicateRef)"
        doc: "Copies NBT from an entity, block entity or storage into the item's `custom_data`."
        params:
          - name: "source"
            type: "NbtProvider"
          - name: "ops"
            type: "list of { source: string, target: string, op: CopyNbtStrategy }"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "CopyName"
        makes: "minecraft:copy_name"
        signature: "CopyName(source: EntityTarget | BlockEntityTarget, condition?: PredicateRef)"
        doc: "Copies the custom name of an entity or block entity onto the item."
        params:
          - name: "source"
            type: "EntityTarget | BlockEntityTarget"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "CopyState"
        makes: "minecraft:copy_state"
        signature: "CopyState(block: block id, properties: [value], condition?: PredicateRef)"
        doc: "Copies block state properties of the broken block onto the item."
        params:
          - name: "block"
            type: "block id"
          - name: "properties"
            type: "list of any"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "Discard"
        makes: "minecraft:discard"
        signature: "Discard(condition?: PredicateRef)"
        doc: "Removes the item."
        params:
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "EnchantRandomly"
        makes: "minecraft:enchant_randomly"
        signature: "EnchantRandomly(options?: enchantment id | [enchantment id], only_compatible?: bool, include_additional_cost_component?: bool, condition?: PredicateRef)"
        doc: "Adds one random enchantment."
        params:
          - name: "options"
            type: "enchantment id | #enchantment tag | list of enchantment ids"
            optional: true
            doc: "The allowed enchantments. If omitted, all enchantments applicable to the item are possible."
          - name: "only_compatible"
            type: "bool"
            optional: true
            doc: "Whether to only enchant with item-compatible enchantments. Defaults to `true`.\n\nNote: Books are considered compatible with all Enchantments."
          - name: "include_additional_cost_component"
            type: "bool"
            optional: true
            doc: "Whether to add `additional_trade_cost` component to the enchanted item.\nAdditional cost value is determined by the enchantment level, with the formula `2 + random(0, 5 + level * 10) + 3 * level`.\nDefaults to `false`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "EnchantWithLevels"
        makes: "minecraft:enchant_with_levels"
        signature: "EnchantWithLevels(levels: IntNumberProviderRef, options?: enchantment id | [enchantment id], include_additional_cost_component?: bool, condition?: PredicateRef)"
        doc: "Enchants the item as an enchanting table would at this many levels."
        params:
          - name: "levels"
            type: "IntNumberProviderRef"
            doc: "The levels to enchant this item with."
          - name: "options"
            type: "enchantment id | #enchantment tag | list of enchantment ids"
            optional: true
            doc: "The allowed enchantments. If omitted, all enchantments applicable to the item are possible."
          - name: "include_additional_cost_component"
            type: "bool"
            optional: true
            doc: "Whether to add `additional_trade_cost` component to the enchanted item.\nAdditional cost value is equal to the level cost determined by `levels`.\nDefaults to `false`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "EnchantedCountIncrease"
        makes: "minecraft:enchanted_count_increase"
        signature: "EnchantedCountIncrease(count: FloatNumberProviderRef, enchantment: enchantment id, limit?: int, condition?: PredicateRef)"
        doc: "Adds to the count by the level of an enchantment on the attacker's weapon, as looting does."
        params:
          - name: "count"
            type: "FloatNumberProviderRef"
            doc: "Rounded *after* the number was multiplied by the looting level."
          - name: "enchantment"
            type: "enchantment id"
            doc: "Enchantment that increases yields."
          - name: "limit"
            type: "int"
            optional: true
            doc: "Limits the count of the item to a range."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "ExplorationMap"
        makes: "minecraft:exploration_map"
        signature: "ExplorationMap(destination: structure id | [structure id], decoration?: map_decoration_type id, zoom?: int, search_radius?: int, skip_existing_chunks?: bool, condition?: PredicateRef)"
        doc: "Turns an empty map into an explorer map that points to the nearest structure of a kind."
        params:
          - name: "destination"
            type: "structure id | #structure tag | list of structure ids"
            doc: "Generated structure to locate. Accepts any of the structure types used by the `/locate` command."
          - name: "decoration"
            type: "map_decoration_type id"
            optional: true
            doc: "The icon used to mark the destination on the map."
          - name: "zoom"
            type: "int"
            optional: true
            doc: "Defaults to 2."
          - name: "search_radius"
            type: "int"
            optional: true
            doc: "The size, in chunks, of the area to search for structures.\nThe area checked is square, not circular.\nRadius `0` causes only the current chunk to be searched, radius `1` causes the current chunk and eight adjacent chunks to be searched, and so on.\nDefaults to `50`."
          - name: "skip_existing_chunks"
            type: "bool"
            optional: true
            doc: "Whether to not search in chunks that have already been generated. Defaults to `true`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "ExplosionDecay"
        makes: "minecraft:explosion_decay"
        signature: "ExplosionDecay(condition?: PredicateRef)"
        doc: "Removes some of the stack when an explosion caused the drop, as vanilla blocks do."
        params:
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "FillPlayerHead"
        makes: "minecraft:fill_player_head"
        signature: "FillPlayerHead(entity: EntityTarget, condition?: PredicateRef)"
        doc: "Makes a player head show an entity's skin."
        params:
          - name: "entity"
            type: "EntityTarget"
            doc: "`this` to use the entity that died or the player that gained the advancement, opened the container, or broke the block."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "Filtered"
        makes: "minecraft:filtered"
        signature: "Filtered(item_filter: ItemPredicate, on_pass?: ItemModifier, on_fail?: ItemModifier, condition?: PredicateRef)"
        doc: "Applies `on_pass` to items that match `item_filter` and `on_fail` to those that don't."
        params:
          - name: "item_filter"
            type: "ItemPredicate"
            doc: "Item predicate to select items to modify."
          - name: "on_pass"
            type: "ItemModifier"
            optional: true
            doc: "Loot function to apply to the item when `item_filter` passes."
          - name: "on_fail"
            type: "ItemModifier"
            optional: true
            doc: "Loot function to apply to the item when `item_filter` fails."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "FurnaceSmelt"
        makes: "minecraft:furnace_smelt"
        signature: "FurnaceSmelt(condition?: PredicateRef)"
        doc: "Replaces the item with what smelting it in a furnace gives, as vanilla does for mobs killed by fire."
        params:
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "LimitCount"
        makes: "minecraft:limit_count"
        signature: "LimitCount(limit: object, condition?: PredicateRef)"
        doc: "Keeps the count within a range."
        params:
          - name: "limit"
            type: "{ min?: IntNumberProviderRef, max?: IntNumberProviderRef }"
            doc: "Limits the count of the item to a range."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "ModifyContents"
        makes: "minecraft:modify_contents"
        signature: "ModifyContents(component: ContainerComponents, modifier: ItemModifier, condition?: PredicateRef)"
        doc: "Applies an item modifier to every item inside a container item."
        params:
          - name: "component"
            type: "ContainerComponents"
            doc: "Describes target component's items to modify."
          - name: "modifier"
            type: "ItemModifier"
            doc: "Applied to every item inside container."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "Sequence"
        makes: "minecraft:sequence"
        signature: "Sequence(functions: ItemModifier, condition?: PredicateRef)"
        doc: "Applies several item modifiers in order."
        params:
          - name: "functions"
            type: "ItemModifier"
            doc: "List of functions to apply to this item."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetAttributes"
        makes: "minecraft:set_attributes"
        signature: "SetAttributes(modifiers: [AttributeModifier], replace?: bool, condition?: PredicateRef)"
        doc: "Adds attribute modifiers, such as attack damage, to the item."
        params:
          - name: "modifiers"
            type: "list of AttributeModifier"
            doc: "List of attribute modifiers to apply to this item."
          - name: "replace"
            type: "bool"
            optional: true
            doc: "Whether to replace existing attributes (otherwise append to existing). Defaults to `true`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetBannerPattern"
        makes: "minecraft:set_banner_pattern"
        signature: "SetBannerPattern(patterns: [BannerPatternLayer], append: bool, condition?: PredicateRef)"
        params:
          - name: "patterns"
            type: "list of BannerPatternLayer"
            doc: "List of banner pattern layers."
          - name: "append"
            type: "bool"
            doc: "Whether to add to the banner pattern list."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetBookCover"
        makes: "minecraft:set_book_cover"
        signature: "SetBookCover(title?: Filterable, author?: string, generation?: int, condition?: PredicateRef)"
        params:
          - name: "title"
            type: "Filterable of string (0 to 32)"
            optional: true
            doc: "If omitted, the original title is kept (or an empty string is used if there was no component)"
          - name: "author"
            type: "string"
            optional: true
            doc: "If omitted, the original author is kept (or an empty string is used if there was no component)"
          - name: "generation"
            type: "int 0..3"
            optional: true
            doc: "If omitted, the original generation is kept (or 0 is used if there was no component)"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetComponents"
        makes: "minecraft:set_components"
        signature: "SetComponents(components: DataComponentPatch, condition?: PredicateRef)"
        doc: "Sets data components on the item, such as `max_stack_size` or `rarity`."
        params:
          - name: "components"
            type: "DataComponentPatch"
            doc: "The components to set. A key starting with `!` removes that component."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetContents"
        makes: "minecraft:set_contents"
        signature: "SetContents(component: ContainerComponents, entries: [LootPoolEntry], condition?: PredicateRef)"
        doc: "Fills a container item, such as a shulker box or bundle, with entries."
        params:
          - name: "component"
            type: "ContainerComponents"
            doc: "Describes target component to be filled with items."
          - name: "entries"
            type: "list of LootPoolEntry"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetCount"
        makes: "minecraft:set_count"
        signature: "SetCount(count: IntNumberProviderRef, add?: bool, condition?: PredicateRef)"
        doc: "Sets the stack size, or adds to it with `add`."
        params:
          - name: "count"
            type: "IntNumberProviderRef"
            doc: "The count: a number, or a range such as `1..3` for a random count."
          - name: "add"
            type: "bool"
            optional: true
            doc: "Whether to add to the existing count. Defaults to `false`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
        example: "ItemModifier few = SetCount(1..3)"
      - name: "SetCustomData"
        makes: "minecraft:set_custom_data"
        signature: "SetCustomData(tag: CustomData, condition?: PredicateRef)"
        doc: "Sets the item's `custom_data` component."
        params:
          - name: "tag"
            type: "CustomData"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetCustomModelData"
        makes: "minecraft:set_custom_model_data"
        signature: "SetCustomModelData(floats?: object, flags?: object, strings?: object, colors?: object, condition?: PredicateRef)"
        params:
          - name: "floats"
            type: "list_operation"
            optional: true
          - name: "flags"
            type: "list_operation"
            optional: true
          - name: "strings"
            type: "list_operation"
            optional: true
          - name: "colors"
            type: "list_operation"
            optional: true
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetDamage"
        makes: "minecraft:set_damage"
        signature: "SetDamage(damage: FloatNumberProviderRef, add?: bool, condition?: PredicateRef)"
        doc: "Sets how damaged a tool or armour piece is."
        params:
          - name: "damage"
            type: "FloatNumberProviderRef"
            doc: "Decimal percentage. Can be negative when used in combination with `add`. \\\nAccepts a value between `-1` & `1` (inclusive)."
          - name: "add"
            type: "bool"
            optional: true
            doc: "Whether to add to the existing damage of the item. Defaults to `false`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetEnchantments"
        makes: "minecraft:set_enchantments"
        signature: "SetEnchantments(enchantments: object, add?: bool, condition?: PredicateRef)"
        doc: "Sets enchantment levels on the item."
        params:
          - name: "enchantments"
            type: "map of enchantment id to IntNumberProviderRef"
            doc: "A map of enchantments to levels. Setting an enchantment to `0` removes it from the item."
          - name: "add"
            type: "bool"
            optional: true
            doc: "Whether to add to the level of each enchantment. Defaults to `false`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetFireworkExplosion"
        makes: "minecraft:set_firework_explosion"
        signature: "SetFireworkExplosion(shape?: FireworkShape, colors?: [int], fade_colors?: [int], trail?: bool, twinkle?: bool, condition?: PredicateRef)"
        params:
          - name: "shape"
            type: "FireworkShape"
            optional: true
            doc: "If omitted, the original shape is kept (or `small_ball` is used if there was no component)."
          - name: "colors"
            type: "list of int"
            optional: true
            doc: "If omitted, the original colors are kept (or `[]` is used if there was no component).\nCalculated as `RED << 16 | GREEN << 8 | BLUE`. Each of these fields must be between 0 and 255, inclusive."
          - name: "fade_colors"
            type: "list of int"
            optional: true
            doc: "If omitted, the original fade colors are kept (or `[]` is used if there was no component).\nCalculated as `RED << 16 | GREEN << 8 | BLUE`. Each of these fields must be between 0 and 255, inclusive."
          - name: "trail"
            type: "bool"
            optional: true
            doc: "If omitted, the original `has_trail` value is kept (or `false` is used if there was no component)."
          - name: "twinkle"
            type: "bool"
            optional: true
            doc: "If omitted, the original `has_twinkle` value is kept (or `false` is used if there was no component)."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetFireworks"
        makes: "minecraft:set_fireworks"
        signature: "SetFireworks(flight_duration?: int, explosions?: object, condition?: PredicateRef)"
        params:
          - name: "flight_duration"
            type: "int 0..255"
            optional: true
            doc: "If omitted, the flight duration of the item is left untouched - or set to 0 if the component did not exist before."
          - name: "explosions"
            type: "list_operation"
            optional: true
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetInstrument"
        makes: "minecraft:set_instrument"
        signature: "SetInstrument(options: instrument id | [instrument id], condition?: PredicateRef)"
        params:
          - name: "options"
            type: "instrument id | #instrument tag | list of instrument ids"
            doc: "Sets the instrument tag for a goat horn."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetItem"
        makes: "minecraft:set_item"
        signature: "SetItem(item: item id, condition?: PredicateRef)"
        doc: "Changes the item to another one, keeping count and components."
        params:
          - name: "item"
            type: "item id"
            doc: "The new item."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetLootTable"
        makes: "minecraft:set_loot_table"
        signature: "SetLootTable(loot_table_id: loot_table id, seed?: int, condition?: PredicateRef)"
        doc: "Sets the loot table a container item, such as a chest, rolls when placed and opened."
        params:
          - name: "loot_table_id"
            type: "loot_table id"
            doc: "The loot table to set to the container block item."
          - name: "seed"
            type: "int"
            optional: true
            doc: "The container seed to use. Defaults to a random seed."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetLore"
        makes: "minecraft:set_lore"
        signature: "SetLore(lore: [Text], mode: ListOperationMode, entity?: EntityTarget, condition?: PredicateRef)"
        doc: "Sets or changes the item's lore lines."
        params:
          - name: "lore"
            type: "list of Text"
            doc: "The lore lines, as text components."
          - name: "mode"
            type: "ListOperationMode"
            doc: "Determines how the existing list should be modified."
          - name: "entity"
            type: "EntityTarget"
            optional: true
            doc: "The entity used to resolve the text components."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetName"
        makes: "minecraft:set_name"
        signature: "SetName(name: Text, entity?: EntityTarget, target?: SetNameTarget, condition?: PredicateRef)"
        doc: "Sets the item's name."
        params:
          - name: "name"
            type: "Text"
            doc: "The name, as a text component."
          - name: "entity"
            type: "EntityTarget"
            optional: true
            doc: "Specifies the entity to act as the target `@s` in the JSON text component."
          - name: "target"
            type: "SetNameTarget"
            optional: true
            doc: "Which name component to set. Defaults to `custom_name`."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetOminousBottleAmplifier"
        makes: "minecraft:set_ominous_bottle_amplifier"
        signature: "SetOminousBottleAmplifier(amplifier: IntNumberProviderRef, condition?: PredicateRef)"
        params:
          - name: "amplifier"
            type: "IntNumberProviderRef"
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetPotion"
        makes: "minecraft:set_potion"
        signature: "SetPotion(id: potion id, condition?: PredicateRef)"
        doc: "Sets the potion of a potion, splash potion, lingering potion or tipped arrow."
        params:
          - name: "id"
            type: "potion id"
            doc: "The potion identifier."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetRandomDyes"
        makes: "minecraft:set_random_dyes"
        signature: "SetRandomDyes(number_of_dyes: IntNumberProviderRef, condition?: PredicateRef)"
        params:
          - name: "number_of_dyes"
            type: "IntNumberProviderRef"
            doc: "Applies specified number of random dyes to the item. \\\nFor example, one possible outcome of `\"number_of_dyes\": 2` is `#2C3065`, which is the combination of a blue dye and a black dye. \\\nThe same dye color can be selected multiple times."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetRandomPotion"
        makes: "minecraft:set_random_potion"
        signature: "SetRandomPotion(options?: potion id | [potion id], condition?: PredicateRef)"
        params:
          - name: "options"
            type: "potion id | #potion tag | list of potion ids"
            optional: true
            doc: "Possible potions to select from.\nDefaults to all potions."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetStewEffect"
        makes: "minecraft:set_stew_effect"
        signature: "SetStewEffect(effects?: [StewEffect], condition?: PredicateRef)"
        params:
          - name: "effects"
            type: "list of StewEffect"
            optional: true
            doc: "Sets the status effects for suspicious stew."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetWritableBookPages"
        makes: "minecraft:set_writable_book_pages"
        signature: "SetWritableBookPages(pages: [Filterable], mode: ListOperationMode, condition?: PredicateRef)"
        params:
          - name: "pages"
            type: "list of Filterable of string"
            doc: "Sets the pages of a book and quill."
          - name: "mode"
            type: "ListOperationMode"
            doc: "Determines how the existing list should be modified."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "SetWrittenBookPages"
        makes: "minecraft:set_written_book_pages"
        signature: "SetWrittenBookPages(pages: [Filterable], mode: ListOperationMode, condition?: PredicateRef)"
        params:
          - name: "pages"
            type: "list of Filterable of Text"
            doc: "Sets the pages of a written book."
          - name: "mode"
            type: "ListOperationMode"
            doc: "Determines how the existing list should be modified."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
      - name: "ToggleTooltips"
        makes: "minecraft:toggle_tooltips"
        signature: "ToggleTooltips(toggles: object, condition?: PredicateRef)"
        doc: "Shows or hides tooltip parts of the item, such as enchantments or attribute modifiers."
        params:
          - name: "toggles"
            type: "map of data_component_type id to bool"
            doc: "Toggles which tooltips are shown."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the function to apply. Combine several with `&&` and `||`."
  - group: "Loot pool entry"
    dispatcher: "minecraft:loot_pool_entry"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/loot_pool_entry"
    helpers:
      - name: "Alternatives"
        makes: "minecraft:alternatives"
        signature: "Alternatives(children: [LootPoolEntry], modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Uses the first child whose conditions pass, and ignores the rest."
        params:
          - name: "children"
            type: "list of LootPoolEntry (at least 1)"
            doc: "The entries to try, in order."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Dynamic"
        makes: "minecraft:dynamic"
        signature: "Dynamic(name: DynamicDrops, weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Drops a block's own contents: `contents` for a shulker box's items, `sherds` for a decorated pot's sherds."
        params:
          - name: "name"
            type: "DynamicDrops"
            doc: "Which contents to drop."
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Empty"
        makes: "minecraft:empty"
        signature: "Empty(weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Gives nothing. Give it a weight to make a pool sometimes drop nothing."
        params:
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
        example: "LootTable maybe {\n  pools = [Pool(1, [Item(name = diamond), Empty().Weight(4)])]\n}"
      - name: "Group"
        makes: "minecraft:group"
        signature: "Group(children: [LootPoolEntry], modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Uses every child whose conditions pass."
        params:
          - name: "children"
            type: "list of LootPoolEntry (at least 1)"
            doc: "The entries to use."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Item"
        makes: "minecraft:item"
        signature: "Item(name: item id, weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Gives one item. A plain item id where an entry is expected does the same thing."
        params:
          - name: "name"
            type: "item id"
            doc: "The item."
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
        example: "LootTable gems {\n  pools = [Pool(1, [Item(name = diamond).Weight(1), Item(name = emerald).Weight(3)])]\n}"
      - name: "LootTable"
        makes: "minecraft:loot_table"
        signature: "LootTable(value: LootTableListRef, expand?: bool, weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Rolls another loot table and gives what it drops."
        params:
          - name: "value"
            type: "LootTableListRef"
            doc: "The loot table, by id, or a table written inline."
          - name: "expand"
            type: "bool"
            optional: true
            doc: "If `true`, each of the loot tables becomes an independent entry in the pool with the same `weight` and `quality`. \\\nIf `false`, drops all loot tables. \\\nDefaults to `false`."
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Sequence"
        makes: "minecraft:sequence"
        signature: "Sequence(children: [LootPoolEntry], modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Uses children in order until one's conditions fail."
        params:
          - name: "children"
            type: "list of LootPoolEntry (at least 1)"
            doc: "The entries to use, in order."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Slots"
        makes: "minecraft:slots"
        signature: "Slots(slot_source: SlotSource, weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Gives items taken from slots of an entity or container, picked by a slot source."
        params:
          - name: "slot_source"
            type: "SlotSource"
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
      - name: "Tag"
        makes: "minecraft:tag"
        signature: "Tag(items: ItemListRef, expand?: bool, weight?: int, quality?: int, modifier?: ItemModifier, condition?: PredicateRef)"
        doc: "Gives items from an item tag: all of them, or with `expand`, one picked at random. A `#tag` where an entry is expected does the same thing."
        params:
          - name: "items"
            type: "ItemListRef"
            doc: "The item tag."
          - name: "expand"
            type: "bool"
            optional: true
            doc: "If `true`, each of the items becomes an independent entry in the pool with the same `weight` and `quality`. \\\nIf `false`, drops all items in the tag. \\\nDefaults to `false`."
          - name: "weight"
            type: "int 1.."
            optional: true
            doc: "How likely this entry is to be picked against the other entries of the pool, relative to their weights. Defaults to 1."
          - name: "quality"
            type: "int"
            optional: true
            doc: "Changes `weight` by the luck of the player: the weight becomes `weight + quality * luck`. Defaults to 0."
          - name: "modifier"
            type: "ItemModifier"
            optional: true
            doc: "Item modifiers (loot functions) applied to the items this entry gives."
          - name: "condition"
            type: "PredicateRef"
            optional: true
            doc: "Conditions that must all pass for the entry to be used. Combine several with `&&` and `||`."
  - group: "Material condition"
    dispatcher: "minecraft:material_condition"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/material_condition"
    helpers:
      - name: "AboveSurface"
        makes: "minecraft:above_preliminary_surface"
        signature: "AboveSurface()"
        doc: "True above the preliminary surface: the rough terrain height worked out from the noise before caves are carved. Vanilla wraps its whole surface layer in it so cave floors deep underground don't get grass."
        example: "SurfaceRule top = If(AboveSurface() && StoneDepth(Floor)) { Block(grass_block) }"
      - name: "AboveWater"
        makes: "minecraft:water"
        signature: "AboveWater(offset: int = 0, surface_depth_multiplier: int = 0, add_stone_depth: bool = false)"
        doc: "True for blocks at or above the water surface over them, shifted by `offset`, and also where there is no water above at all. Vanilla uses it so grass doesn't grow under lakes and oceans."
        params:
          - name: "offset"
            type: "int"
            optional: true
            default: "0"
            doc: "Blocks added to the water height before comparing. `-1` also passes one block below the water."
          - name: "surface_depth_multiplier"
            type: "int -20..20"
            optional: true
            default: "0"
            doc: "Multiplies the surface depth noise and adds it to the water height, for an uneven shoreline. From -20 to 20."
          - name: "add_stone_depth"
            type: "bool"
            optional: true
            default: "false"
            doc: "Adds the block's depth below the surface to its Y before comparing."
        example: "SurfaceRule dry_grass = If(AboveWater()) { Block(grass_block) }"
      - name: "Biome"
        makes: "minecraft:biome"
        signature: "Biome(biome_is: [biome id] | biome id)"
        doc: "True when the block's biome is one of these. Takes any number of biomes."
        params:
          - name: "biome_is"
            type: "biome id | #biome tag | list of biome ids"
            doc: "The biomes, by id."
        example: "SurfaceRule desert_sand = If(Biome(desert, beach)) { Block(sand) }"
      - name: "Hole"
        makes: "minecraft:hole"
        signature: "Hole()"
        doc: "True where the surface depth noise is zero or less: spots where the surface layer is missing. Vanilla badlands leave these as plain terracotta."
        example: "SurfaceRule bands = If(!Hole()) { Block(orange_terracotta) }"
      - name: "NoiseThreshold"
        makes: "minecraft:noise_threshold"
        signature: "NoiseThreshold(noise: noise id, min_threshold: float, max_threshold: float, is_3d?: bool)"
        doc: "True where a noise, sampled at the block's x and z, lies between `min_threshold` and `max_threshold`. Use it for patches such as coarse dirt in savannas."
        params:
          - name: "noise"
            type: "noise id"
            doc: "The noise to sample, by id (a `Noise` declaration or a vanilla one such as `surface`)."
          - name: "min_threshold"
            type: "number"
            doc: "Lowest noise value that passes. Written as `.Min(x)`."
          - name: "max_threshold"
            type: "number"
            doc: "Highest noise value that passes. Written as `.Max(x)`."
          - name: "is_3d"
            type: "bool"
            optional: true
            doc: "Defaults to `false`."
        example: "SurfaceRule patches = If(NoiseThreshold(surface).Min(0.2).Max(1)) { Block(coarse_dirt) }"
      - name: "Not"
        makes: "minecraft:not"
        signature: "Not(invert: MaterialConditionRef)"
        doc: "True when `invert` is false. Usually written with `!`, as in `!Hole()`."
        params:
          - name: "invert"
            type: "MaterialConditionRef"
            doc: "The condition to invert."
      - name: "Steep"
        makes: "minecraft:steep"
        signature: "Steep()"
        doc: "True on steep slopes, where the terrain height jumps by four or more blocks between neighbouring columns. Vanilla puts stone on steep mountainsides with it."
        example: "SurfaceRule cliffs = If(Steep()) { Block(stone) }"
      - name: "StoneDepth"
        makes: "minecraft:stone_depth"
        signature: "StoneDepth(surface_type: CaveSurface, offset: int = 0, add_surface_depth: bool = false, secondary_depth_range: int = 0)"
        doc: "True for blocks close to a surface: just under the ground's top (`Floor`) or just above a cave roof's underside (`Ceiling`). Vanilla puts grass on the first block and dirt a few blocks deeper with it."
        params:
          - name: "surface_type"
            type: "CaveSurface"
            doc: "Which surface depth is counted from: `floor` counts down from the top of the ground, `ceiling` counts up from the underside of an overhang or cave roof."
          - name: "offset"
            type: "int"
            optional: true
            default: "0"
            doc: "Extra depth that still passes. With `0` only the surface block itself passes; with `2` the top three blocks do."
          - name: "add_surface_depth"
            type: "bool"
            optional: true
            default: "false"
            doc: "Adds the surface depth to `offset`: a noise of a few blocks that varies across the world, so the layer has an uneven bottom like vanilla dirt."
          - name: "secondary_depth_range"
            type: "int"
            optional: true
            default: "0"
            doc: "Adds a second noise, from 0 up to this many blocks, to the depth. Vanilla uses it for patchy layers such as badlands terracotta."
        example: "SurfaceRule grass = If(StoneDepth(Floor)) { Block(grass_block) }\nSurfaceRule dirt = If(StoneDepth(Floor).Add()) { Block(dirt) }"
      - name: "Temperature"
        makes: "minecraft:temperature"
        signature: "Temperature()"
        doc: "True where the biome is cold enough at this height for snow to fall."
        example: "SurfaceRule snowy = If(Temperature()) { Block(snow_block) }"
      - name: "VerticalGradient"
        makes: "minecraft:vertical_gradient"
        signature: "VerticalGradient(random_name: string, true_at_and_below: VerticalAnchor, false_at_and_above: VerticalAnchor)"
        doc: "True at and below `true_at_and_below`, false at and above `false_at_and_above`, and true at random in between, less often the higher the block. Vanilla makes the bedrock floor and the deepslate transition with it."
        params:
          - name: "random_name"
            type: "string"
            doc: "Seeds the randomness. Give each gradient its own name, such as `\"bedrock_floor\"`, so they don't line up."
          - name: "true_at_and_below"
            type: "VerticalAnchor"
            doc: "The height where the condition is always true, and below."
          - name: "false_at_and_above"
            type: "VerticalAnchor"
            doc: "The height where the condition is always false, and above."
        example: "SurfaceRule bedrock = If(VerticalGradient(\"bedrock_floor\", AboveBottom(0), AboveBottom(5))) { Block(bedrock) }"
      - name: "YAbove"
        makes: "minecraft:y_above"
        signature: "YAbove(anchor: VerticalAnchor, surface_depth_multiplier: int = 0, add_stone_depth: bool = false)"
        doc: "True for blocks at or above a height. The height can shift with the surface depth noise for an uneven edge."
        params:
          - name: "anchor"
            type: "VerticalAnchor"
            doc: "The height, as a number (absolute Y) or an anchor such as `AboveBottom(5)`."
          - name: "surface_depth_multiplier"
            type: "int -20..20"
            optional: true
            default: "0"
            doc: "Multiplies the surface depth noise and adds it to the height. From -20 to 20. Written as `.Mul(x)`."
          - name: "add_stone_depth"
            type: "bool"
            optional: true
            default: "false"
            doc: "Adds the block's depth below the surface to its Y before comparing. Written as `.Add()`."
        example: "SurfaceRule peaks = If(YAbove(200)) { Block(snow_block) }"
  - group: "Material rule"
    dispatcher: "minecraft:material_rule"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/material_rule"
    helpers:
      - name: "Bandlands"
        makes: "minecraft:bandlands"
        signature: "Bandlands()"
        doc: "Places the striped terracotta of badlands, with the colour picked by height."
        example: "SurfaceRule stripes = If(YAbove(63)) { Bandlands() }"
      - name: "Block"
        makes: "minecraft:block"
        signature: "Block(result_state: BlockState)"
        doc: "Places one block. Writing just a block id where a rule is expected does the same thing."
        params:
          - name: "result_state"
            type: "BlockState"
            doc: "The block, with optional state such as `oak_log[axis = y]`."
        example: "SurfaceRule floor = Block(stone)"
      - name: "Condition"
        makes: "minecraft:condition"
        signature: "Condition(if_true: MaterialConditionRef, then_run: MaterialRuleRef)"
        doc: "Runs `then_run` only where `if_true` passes. Usually written `If(condition) { rules }`."
        params:
          - name: "if_true"
            type: "MaterialConditionRef"
            doc: "The condition to test."
          - name: "then_run"
            type: "MaterialRuleRef"
            doc: "The rule to run when it passes."
        example: "SurfaceRule grass = If(StoneDepth(Floor)) { Block(grass_block) }"
      - name: "OreVein"
        makes: "minecraft:ore_vein"
        signature: "OreVein(ore_block: BlockState, raw_ore_block: BlockState, filler_block: BlockState, raw_ore_chance: float, density: DensityFunctionRef, richness: DensityFunctionRef, filler_gap: DensityFunctionRef)"
        params:
          - name: "ore_block"
            type: "BlockState"
          - name: "raw_ore_block"
            type: "BlockState"
          - name: "filler_block"
            type: "BlockState"
          - name: "raw_ore_chance"
            type: "number 0..1"
          - name: "density"
            type: "DensityFunctionRef"
          - name: "richness"
            type: "DensityFunctionRef"
          - name: "filler_gap"
            type: "DensityFunctionRef"
      - name: "Sequence"
        makes: "minecraft:sequence"
        signature: "Sequence(sequence: [MaterialRuleRef])"
        doc: "Tries each rule in order and stops at the first one that places a block. A list `[a, b]`, or several rules in an `If { }` body, makes the same thing."
        params:
          - name: "sequence"
            type: "list of MaterialRuleRef"
            doc: "The rules, in order."
        example: "SurfaceRule top = [\n  If(StoneDepth(Floor)) { Block(grass_block) },\n  Block(dirt),\n]"
  - group: "Nbt provider"
    dispatcher: "minecraft:nbt_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/nbt_provider"
    helpers:
      - name: "Context"
        makes: "minecraft:context"
        signature: "Context(target: NbtContextTarget)"
        params:
          - name: "target"
            type: "NbtContextTarget"
      - name: "Storage"
        makes: "minecraft:storage"
        signature: "Storage(source: storage id)"
        params:
          - name: "source"
            type: "storage id"
  - group: "Placement modifier"
    dispatcher: "minecraft:placement_modifier"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/placement_modifier"
    helpers:
      - name: "Biome"
        makes: "minecraft:biome"
        signature: "Biome()"
        doc: "Drops positions whose biome doesn't list this feature. Vanilla ends most placements with it."
      - name: "BlockPredicateFilter"
        makes: "minecraft:block_predicate_filter"
        signature: "BlockPredicateFilter(predicate: BlockPredicate)"
        doc: "Keeps positions where a block predicate passes, such as `Solid()` or `MatchingBlocks(air)`."
        params:
          - name: "predicate"
            type: "BlockPredicate"
      - name: "Count"
        makes: "minecraft:count"
        signature: "Count(count: IntProvider)"
        doc: "Repeats each position `count` times. Follow it with `InSquare()` to spread the copies over the chunk."
        params:
          - name: "count"
            type: "IntProvider of int 0..4096"
            doc: "How many: a number, or a range such as `2..5`."
        example: "PlacedFeature trees { feature = minecraft:oak, placement = [Count(3), InSquare(), Heightmap(WORLD_SURFACE_WG), Biome()] }"
      - name: "CountOnEveryLayer"
        makes: "minecraft:count_on_every_layer"
        signature: "CountOnEveryLayer(count: IntProvider)"
        doc: "Places `count` positions on each layer of the terrain, from the top down, so features appear under overhangs too. Vanilla nether forests use it."
        params:
          - name: "count"
            type: "IntProvider of int 0..256"
      - name: "Cuboid"
        makes: "minecraft:cuboid"
        signature: "Cuboid(xz_size: IntProvider, y_size: IntProvider, include_interior?: bool, include_edges?: bool)"
        params:
          - name: "xz_size"
            type: "IntProvider of int 1..16"
          - name: "y_size"
            type: "IntProvider of int 1..16"
          - name: "include_interior"
            type: "bool"
            optional: true
            doc: "Defaults to `true`."
          - name: "include_edges"
            type: "bool"
            optional: true
            doc: "Defaults to `true`."
      - name: "EnvironmentScan"
        makes: "minecraft:environment_scan"
        signature: "EnvironmentScan(direction_of_search: VerticalDirection, max_steps: int, target_condition: BlockPredicate, allowed_search_condition?: BlockPredicate)"
        doc: "Moves each position up or down, at most `max_steps` blocks, until `target_condition` passes. Drops it if nothing is found."
        params:
          - name: "direction_of_search"
            type: "VerticalDirection"
            doc: "`up` or `down`."
          - name: "max_steps"
            type: "int 1..32"
            doc: "How far to search, in blocks."
          - name: "target_condition"
            type: "BlockPredicate"
            doc: "The block predicate to search for."
          - name: "allowed_search_condition"
            type: "BlockPredicate"
            optional: true
            doc: "The scan stops if a block on the way fails this."
      - name: "FixedPlacement"
        makes: "minecraft:fixed_placement"
        signature: "FixedPlacement(positions: [[int]])"
        doc: "Replaces each position with a fixed list of positions."
        params:
          - name: "positions"
            type: "list of (list of int (exactly 3))"
            doc: "Fixed list of block positions to place the feature at."
      - name: "HeightRange"
        makes: "minecraft:height_range"
        signature: "HeightRange(height: HeightProvider)"
        doc: "Sets each position's Y to a height picked by a height provider."
        params:
          - name: "height"
            type: "HeightProvider"
            doc: "The height, such as `Uniform(AboveBottom(0), Absolute(64))`."
      - name: "Heightmap"
        makes: "minecraft:heightmap"
        signature: "Heightmap(heightmap: HeightmapType)"
        doc: "Moves each position up or down onto the surface of a heightmap, such as `WORLD_SURFACE_WG` for the top block or `OCEAN_FLOOR_WG` for the sea floor."
        params:
          - name: "heightmap"
            type: "HeightmapType"
            doc: "Which surface to use."
      - name: "InSquare"
        makes: "minecraft:in_square"
        signature: "InSquare()"
        doc: "Moves each position to a random x and z within its chunk."
      - name: "NoiseBasedCount"
        makes: "minecraft:noise_based_count"
        signature: "NoiseBasedCount(noise_to_count_ratio: int, noise_factor: float, noise_offset?: float)"
        doc: "Repeats each position a number of times that follows a noise, so features cluster in some areas. The count is `ceil((noise + noise_offset) * noise_to_count_ratio)`."
        params:
          - name: "noise_to_count_ratio"
            type: "int"
            doc: "Multiplies the noise to get the count."
          - name: "noise_factor"
            type: "number"
            doc: "Divides x and z before sampling; larger values give larger clusters."
          - name: "noise_offset"
            type: "number"
            optional: true
      - name: "NoiseThresholdCount"
        makes: "minecraft:noise_threshold_count"
        signature: "NoiseThresholdCount(noise_level: float, below_noise: int, above_noise: int)"
        doc: "Repeats each position `below_noise` times where a noise is below `noise_level`, and `above_noise` times where it is above."
        params:
          - name: "noise_level"
            type: "number"
          - name: "below_noise"
            type: "int"
          - name: "above_noise"
            type: "int"
      - name: "Offset"
        makes: "minecraft:offset"
        signature: "Offset(x: IntProvider, y: IntProvider, z: IntProvider)"
        doc: "Moves each position by the given number of blocks."
        params:
          - name: "x"
            type: "IntProvider of int -16..16"
          - name: "y"
            type: "IntProvider of int -16..16"
          - name: "z"
            type: "IntProvider of int -16..16"
      - name: "RandomChance"
        makes: "minecraft:random_chance"
        signature: "RandomChance(chance: float)"
        doc: "Keeps each position with probability `chance`, from 0 to 1."
        params:
          - name: "chance"
            type: "number 0..1"
      - name: "RandomlySelected"
        makes: "minecraft:randomly_selected"
        signature: "RandomlySelected(placements: [PlacementModifier])"
        params:
          - name: "placements"
            type: "list of PlacementModifier (at least 1)"
      - name: "RarityFilter"
        makes: "minecraft:rarity_filter"
        signature: "RarityFilter(chance: int)"
        doc: "Keeps each position with a chance of 1 in `chance`."
        params:
          - name: "chance"
            type: "int 0.."
            doc: "Keep one position in this many, on average."
        example: "PlacedFeature rare_rocks { feature = minecraft:forest_rock, placement = [RarityFilter(16), InSquare(), Heightmap(MOTION_BLOCKING), Biome()] }"
      - name: "SurfaceRelativeThresholdFilter"
        makes: "minecraft:surface_relative_threshold_filter"
        signature: "SurfaceRelativeThresholdFilter(heightmap: HeightmapType, min_inclusive?: int, max_inclusive?: int)"
        doc: "Keeps positions whose Y, measured from a heightmap's surface, is from `min_inclusive` to `max_inclusive`."
        params:
          - name: "heightmap"
            type: "HeightmapType"
          - name: "min_inclusive"
            type: "int"
            optional: true
          - name: "max_inclusive"
            type: "int"
            optional: true
      - name: "SurfaceWaterDepthFilter"
        makes: "minecraft:surface_water_depth_filter"
        signature: "SurfaceWaterDepthFilter(max_water_depth: int)"
        doc: "Keeps positions where the water above the surface is at most `max_water_depth` blocks deep."
        params:
          - name: "max_water_depth"
            type: "int"
  - group: "Pos rule test"
    dispatcher: "minecraft:pos_rule_test"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/pos_rule_test"
    helpers:
      - name: "AlwaysTrue"
        makes: "minecraft:always_true"
        signature: "AlwaysTrue()"
      - name: "AxisAlignedLinearPos"
        makes: "minecraft:axis_aligned_linear_pos"
        signature: "AxisAlignedLinearPos(axis?: Axis, min_dist?: int, max_dist?: int, min_chance?: float, max_chance?: float)"
        params:
          - name: "axis"
            type: "Axis"
            optional: true
            doc: "Defaults to `y`."
          - name: "min_dist"
            type: "int 0..255"
            optional: true
          - name: "max_dist"
            type: "int 0..255"
            optional: true
          - name: "min_chance"
            type: "number 0..1"
            optional: true
          - name: "max_chance"
            type: "number 0..1"
            optional: true
      - name: "LinearPos"
        makes: "minecraft:linear_pos"
        signature: "LinearPos(min_dist?: int, max_dist?: int, min_chance?: float, max_chance?: float)"
        params:
          - name: "min_dist"
            type: "int 0..255"
            optional: true
          - name: "max_dist"
            type: "int 0..255"
            optional: true
          - name: "min_chance"
            type: "number 0..1"
            optional: true
          - name: "max_chance"
            type: "number 0..1"
            optional: true
  - group: "Recipe serializer"
    dispatcher: "minecraft:recipe_serializer"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/recipe_serializer"
    helpers:
      - name: "Blasting"
        makes: "minecraft:blasting"
        signature: "Blasting(ingredient: Ingredient, result: ItemStackTemplate, cookingtime: int, show_notification?: bool, group?: string, category?: CookingBookCategory, experience?: float)"
        params:
          - name: "ingredient"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
          - name: "cookingtime"
            type: "int"
            doc: "Hint: The \"Normal\" value for this is `200`."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CookingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
          - name: "experience"
            type: "number"
            optional: true
      - name: "Brewing"
        makes: "minecraft:brewing"
        signature: "Brewing(input: PotionIngredient, reagent: PotionIngredient, output: ItemStackTemplate)"
        params:
          - name: "input"
            type: "PotionIngredient"
            doc: "The original potion."
          - name: "reagent"
            type: "PotionIngredient"
            doc: "The ingredient."
          - name: "output"
            type: "ItemStackTemplate"
      - name: "CampfireCooking"
        makes: "minecraft:campfire_cooking"
        signature: "CampfireCooking(ingredient: Ingredient, result: ItemStackTemplate, cookingtime: int, show_notification?: bool, group?: string, category?: CookingBookCategory, experience?: float)"
        params:
          - name: "ingredient"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
          - name: "cookingtime"
            type: "int"
            doc: "Hint: The \"Normal\" value for this is `200`."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CookingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
          - name: "experience"
            type: "number"
            optional: true
      - name: "CraftingDecoratedPot"
        makes: "minecraft:crafting_decorated_pot"
        signature: "CraftingDecoratedPot(back: Ingredient, left: Ingredient, right: Ingredient, front: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "back"
            type: "Ingredient"
          - name: "left"
            type: "Ingredient"
          - name: "right"
            type: "Ingredient"
          - name: "front"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
            doc: "The `pot_decorations` component will store the 4 ingredients."
      - name: "CraftingDye"
        makes: "minecraft:crafting_dye"
        signature: "CraftingDye(target: Ingredient, dye: Ingredient, result: ItemStackTemplate, show_notification?: bool, group?: string, category?: CraftingBookCategory)"
        params:
          - name: "target"
            type: "Ingredient"
            doc: "The item to be dyed. \\\nIts `dyed_color` component will be dyed. The other components are copied."
          - name: "dye"
            type: "Ingredient"
            doc: "The items to provide dye color. \\\nColors are provided by the `dye` component. \\\nMultiple dyes can be used at the same time."
          - name: "result"
            type: "ItemStackTemplate"
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CraftingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
      - name: "CraftingImbue"
        makes: "minecraft:crafting_imbue"
        signature: "CraftingImbue(source: Ingredient, material: Ingredient, result: ItemStackTemplate, show_notification?: bool, group?: string, category?: CraftingBookCategory)"
        params:
          - name: "source"
            type: "Ingredient"
            doc: "The item to provide potion effect. \\\nIts `potion_contents` component will be copied. \\\nThis item is placed at the center grid."
          - name: "material"
            type: "Ingredient"
            doc: "Additional ingredients. \\\n8 `material` items are required to surroud the `source` item."
          - name: "result"
            type: "ItemStackTemplate"
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CraftingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
      - name: "CraftingSpecialBannerduplicate"
        makes: "minecraft:crafting_special_bannerduplicate"
        signature: "CraftingSpecialBannerduplicate(banner: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "banner"
            type: "Ingredient"
            doc: "The banner item. The item type is required to be `BannerItem`. \\\nExactly 2 banners of the same color are required. \\\nThe one with patterns is viewed as \"source\". Its components will be copied. \\\nThe other is viewed as \"target\". It is required to have no patterns. \\\n\\\nThe source banner will be kept in the crafting grid."
          - name: "result"
            type: "ItemStackTemplate"
      - name: "CraftingSpecialBookcloning"
        makes: "minecraft:crafting_special_bookcloning"
        signature: "CraftingSpecialBookcloning(source: Ingredient, material: Ingredient, result: ItemStackTemplate, allowed_generations?: MinMaxBounds)"
        params:
          - name: "source"
            type: "Ingredient"
            doc: "The book item. \\\nIts `written_book_contents` component will be copied, with `generation` value increased by 1. \\\nThe other components are copied as-is. \\\n\\\nThe book will be kept in the crafting grid."
          - name: "material"
            type: "Ingredient"
            doc: "Additional ingredients. \\\nMultiple materials can be used at the same time. \\\nThe number of materials beyond the first one will be added to the result count."
          - name: "result"
            type: "ItemStackTemplate"
          - name: "allowed_generations"
            type: "MinMaxBounds of int 0..2"
            optional: true
            doc: "Limits the generation of the `source` item that can be copied.\nDefaults to allow generation 0 and 1 (original and first copy)."
      - name: "CraftingSpecialFireworkRocket"
        makes: "minecraft:crafting_special_firework_rocket"
        signature: "CraftingSpecialFireworkRocket(shell: Ingredient, fuel: Ingredient, star: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "shell"
            type: "Ingredient"
            doc: "Additional ingredient. \\\nExactly 1 additional ingredient is required."
          - name: "fuel"
            type: "Ingredient"
            doc: "The fuel ingredient. \\\nThe count of fuel ingredients controls the `flight_duration` field. \\\nOnly 1 ~ 3 fuels are allowed."
          - name: "star"
            type: "Ingredient"
            doc: "The firework star ingredient. \\\nProvides explosion data by the `firework_explosion` component. \\\nAny count of stars (including 0) are allowed."
          - name: "result"
            type: "ItemStackTemplate"
            doc: "The `fireworks` component is controlled by `fuel` and `star`."
      - name: "CraftingSpecialFireworkStar"
        makes: "minecraft:crafting_special_firework_star"
        signature: "CraftingSpecialFireworkStar(trail: Ingredient, twinkle: Ingredient, fuel: Ingredient, dye: Ingredient, shapes: object, result: ItemStackTemplate)"
        params:
          - name: "trail"
            type: "Ingredient"
            doc: "If this ingredient is provided, the result will have `has_trail` field set."
          - name: "twinkle"
            type: "Ingredient"
            doc: "If this ingredient is provided, the result will have `has_twinkle` field set."
          - name: "fuel"
            type: "Ingredient"
            doc: "Additional ingredient. \\\nExactly 1 additional ingredient is required."
          - name: "dye"
            type: "Ingredient"
            doc: "The items to provide explosion color. \\\nColors are provided by the `dye` component. \\\nMultiple dyes can be used at the same time."
          - name: "shapes"
            type: "map of FireworkShape to Ingredient"
            doc: "If one of the ingredients is provided, the result will have the corresponding `shape` value. \\\nIf no shape ingredient is provided, the shape will be `small_ball`."
          - name: "result"
            type: "ItemStackTemplate"
            doc: "The `firework_explosion` component is controlled by the ingredients."
      - name: "CraftingSpecialFireworkStarFade"
        makes: "minecraft:crafting_special_firework_star_fade"
        signature: "CraftingSpecialFireworkStarFade(target: Ingredient, dye: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "target"
            type: "Ingredient"
            doc: "The firework star item. \\\nThe fade effect of its `firework_explosion` will be changed. \\\nThe other components are copied."
          - name: "dye"
            type: "Ingredient"
            doc: "The items to provide fade color. \\\nColors are provided by the `dye` component. \\\nMultiple dyes can be used at the same time."
          - name: "result"
            type: "ItemStackTemplate"
      - name: "CraftingSpecialMapextending"
        makes: "minecraft:crafting_special_mapextending"
        signature: "CraftingSpecialMapextending(map: Ingredient, material: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "map"
            type: "Ingredient"
            doc: "The map item. \\\nThe `map_id` component is used to determine the resulting item. \\\nThe other components are copied. \\\nThis item is placed at the center grid. \\\n\\\nThe source map will be kept in the crafting grid."
          - name: "material"
            type: "Ingredient"
            doc: "Additional ingredients. \\\n8 `material` items are required to surroud the `map` item."
          - name: "result"
            type: "ItemStackTemplate"
            doc: "The previewing result will have `map_post_processing` transient component. \\\nThe crafted result will have a new `map_id` component, which shows the extended version of the original map."
      - name: "CraftingSpecialRepairitem"
        makes: "minecraft:crafting_special_repairitem"
        signature: "CraftingSpecialRepairitem()"
      - name: "CraftingSpecialShielddecoration"
        makes: "minecraft:crafting_special_shielddecoration"
        signature: "CraftingSpecialShielddecoration(target: Ingredient, banner: Ingredient, result: ItemStackTemplate)"
        params:
          - name: "target"
            type: "Ingredient"
            doc: "The item to be decorated. It is required to have no patterns. \\\nIts components, except `base_color` and `banner_patterns`, are copied."
          - name: "banner"
            type: "Ingredient"
            doc: "The banner item. The item type is required to be `BannerItem`. \\\nDetermines the `base_color` component of the resulting item."
          - name: "result"
            type: "ItemStackTemplate"
      - name: "CraftingTransmute"
        makes: "minecraft:crafting_transmute"
        signature: "CraftingTransmute(input: Ingredient, material: Ingredient, result: TransmuteResult | item id, show_notification?: bool, group?: string, category?: CraftingBookCategory, material_count?: MinMaxBounds, add_material_count_to_result?: bool)"
        params:
          - name: "input"
            type: "Ingredient"
            doc: "The ingredient that will transfer its data components to the result item."
          - name: "material"
            type: "Ingredient"
            doc: "An additional ingredient."
          - name: "result"
            type: "TransmuteResult | item id"
            doc: "The result item that will be merged with the input ingredient."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CraftingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
          - name: "material_count"
            type: "MinMaxBounds of int 1..8"
            optional: true
            doc: "The allowed count of material.\nDefaults to `1`."
          - name: "add_material_count_to_result"
            type: "bool"
            optional: true
            doc: "When true, the number of materials will be added to the result count. \\\nDefaults to `false`."
      - name: "Shaped"
        makes: "minecraft:crafting_shaped"
        signature: "Shaped(pattern: [string], key: object, result: ItemStackTemplate)"
        params:
          - name: "pattern"
            type: "list of string (1 to 3) (1 to 3)"
          - name: "key"
            type: "map of string to Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
      - name: "Shapeless"
        makes: "minecraft:crafting_shapeless"
        signature: "Shapeless(ingredients: [Ingredient], result: ItemStackTemplate)"
        params:
          - name: "ingredients"
            type: "list of Ingredient (1 to 9)"
          - name: "result"
            type: "ItemStackTemplate"
      - name: "Smelting"
        makes: "minecraft:smelting"
        signature: "Smelting(ingredient: Ingredient, result: ItemStackTemplate, cookingtime: int, show_notification?: bool, group?: string, category?: CookingBookCategory, experience?: float)"
        params:
          - name: "ingredient"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
          - name: "cookingtime"
            type: "int"
            doc: "Hint: The \"Normal\" value for this is `200`."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CookingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
          - name: "experience"
            type: "number"
            optional: true
      - name: "SmithingTransform"
        makes: "minecraft:smithing_transform"
        signature: "SmithingTransform(base: Ingredient, result: ItemStackTemplate, show_notification?: bool, addition?: Ingredient, template?: Ingredient)"
        params:
          - name: "base"
            type: "Ingredient"
            doc: "Ingredient specifying an item to be transformed."
          - name: "result"
            type: "ItemStackTemplate"
            doc: "Resulting transformed item."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "addition"
            type: "Ingredient"
            optional: true
            doc: "Material that will be used."
          - name: "template"
            type: "Ingredient"
            optional: true
            doc: "Template item that will be used for the pattern."
      - name: "SmithingTrim"
        makes: "minecraft:smithing_trim"
        signature: "SmithingTrim(base: Ingredient, addition: Ingredient, template: Ingredient, pattern: trim_pattern id, show_notification?: bool)"
        params:
          - name: "base"
            type: "Ingredient"
            doc: "Ingredient specifying an item to be trimmed."
          - name: "addition"
            type: "Ingredient"
            doc: "Material that will be used."
          - name: "template"
            type: "Ingredient"
            doc: "Template item that will be used for the pattern."
          - name: "pattern"
            type: "trim_pattern id"
            doc: "The trim pattern to apply to the result item."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
      - name: "Smoking"
        makes: "minecraft:smoking"
        signature: "Smoking(ingredient: Ingredient, result: ItemStackTemplate, cookingtime: int, show_notification?: bool, group?: string, category?: CookingBookCategory, experience?: float)"
        params:
          - name: "ingredient"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
          - name: "cookingtime"
            type: "int"
            doc: "Hint: The \"Normal\" value for this is `200`."
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
          - name: "group"
            type: "string"
            optional: true
            doc: "Identifier to group multiple recipes in the recipe book."
          - name: "category"
            type: "CookingBookCategory"
            optional: true
            doc: "Identifier for the category this goes in the recipe book."
          - name: "experience"
            type: "number"
            optional: true
      - name: "Stonecutting"
        makes: "minecraft:stonecutting"
        signature: "Stonecutting(ingredient: Ingredient, result: ItemStackTemplate, show_notification?: bool)"
        params:
          - name: "ingredient"
            type: "Ingredient"
          - name: "result"
            type: "ItemStackTemplate"
          - name: "show_notification"
            type: "bool"
            optional: true
            doc: "Determines if a notification is shown when unlocking this recipe.\nDefaults to `true`."
  - group: "Root placer"
    dispatcher: "minecraft:root_placer"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/root_placer"
    helpers:
      - name: "MangroveRootPlacer"
        makes: "minecraft:mangrove_root_placer"
        signature: "MangroveRootPlacer(root_provider: BlockStateProviderRef, trunk_offset_y: IntProvider, mangrove_root_placement: MangroveRootPlacement, above_root_placement?: AboveRootPlacement)"
        params:
          - name: "root_provider"
            type: "BlockStateProviderRef"
          - name: "trunk_offset_y"
            type: "IntProvider of int"
          - name: "mangrove_root_placement"
            type: "MangroveRootPlacement"
          - name: "above_root_placement"
            type: "AboveRootPlacement"
            optional: true
  - group: "Rule block entity modifier"
    dispatcher: "minecraft:rule_block_entity_modifier"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/rule_block_entity_modifier"
    helpers:
      - name: "AppendLoot"
        makes: "minecraft:append_loot"
        signature: "AppendLoot(loot_table: loot_table id)"
        params:
          - name: "loot_table"
            type: "loot_table id"
      - name: "AppendStatic"
        makes: "minecraft:append_static"
        signature: "AppendStatic(data: object)"
        params:
          - name: "data"
            type: "object"
      - name: "Clear"
        makes: "minecraft:clear"
        signature: "Clear()"
      - name: "Passthrough"
        makes: "minecraft:passthrough"
        signature: "Passthrough()"
  - group: "Rule test"
    dispatcher: "minecraft:rule_test"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/rule_test"
    helpers:
      - name: "AllOf"
        makes: "minecraft:all_of"
        signature: "AllOf(rules: [RuleTest])"
        params:
          - name: "rules"
            type: "list of RuleTest"
      - name: "AlwaysTrue"
        makes: "minecraft:always_true"
        signature: "AlwaysTrue()"
        doc: "Always passes."
      - name: "AnyOf"
        makes: "minecraft:any_of"
        signature: "AnyOf(rules: [RuleTest])"
        params:
          - name: "rules"
            type: "list of RuleTest"
      - name: "BlockMatch"
        makes: "minecraft:block_match"
        signature: "BlockMatch(block: block id)"
        doc: "Passes when the block is this block."
        params:
          - name: "block"
            type: "block id"
      - name: "BlockstateMatch"
        makes: "minecraft:blockstate_match"
        signature: "BlockstateMatch(block_state: BlockState)"
        doc: "Passes when the block is exactly this block state."
        params:
          - name: "block_state"
            type: "BlockState"
      - name: "HeightMatch"
        makes: "minecraft:height_match"
        signature: "HeightMatch(min_inclusive: int, max_inclusive: int)"
        params:
          - name: "min_inclusive"
            type: "int"
          - name: "max_inclusive"
            type: "int"
      - name: "Not"
        makes: "minecraft:not"
        signature: "Not(rule: RuleTest)"
        params:
          - name: "rule"
            type: "RuleTest"
      - name: "RandomBlockMatch"
        makes: "minecraft:random_block_match"
        signature: "RandomBlockMatch(block: block id, probability: float)"
        doc: "Passes when the block is this block, with probability `probability`."
        params:
          - name: "block"
            type: "block id"
          - name: "probability"
            type: "number 0..1"
      - name: "RandomBlockstateMatch"
        makes: "minecraft:random_blockstate_match"
        signature: "RandomBlockstateMatch(block_state: BlockState, probability: float)"
        doc: "Passes when the block is exactly this block state, with probability `probability`."
        params:
          - name: "block_state"
            type: "BlockState"
          - name: "probability"
            type: "number 0..1"
      - name: "TagMatch"
        makes: "minecraft:tag_match"
        signature: "TagMatch(tag: block id)"
        doc: "Passes when the block is in this block tag. Vanilla ores test `#stone_ore_replaceables` this way."
        params:
          - name: "tag"
            type: "block id | #block tag"
  - group: "Score provider"
    dispatcher: "minecraft:score_provider"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/score_provider"
    helpers:
      - name: "Context"
        makes: "minecraft:context"
        signature: "Context(target: EntityTarget)"
        params:
          - name: "target"
            type: "EntityTarget"
      - name: "Fixed"
        makes: "minecraft:fixed"
        signature: "Fixed(name: string)"
        params:
          - name: "name"
            type: "string"
  - group: "Slot source"
    dispatcher: "minecraft:slot_source"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/slot_source"
    helpers:
      - name: "Contents"
        makes: "minecraft:contents"
        signature: "Contents(slot_source: SlotSource, component: ContainerComponents)"
        params:
          - name: "slot_source"
            type: "SlotSource"
            doc: "The slots to search."
          - name: "component"
            type: "ContainerComponents"
            doc: "If an item targeted by `slot_source` has this container component, selects all items inside."
      - name: "Empty"
        makes: "minecraft:empty"
        signature: "Empty()"
      - name: "Filtered"
        makes: "minecraft:filtered"
        signature: "Filtered(slot_source: SlotSource, item_filter: ItemPredicate)"
        params:
          - name: "slot_source"
            type: "SlotSource"
          - name: "item_filter"
            type: "ItemPredicate"
      - name: "Group"
        makes: "minecraft:group"
        signature: "Group(terms: SlotSource)"
        params:
          - name: "terms"
            type: "SlotSource"
      - name: "LimitSlots"
        makes: "minecraft:limit_slots"
        signature: "LimitSlots(slot_source: SlotSource, limit: int)"
        params:
          - name: "slot_source"
            type: "SlotSource"
          - name: "limit"
            type: "int 1.."
      - name: "SlotRange"
        makes: "minecraft:slot_range"
        signature: "SlotRange(slots: string, source?: EntityTarget | BlockEntityTarget | \"container\")"
        params:
          - name: "slots"
            type: "string"
          - name: "source"
            type: "EntityTarget | BlockEntityTarget | \"container\""
            optional: true
            doc: "Defaults to `container`."
  - group: "Spawn condition"
    dispatcher: "minecraft:spawn_condition"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/spawn_condition"
    helpers:
      - name: "Biome"
        makes: "minecraft:biome"
        signature: "Biome(biomes: biome id | [biome id])"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
            doc: "Checks if the entity is spawning in specific biomes."
      - name: "MoonBrightness"
        makes: "minecraft:moon_brightness"
        signature: "MoonBrightness(range: MinMaxBounds)"
        params:
          - name: "range"
            type: "MinMaxBounds of number"
            doc: "Checks if the current moon brightness is within a certain range."
      - name: "Structure"
        makes: "minecraft:structure"
        signature: "Structure(structures: structure id | [structure id])"
        params:
          - name: "structures"
            type: "structure id | #structure tag | list of structure ids"
            doc: "Checks if the entity is spawning in specific structures."
  - group: "Special item model"
    dispatcher: "minecraft:special_item_model"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/special_item_model"
    helpers:
      - name: "Banner"
        makes: "minecraft:banner"
        signature: "Banner(color: DyeColor, attachment?: BannerAttachment)"
        params:
          - name: "color"
            type: "DyeColor"
          - name: "attachment"
            type: "BannerAttachment"
            optional: true
            doc: "Defaults to `ground`."
      - name: "Bell"
        makes: "minecraft:bell"
        signature: "Bell()"
      - name: "Book"
        makes: "minecraft:book"
        signature: "Book(open_angle: float, page1: float, page2: float)"
        params:
          - name: "open_angle"
            type: "number"
            doc: "Angle in degrees between book cover and book centerline. \\\n`0.0` for closed, `90.0` for open flat."
          - name: "page1"
            type: "number"
            doc: "The position of the first page inside the book. \\\n`0.0` for leftmost, `1.0` for rightmost."
          - name: "page2"
            type: "number"
            doc: "The position of the second page inside the book. \\\n`0.0` for leftmost, `1.0` for rightmost."
      - name: "Chest"
        makes: "minecraft:chest"
        signature: "Chest(texture: texture id, openness?: float, chest_type?: ChestType)"
        params:
          - name: "texture"
            type: "texture id"
          - name: "openness"
            type: "number 0..1"
            optional: true
            doc: "Defaults to `0`."
          - name: "chest_type"
            type: "ChestType"
            optional: true
            doc: "Defaults to `single`."
      - name: "Conduit"
        makes: "minecraft:conduit"
        signature: "Conduit()"
      - name: "CopperGolemStatue"
        makes: "minecraft:copper_golem_statue"
        signature: "CopperGolemStatue(pose: CopperGolemStatuePose, texture: string)"
        params:
          - name: "pose"
            type: "CopperGolemStatuePose"
          - name: "texture"
            type: "string"
      - name: "DecoratedPot"
        makes: "minecraft:decorated_pot"
        signature: "DecoratedPot()"
      - name: "EndCube"
        makes: "minecraft:end_cube"
        signature: "EndCube(effect: EndCubeEffectType)"
        params:
          - name: "effect"
            type: "EndCubeEffectType"
      - name: "Head"
        makes: "minecraft:head"
        signature: "Head(kind: HeadType, texture?: texture id, animation?: float)"
        params:
          - name: "kind"
            type: "HeadType"
          - name: "texture"
            type: "texture id"
            optional: true
            doc: "Texture to use instead of the texture from `kind`."
          - name: "animation"
            type: "number"
            optional: true
            doc: "Controls the animation time for piglin and dragon heads. Defaults to `0`."
      - name: "PlayerHead"
        makes: "minecraft:player_head"
        signature: "PlayerHead()"
      - name: "Shield"
        makes: "minecraft:shield"
        signature: "Shield()"
      - name: "ShulkerBox"
        makes: "minecraft:shulker_box"
        signature: "ShulkerBox(texture: texture id, openness?: float)"
        params:
          - name: "texture"
            type: "texture id"
          - name: "openness"
            type: "number 0..1"
            optional: true
      - name: "Trident"
        makes: "minecraft:trident"
        signature: "Trident()"
  - group: "Sprite source"
    dispatcher: "minecraft:sprite_source"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/sprite_source"
    helpers:
      - name: "Directory"
        makes: "minecraft:directory"
        signature: "Directory(source: string, prefix: string)"
        params:
          - name: "source"
            type: "string"
            doc: "Directory of texture locations to include, relative to the `textures` folder, not including the trailing `/`."
          - name: "prefix"
            type: "string"
            doc: "The sprite name prefix, usually ending with `/`."
      - name: "Filter"
        makes: "minecraft:filter"
        signature: "Filter(pattern: FilterPattern)"
        params:
          - name: "pattern"
            type: "FilterPattern"
            doc: "Pattern to remove sprite identifiers already in the atlas. The order of sprite sources is important."
      - name: "PalettedPermutations"
        makes: "minecraft:paletted_permutations"
        signature: "PalettedPermutations(textures: [texture id], palette_key: PaletteTexture, permutations: object, separator?: string)"
        params:
          - name: "textures"
            type: "list of texture ids"
          - name: "palette_key"
            type: "PaletteTexture"
          - name: "permutations"
            type: "map of string to PaletteTexture"
          - name: "separator"
            type: "string"
            optional: true
            doc: "Value to use when joining the texture and permutation names to produce the sprite name.\nDefaults to `_`."
      - name: "Single"
        makes: "minecraft:single"
        signature: "Single(resource: texture id, sprite?: texture id)"
        params:
          - name: "resource"
            type: "texture id"
            doc: "A single texture location of the source."
          - name: "sprite"
            type: "texture id"
            optional: true
            doc: "The identifier of the sprite that can referenced.\nIf not specified, matches `resource`."
      - name: "Unstitch"
        makes: "minecraft:unstitch"
        signature: "Unstitch(resource: texture id, regions: [UnstitchRegion], divisor_x?: float, divisor_y?: float)"
        params:
          - name: "resource"
            type: "texture id"
          - name: "regions"
            type: "list of UnstitchRegion"
          - name: "divisor_x"
            type: "number"
            optional: true
            doc: "If set to the resource width, regions will use pixel coordinates."
          - name: "divisor_y"
            type: "number"
            optional: true
            doc: "If set to the resource height, regions will use pixel coordinates."
  - group: "Structure config"
    dispatcher: "minecraft:structure_config"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/structure_config"
    helpers:
      - name: "BastionRemnant"
        makes: "minecraft:bastion_remnant"
        signature: "BastionRemnant(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, start_pool: template_pool id, size: int, start_height: HeightProvider, max_distance_from_center: value, use_expansion_hack: bool, terrain_adaptation?: TerrainAdaptation, start_jigsaw_name?: string, project_start_to_heightmap?: HeightmapType, pool_aliases?: [PoolAlias], dimension_padding?: int | object, liquid_settings?: LiquidSettings)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "start_pool"
            type: "template_pool id"
          - name: "size"
            type: "int 1..20"
          - name: "start_height"
            type: "HeightProvider"
          - name: "max_distance_from_center"
            type: "any (depends on terrain_adaptation)"
          - name: "use_expansion_hack"
            type: "bool"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
          - name: "start_jigsaw_name"
            type: "id"
            optional: true
          - name: "project_start_to_heightmap"
            type: "HeightmapType"
            optional: true
          - name: "pool_aliases"
            type: "list of PoolAlias"
            optional: true
          - name: "dimension_padding"
            type: "int 0.. | { bottom?: int 0.., top?: int 0.. }"
            optional: true
          - name: "liquid_settings"
            type: "LiquidSettings"
            optional: true
      - name: "BuriedTreasure"
        makes: "minecraft:buried_treasure"
        signature: "BuriedTreasure(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "DesertPyramid"
        makes: "minecraft:desert_pyramid"
        signature: "DesertPyramid(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "EndCity"
        makes: "minecraft:end_city"
        signature: "EndCity(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Fortress"
        makes: "minecraft:fortress"
        signature: "Fortress(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Igloo"
        makes: "minecraft:igloo"
        signature: "Igloo(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Jigsaw"
        makes: "minecraft:jigsaw"
        signature: "Jigsaw(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, start_pool: template_pool id, size: int, start_height: HeightProvider, max_distance_from_center: value, use_expansion_hack: bool, terrain_adaptation?: TerrainAdaptation, start_jigsaw_name?: string, project_start_to_heightmap?: HeightmapType, pool_aliases?: [PoolAlias], dimension_padding?: int | object, liquid_settings?: LiquidSettings)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "start_pool"
            type: "template_pool id"
          - name: "size"
            type: "int 1..20"
          - name: "start_height"
            type: "HeightProvider"
          - name: "max_distance_from_center"
            type: "any (depends on terrain_adaptation)"
          - name: "use_expansion_hack"
            type: "bool"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
          - name: "start_jigsaw_name"
            type: "id"
            optional: true
          - name: "project_start_to_heightmap"
            type: "HeightmapType"
            optional: true
          - name: "pool_aliases"
            type: "list of PoolAlias"
            optional: true
          - name: "dimension_padding"
            type: "int 0.. | { bottom?: int 0.., top?: int 0.. }"
            optional: true
          - name: "liquid_settings"
            type: "LiquidSettings"
            optional: true
      - name: "JungleTemple"
        makes: "minecraft:jungle_temple"
        signature: "JungleTemple(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Mineshaft"
        makes: "minecraft:mineshaft"
        signature: "Mineshaft(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, mineshaft_type: MineshaftType, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "mineshaft_type"
            type: "MineshaftType"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "NetherFossil"
        makes: "minecraft:nether_fossil"
        signature: "NetherFossil(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, height: HeightProvider, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "height"
            type: "HeightProvider"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "OceanMonument"
        makes: "minecraft:ocean_monument"
        signature: "OceanMonument(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "OceanRuin"
        makes: "minecraft:ocean_ruin"
        signature: "OceanRuin(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, biome_temp: BiomeTemperature, large_probability: float, cluster_probability: float, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "biome_temp"
            type: "BiomeTemperature"
          - name: "large_probability"
            type: "number 0..1"
          - name: "cluster_probability"
            type: "number 0..1"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "PillagerOutpost"
        makes: "minecraft:pillager_outpost"
        signature: "PillagerOutpost(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, start_pool: template_pool id, size: int, start_height: HeightProvider, max_distance_from_center: value, use_expansion_hack: bool, terrain_adaptation?: TerrainAdaptation, start_jigsaw_name?: string, project_start_to_heightmap?: HeightmapType, pool_aliases?: [PoolAlias], dimension_padding?: int | object, liquid_settings?: LiquidSettings)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "start_pool"
            type: "template_pool id"
          - name: "size"
            type: "int 1..20"
          - name: "start_height"
            type: "HeightProvider"
          - name: "max_distance_from_center"
            type: "any (depends on terrain_adaptation)"
          - name: "use_expansion_hack"
            type: "bool"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
          - name: "start_jigsaw_name"
            type: "id"
            optional: true
          - name: "project_start_to_heightmap"
            type: "HeightmapType"
            optional: true
          - name: "pool_aliases"
            type: "list of PoolAlias"
            optional: true
          - name: "dimension_padding"
            type: "int 0.. | { bottom?: int 0.., top?: int 0.. }"
            optional: true
          - name: "liquid_settings"
            type: "LiquidSettings"
            optional: true
      - name: "RuinedPortal"
        makes: "minecraft:ruined_portal"
        signature: "RuinedPortal(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, setups: [RuinedPortalSetup], terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "setups"
            type: "list of RuinedPortalSetup"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Shipwreck"
        makes: "minecraft:shipwreck"
        signature: "Shipwreck(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation, is_beached?: bool)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
          - name: "is_beached"
            type: "bool"
            optional: true
      - name: "Stronghold"
        makes: "minecraft:stronghold"
        signature: "Stronghold(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "SwampHut"
        makes: "minecraft:swamp_hut"
        signature: "SwampHut(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
      - name: "Village"
        makes: "minecraft:village"
        signature: "Village(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, start_pool: template_pool id, size: int, start_height: HeightProvider, max_distance_from_center: value, use_expansion_hack: bool, terrain_adaptation?: TerrainAdaptation, start_jigsaw_name?: string, project_start_to_heightmap?: HeightmapType, pool_aliases?: [PoolAlias], dimension_padding?: int | object, liquid_settings?: LiquidSettings)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "start_pool"
            type: "template_pool id"
          - name: "size"
            type: "int 1..20"
          - name: "start_height"
            type: "HeightProvider"
          - name: "max_distance_from_center"
            type: "any (depends on terrain_adaptation)"
          - name: "use_expansion_hack"
            type: "bool"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
          - name: "start_jigsaw_name"
            type: "id"
            optional: true
          - name: "project_start_to_heightmap"
            type: "HeightmapType"
            optional: true
          - name: "pool_aliases"
            type: "list of PoolAlias"
            optional: true
          - name: "dimension_padding"
            type: "int 0.. | { bottom?: int 0.., top?: int 0.. }"
            optional: true
          - name: "liquid_settings"
            type: "LiquidSettings"
            optional: true
      - name: "WoodlandMansion"
        makes: "minecraft:woodland_mansion"
        signature: "WoodlandMansion(biomes: [biome id] | biome id, step: DecorationStep, spawn_overrides: object, terrain_adaptation?: TerrainAdaptation)"
        params:
          - name: "biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "step"
            type: "DecorationStep"
            doc: "The step when the structure generates."
          - name: "spawn_overrides"
            type: "map of MobCategory to SpawnOverride"
          - name: "terrain_adaptation"
            type: "TerrainAdaptation"
            optional: true
  - group: "Structure placement"
    dispatcher: "minecraft:structure_placement"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/structure_placement"
    helpers:
      - name: "ConcentricRings"
        makes: "minecraft:concentric_rings"
        signature: "ConcentricRings(salt: int, distance: int, spread: int, count: int, preferred_biomes: [biome id] | biome id, frequency_reduction_method?: FrequencyReductionMethod, frequency?: float, exclusion_zone?: ExclusionZone, locate_offset?: [int])"
        params:
          - name: "salt"
            type: "int 0.."
          - name: "distance"
            type: "int 0..1023"
          - name: "spread"
            type: "int 0..1023"
          - name: "count"
            type: "int 1..4095"
          - name: "preferred_biomes"
            type: "biome id | #biome tag | list of biome ids"
          - name: "frequency_reduction_method"
            type: "FrequencyReductionMethod"
            optional: true
          - name: "frequency"
            type: "number 0..1"
            optional: true
          - name: "exclusion_zone"
            type: "ExclusionZone"
            optional: true
          - name: "locate_offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
      - name: "DimensionOrigin"
        makes: "minecraft:dimension_origin"
        signature: "DimensionOrigin()"
      - name: "RandomSpread"
        makes: "minecraft:random_spread"
        signature: "RandomSpread(salt: int, spacing: int, separation: int, frequency_reduction_method?: FrequencyReductionMethod, frequency?: float, exclusion_zone?: ExclusionZone, locate_offset?: [int], spread_type?: SpreadType)"
        params:
          - name: "salt"
            type: "int 0.."
          - name: "spacing"
            type: "int 0..4096"
            doc: "Average distance in chunks between two structures of this type."
          - name: "separation"
            type: "int 0..4096"
            doc: "Minimum distance in chunks between two structures of this type."
          - name: "frequency_reduction_method"
            type: "FrequencyReductionMethod"
            optional: true
          - name: "frequency"
            type: "number 0..1"
            optional: true
          - name: "exclusion_zone"
            type: "ExclusionZone"
            optional: true
          - name: "locate_offset"
            type: "list of int -16..16 (exactly 3)"
            optional: true
          - name: "spread_type"
            type: "SpreadType"
            optional: true
  - group: "Template pool element"
    dispatcher: "minecraft:template_pool_element"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/template_pool_element"
    helpers:
      - name: "EmptyPoolElement"
        makes: "minecraft:empty_pool_element"
        signature: "EmptyPoolElement()"
      - name: "FeaturePoolElement"
        makes: "minecraft:feature_pool_element"
        signature: "FeaturePoolElement(projection: Projection, feature: PlacedFeatureRef)"
        params:
          - name: "projection"
            type: "Projection"
          - name: "feature"
            type: "PlacedFeatureRef"
      - name: "LegacySinglePoolElement"
        makes: "minecraft:legacy_single_pool_element"
        signature: "LegacySinglePoolElement(projection: Projection, location: structure id, processors: ProcessorListRef, override_liquid_settings?: LiquidSettings)"
        params:
          - name: "projection"
            type: "Projection"
          - name: "location"
            type: "structure id"
          - name: "processors"
            type: "ProcessorListRef"
          - name: "override_liquid_settings"
            type: "LiquidSettings"
            optional: true
      - name: "ListPoolElement"
        makes: "minecraft:list_pool_element"
        signature: "ListPoolElement(projection: Projection, elements: [Element])"
        params:
          - name: "projection"
            type: "Projection"
          - name: "elements"
            type: "list of Element"
      - name: "SinglePoolElement"
        makes: "minecraft:single_pool_element"
        signature: "SinglePoolElement(projection: Projection, location: structure id, processors: ProcessorListRef, override_liquid_settings?: LiquidSettings)"
        params:
          - name: "projection"
            type: "Projection"
          - name: "location"
            type: "structure id"
          - name: "processors"
            type: "ProcessorListRef"
          - name: "override_liquid_settings"
            type: "LiquidSettings"
            optional: true
  - group: "Template processor"
    dispatcher: "minecraft:template_processor"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/template_processor"
    helpers:
      - name: "BlackstoneReplace"
        makes: "minecraft:blackstone_replace"
        signature: "BlackstoneReplace()"
      - name: "BlockAge"
        makes: "minecraft:block_age"
        signature: "BlockAge(mossiness: float)"
        params:
          - name: "mossiness"
            type: "number"
      - name: "BlockIgnore"
        makes: "minecraft:block_ignore"
        signature: "BlockIgnore(blocks: [BlockState])"
        params:
          - name: "blocks"
            type: "list of BlockState"
      - name: "BlockRot"
        makes: "minecraft:block_rot"
        signature: "BlockRot(integrity: float, rottable_blocks?: [block id] | block id)"
        params:
          - name: "integrity"
            type: "number 0..1"
          - name: "rottable_blocks"
            type: "block id | #block tag | list of block ids"
            optional: true
      - name: "Capped"
        makes: "minecraft:capped"
        signature: "Capped(delegate: Processor, limit: IntProvider)"
        params:
          - name: "delegate"
            type: "Processor"
          - name: "limit"
            type: "IntProvider of int 0.."
      - name: "Gravity"
        makes: "minecraft:gravity"
        signature: "Gravity(heightmap: HeightmapType, offset: int)"
        params:
          - name: "heightmap"
            type: "HeightmapType"
          - name: "offset"
            type: "int"
      - name: "JigsawReplacement"
        makes: "minecraft:jigsaw_replacement"
        signature: "JigsawReplacement()"
      - name: "LavaSubmergedBlock"
        makes: "minecraft:lava_submerged_block"
        signature: "LavaSubmergedBlock()"
      - name: "Nop"
        makes: "minecraft:nop"
        signature: "Nop()"
      - name: "ProtectedBlocks"
        makes: "minecraft:protected_blocks"
        signature: "ProtectedBlocks(value: block id | [block id])"
        params:
          - name: "value"
            type: "block id | #block tag | list of block ids"
      - name: "Rule"
        makes: "minecraft:rule"
        signature: "Rule(rules: [ProcessorRule])"
        params:
          - name: "rules"
            type: "list of ProcessorRule"
  - group: "Test environment definition"
    dispatcher: "minecraft:test_environment_definition"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/test_environment_definition"
    helpers:
      - name: "AllOf"
        makes: "minecraft:all_of"
        signature: "AllOf(definitions: [TestEnvironment])"
        params:
          - name: "definitions"
            type: "list of TestEnvironment"
      - name: "ClockTime"
        makes: "minecraft:clock_time"
        signature: "ClockTime(clock: world_clock id, time: int)"
        params:
          - name: "clock"
            type: "world_clock id"
          - name: "time"
            type: "int 0.."
      - name: "Difficulty"
        makes: "minecraft:difficulty"
        signature: "Difficulty(difficulty: Difficulty)"
        params:
          - name: "difficulty"
            type: "Difficulty"
      - name: "Function"
        makes: "minecraft:function"
        signature: "Function(setup?: function id, teardown?: function id)"
        params:
          - name: "setup"
            type: "function id"
            optional: true
          - name: "teardown"
            type: "function id"
            optional: true
      - name: "GameRules"
        makes: "minecraft:game_rules"
        signature: "GameRules(rules: object)"
        params:
          - name: "rules"
            type: "map of game_rule id to any"
      - name: "TimelineAttributes"
        makes: "minecraft:timeline_attributes"
        signature: "TimelineAttributes(timelines: [timeline id])"
        params:
          - name: "timelines"
            type: "list of timeline ids"
      - name: "Weather"
        makes: "minecraft:weather"
        signature: "Weather(weather: Weather)"
        params:
          - name: "weather"
            type: "Weather"
  - group: "Test instance"
    dispatcher: "minecraft:test_instance"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/test_instance"
    helpers:
      - name: "BlockBased"
        makes: "minecraft:block_based"
        signature: "BlockBased(environment: test_environment id | TestEnvironment, structure: structure id, max_ticks: int, dimension?: dimension id, setup_ticks?: int, required?: bool, rotation?: Rotation, manual_only?: bool, max_attempts?: int, required_successes?: int, sky_access?: bool, padding?: int)"
        params:
          - name: "environment"
            type: "test_environment id | TestEnvironment"
            doc: "The test environment to run this test as part of."
          - name: "structure"
            type: "structure id"
            doc: "Structure NBT file to use for the test."
          - name: "max_ticks"
            type: "int 1.."
            doc: "Maximum number of ticks allowed to pass before the test is considered timed out."
          - name: "dimension"
            type: "dimension id"
            optional: true
            doc: "Defaults to overworld."
          - name: "setup_ticks"
            type: "int 0.."
            optional: true
            doc: "Ticks to wait after placing the structure before starting the test. Defaults to `0`."
          - name: "required"
            type: "bool"
            optional: true
            doc: "Whether the test is considered required to pass for the full test suite to pass. Defaults to `true`."
          - name: "rotation"
            type: "Rotation"
            optional: true
            doc: "Rotation to apply to the test structure. Defaults to `none`."
          - name: "manual_only"
            type: "bool"
            optional: true
            doc: "If `true`, test is not included as part of automated test runs. Defaults to `false`."
          - name: "max_attempts"
            type: "int 1.."
            optional: true
            doc: "Number of attempts to run the test. Defaults to `1`."
          - name: "required_successes"
            type: "int 1.."
            optional: true
            doc: "Number of attempts that must succeed for the test to be considered successful. Defaults to `1`."
          - name: "sky_access"
            type: "bool"
            optional: true
            doc: "Whether the test needs clear access to the sky. Defaults to `false`.\nIf `false`, test is enclosed in barrier blocks. If `true`, the top is left open."
          - name: "padding"
            type: "int 0..128"
            optional: true
            doc: "Additional padding in blocks placed around the structure. Defaults to `0`."
      - name: "Function"
        makes: "minecraft:function"
        signature: "Function(environment: test_environment id | TestEnvironment, structure: structure id, max_ticks: int, function: test_function id, dimension?: dimension id, setup_ticks?: int, required?: bool, rotation?: Rotation, manual_only?: bool, max_attempts?: int, required_successes?: int, sky_access?: bool, padding?: int)"
        params:
          - name: "environment"
            type: "test_environment id | TestEnvironment"
            doc: "The test environment to run this test as part of."
          - name: "structure"
            type: "structure id"
            doc: "Structure NBT file to use for the test."
          - name: "max_ticks"
            type: "int 1.."
            doc: "Maximum number of ticks allowed to pass before the test is considered timed out."
          - name: "function"
            type: "test_function id"
            doc: "Test function (Java code) to run."
          - name: "dimension"
            type: "dimension id"
            optional: true
            doc: "Defaults to overworld."
          - name: "setup_ticks"
            type: "int 0.."
            optional: true
            doc: "Ticks to wait after placing the structure before starting the test. Defaults to `0`."
          - name: "required"
            type: "bool"
            optional: true
            doc: "Whether the test is considered required to pass for the full test suite to pass. Defaults to `true`."
          - name: "rotation"
            type: "Rotation"
            optional: true
            doc: "Rotation to apply to the test structure. Defaults to `none`."
          - name: "manual_only"
            type: "bool"
            optional: true
            doc: "If `true`, test is not included as part of automated test runs. Defaults to `false`."
          - name: "max_attempts"
            type: "int 1.."
            optional: true
            doc: "Number of attempts to run the test. Defaults to `1`."
          - name: "required_successes"
            type: "int 1.."
            optional: true
            doc: "Number of attempts that must succeed for the test to be considered successful. Defaults to `1`."
          - name: "sky_access"
            type: "bool"
            optional: true
            doc: "Whether the test needs clear access to the sky. Defaults to `false`.\nIf `false`, test is enclosed in barrier blocks. If `true`, the top is left open."
          - name: "padding"
            type: "int 0..128"
            optional: true
            doc: "Additional padding in blocks placed around the structure. Defaults to `0`."
  - group: "Tint source"
    dispatcher: "minecraft:tint_source"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/tint_source"
    helpers:
      - name: "Constant"
        makes: "minecraft:constant"
        signature: "Constant(value: RGB)"
        params:
          - name: "value"
            type: "RGB"
            doc: "Constant tint color to apply."
      - name: "CustomModelData"
        makes: "minecraft:custom_model_data"
        signature: "CustomModelData(default: RGB, index?: int)"
        params:
          - name: "default"
            type: "RGB"
            doc: "Tint to apply when the `custom_model_data` component is not present, or when it doesn't have a color in the specified index."
          - name: "index"
            type: "int 0.."
            optional: true
            doc: "The index of the `colors` list in the `custom_model_data` component. Defaults to 0."
      - name: "Dye"
        makes: "minecraft:dye"
        signature: "Dye(default: ActuallyTranslucentRGB)"
        params:
          - name: "default"
            type: "ActuallyTranslucentRGB"
            doc: "Tint to apply when the `dyed_color` component is not present."
      - name: "Firework"
        makes: "minecraft:firework"
        signature: "Firework(default: ActuallyTranslucentRGB)"
        params:
          - name: "default"
            type: "ActuallyTranslucentRGB"
            doc: "Tint to apply when the `firework_explosion` component is not present."
      - name: "Grass"
        makes: "minecraft:grass"
        signature: "Grass(temperature: float, downfall: float)"
        params:
          - name: "temperature"
            type: "number 0..1"
          - name: "downfall"
            type: "number 0..1"
      - name: "MapColor"
        makes: "minecraft:map_color"
        signature: "MapColor(default: RGB)"
        params:
          - name: "default"
            type: "RGB"
            doc: "Tint to apply when the `map_color` component is not present."
      - name: "Potion"
        makes: "minecraft:potion"
        signature: "Potion(default: RGB)"
        params:
          - name: "default"
            type: "RGB"
            doc: "Tint to apply when the `potion_contents` component is not present, or it has no effects and no `custom_color` is set."
      - name: "Team"
        makes: "minecraft:team"
        signature: "Team(default: RGB)"
        params:
          - name: "default"
            type: "RGB"
            doc: "Tint to apply when there is no context entity, entity is not in a team or the team has no color."
  - group: "Tree decorator"
    dispatcher: "minecraft:tree_decorator"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/tree_decorator"
    helpers:
      - name: "AlterGround"
        makes: "minecraft:alter_ground"
        signature: "AlterGround(provider: BlockStateProviderRef)"
        params:
          - name: "provider"
            type: "BlockStateProviderRef"
      - name: "AttachedToLeaves"
        makes: "minecraft:attached_to_leaves"
        signature: "AttachedToLeaves(probability: float, exclusion_radius_xz: int, exclusion_radius_y: int, required_empty_blocks: int, block_provider: BlockStateProviderRef, directions: [Direction])"
        params:
          - name: "probability"
            type: "number 0..1"
          - name: "exclusion_radius_xz"
            type: "int 0..16"
          - name: "exclusion_radius_y"
            type: "int 0..16"
          - name: "required_empty_blocks"
            type: "int 1..16"
          - name: "block_provider"
            type: "BlockStateProviderRef"
          - name: "directions"
            type: "list of Direction (at least 1)"
      - name: "AttachedToLogs"
        makes: "minecraft:attached_to_logs"
        signature: "AttachedToLogs(probability: float, block_provider: BlockStateProviderRef, directions: [Direction])"
        params:
          - name: "probability"
            type: "number 0..1"
          - name: "block_provider"
            type: "BlockStateProviderRef"
          - name: "directions"
            type: "list of Direction (at least 1)"
      - name: "Beehive"
        makes: "minecraft:beehive"
        signature: "Beehive(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "Cocoa"
        makes: "minecraft:cocoa"
        signature: "Cocoa(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "CreakingHeart"
        makes: "minecraft:creaking_heart"
        signature: "CreakingHeart(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "LeaveVine"
        makes: "minecraft:leave_vine"
        signature: "LeaveVine(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "PaleMoss"
        makes: "minecraft:pale_moss"
        signature: "PaleMoss(leaves_probability: float, trunk_probability: float, ground_probability: float)"
        params:
          - name: "leaves_probability"
            type: "number 0..1"
          - name: "trunk_probability"
            type: "number 0..1"
          - name: "ground_probability"
            type: "number 0..1"
      - name: "PlaceOnGround"
        makes: "minecraft:place_on_ground"
        signature: "PlaceOnGround(block_state_provider: BlockStateProviderRef, tries?: int, radius?: int, height?: int)"
        params:
          - name: "block_state_provider"
            type: "BlockStateProviderRef"
            doc: "The block to place on the ground."
          - name: "tries"
            type: "int 1.."
            optional: true
            doc: "Defaults to `128`."
          - name: "radius"
            type: "int 0.."
            optional: true
            doc: "Defaults to `2`."
          - name: "height"
            type: "int 0.."
            optional: true
            doc: "Defaults to `1`."
      - name: "ShelfMushroom"
        makes: "minecraft:shelf_mushroom"
        signature: "ShelfMushroom(probability: float)"
        params:
          - name: "probability"
            type: "number 0..1"
      - name: "TrunkVine"
        makes: "minecraft:trunk_vine"
        signature: "TrunkVine()"
  - group: "Trigger"
    dispatcher: "minecraft:trigger"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/trigger"
    helpers:
      - name: "AllayDropItemOnBlock"
        makes: "minecraft:allay_drop_item_on_block"
        signature: "AllayDropItemOnBlock(conditions?: ItemUesdOnLocationConditions)"
        params:
          - name: "conditions"
            type: "ItemUesdOnLocationConditions"
            optional: true
      - name: "AnyBlockUse"
        makes: "minecraft:any_block_use"
        signature: "AnyBlockUse(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, location?: AdvancementLocationPredicate }"
            optional: true
      - name: "AvoidVibration"
        makes: "minecraft:avoid_vibration"
        signature: "AvoidVibration(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "BeeNestDestroyed"
        makes: "minecraft:bee_nest_destroyed"
        signature: "BeeNestDestroyed(conditions?: object)"
        params:
          - name: "conditions"
            type: "object"
            optional: true
      - name: "BredAnimals"
        makes: "minecraft:bred_animals"
        signature: "BredAnimals(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, parent?: AdvancementEntityPredicate, partner?: AdvancementEntityPredicate, child?: AdvancementEntityPredicate }"
            optional: true
      - name: "BrewedPotion"
        makes: "minecraft:brewed_potion"
        signature: "BrewedPotion(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, potion?: PotionsPredicate }"
            optional: true
      - name: "ChangedDimension"
        makes: "minecraft:changed_dimension"
        signature: "ChangedDimension(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, from?: dimension id, to?: dimension id }"
            optional: true
      - name: "ChanneledLightning"
        makes: "minecraft:channeled_lightning"
        signature: "ChanneledLightning(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, victims?: list of AdvancementEntityPredicate }"
            optional: true
      - name: "ConstructBeacon"
        makes: "minecraft:construct_beacon"
        signature: "ConstructBeacon(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, level?: MinMaxBounds of int }"
            optional: true
      - name: "ConsumeItem"
        makes: "minecraft:consume_item"
        signature: "ConsumeItem(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "CrafterRecipeCrafted"
        makes: "minecraft:crafter_recipe_crafted"
        signature: "CrafterRecipeCrafted(conditions: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, recipes: RecipeListRef, ingredients?: list of ItemPredicate (1 to 9) }"
      - name: "CuredZombieVillager"
        makes: "minecraft:cured_zombie_villager"
        signature: "CuredZombieVillager(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, zombie?: AdvancementEntityPredicate, villager?: AdvancementEntityPredicate }"
            optional: true
      - name: "DefaultBlockUse"
        makes: "minecraft:default_block_use"
        signature: "DefaultBlockUse(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, location?: AdvancementLocationPredicate }"
            optional: true
      - name: "EffectsChanged"
        makes: "minecraft:effects_changed"
        signature: "EffectsChanged(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, effects?: EntityEffectsPredicate, source?: AdvancementEntityPredicate }"
            optional: true
      - name: "EnchantedItem"
        makes: "minecraft:enchanted_item"
        signature: "EnchantedItem(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate, levels?: MinMaxBounds of int }"
            optional: true
      - name: "EnterBlock"
        makes: "minecraft:enter_block"
        signature: "EnterBlock(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, blocks?: BlockListRef, state?: any (depends on blocks) }"
            optional: true
      - name: "EntityHurtPlayer"
        makes: "minecraft:entity_hurt_player"
        signature: "EntityHurtPlayer(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, damage?: DamagePredicate }"
            optional: true
      - name: "EntityKilledPlayer"
        makes: "minecraft:entity_killed_player"
        signature: "EntityKilledPlayer(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate, killing_blow?: DamageSourcePredicate }"
            optional: true
      - name: "FallAfterExplosion"
        makes: "minecraft:fall_after_explosion"
        signature: "FallAfterExplosion(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, start_position?: LocationPredicate, distance?: DistancePredicate, cause?: AdvancementEntityPredicate }"
            optional: true
      - name: "FallFromHeight"
        makes: "minecraft:fall_from_height"
        signature: "FallFromHeight(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, start_position?: LocationPredicate, distance?: DistancePredicate }"
            optional: true
      - name: "FilledBucket"
        makes: "minecraft:filled_bucket"
        signature: "FilledBucket(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "FishingRodHooked"
        makes: "minecraft:fishing_rod_hooked"
        signature: "FishingRodHooked(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate, item?: ItemPredicate, rod?: ItemPredicate }"
            optional: true
      - name: "HeroOfTheVillage"
        makes: "minecraft:hero_of_the_village"
        signature: "HeroOfTheVillage(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "Impossible"
        makes: "minecraft:impossible"
        signature: "Impossible(conditions?: object)"
        params:
          - name: "conditions"
            type: "object"
            optional: true
      - name: "InventoryChanged"
        makes: "minecraft:inventory_changed"
        signature: "InventoryChanged(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, slots?: { empty?: MinMaxBounds of int, occupied?: MinMaxBounds of int, full?: MinMaxBounds of int }, items?: list of ItemPredicate }"
            optional: true
      - name: "ItemDurabilityChanged"
        makes: "minecraft:item_durability_changed"
        signature: "ItemDurabilityChanged(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, delta?: MinMaxBounds of int, durability?: MinMaxBounds of int, item?: ItemPredicate }"
            optional: true
      - name: "ItemUsedOnBlock"
        makes: "minecraft:item_used_on_block"
        signature: "ItemUsedOnBlock(conditions?: ItemUesdOnLocationConditions)"
        params:
          - name: "conditions"
            type: "ItemUesdOnLocationConditions"
            optional: true
      - name: "KillMobNearSculkCatalyst"
        makes: "minecraft:kill_mob_near_sculk_catalyst"
        signature: "KillMobNearSculkCatalyst(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate, killing_blow?: DamageSourcePredicate }"
            optional: true
      - name: "KilledByArrow"
        makes: "minecraft:killed_by_arrow"
        signature: "KilledByArrow(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, unique_entity_types?: MinMaxBounds of int, fired_from_weapon?: ItemPredicate, victims?: list of AdvancementEntityPredicate }"
            optional: true
      - name: "Levitation"
        makes: "minecraft:levitation"
        signature: "Levitation(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, distance?: DistancePredicate, duration?: MinMaxBounds of int }"
            optional: true
      - name: "LightningStrike"
        makes: "minecraft:lightning_strike"
        signature: "LightningStrike(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, lightning?: AdvancementEntityPredicate, bystander?: AdvancementEntityPredicate }"
            optional: true
      - name: "Location"
        makes: "minecraft:location"
        signature: "Location(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "NetherTravel"
        makes: "minecraft:nether_travel"
        signature: "NetherTravel(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, start_position?: LocationPredicate, distance?: DistancePredicate }"
            optional: true
      - name: "PlacedBlock"
        makes: "minecraft:placed_block"
        signature: "PlacedBlock(conditions?: ItemUesdOnLocationConditions)"
        params:
          - name: "conditions"
            type: "ItemUesdOnLocationConditions"
            optional: true
      - name: "PlayerGeneratesContainerLoot"
        makes: "minecraft:player_generates_container_loot"
        signature: "PlayerGeneratesContainerLoot(conditions: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, loot_tables: LootTableListRef }"
      - name: "PlayerHurtEntity"
        makes: "minecraft:player_hurt_entity"
        signature: "PlayerHurtEntity(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, damage?: DamagePredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "PlayerInteractedWithEntity"
        makes: "minecraft:player_interacted_with_entity"
        signature: "PlayerInteractedWithEntity(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "PlayerKilledEntity"
        makes: "minecraft:player_killed_entity"
        signature: "PlayerKilledEntity(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate, killing_blow?: DamageSourcePredicate }"
            optional: true
      - name: "PlayerShearedEquipment"
        makes: "minecraft:player_sheared_equipment"
        signature: "PlayerShearedEquipment(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "RecipeCrafted"
        makes: "minecraft:recipe_crafted"
        signature: "RecipeCrafted(conditions: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, recipes: RecipeListRef, ingredients?: list of ItemPredicate (1 to 9) }"
      - name: "RecipeUnlocked"
        makes: "minecraft:recipe_unlocked"
        signature: "RecipeUnlocked(conditions: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, recipes: RecipeListRef }"
      - name: "RideEntityInLava"
        makes: "minecraft:ride_entity_in_lava"
        signature: "RideEntityInLava(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, start_position?: LocationPredicate, distance?: DistancePredicate }"
            optional: true
      - name: "ShotCrossbow"
        makes: "minecraft:shot_crossbow"
        signature: "ShotCrossbow(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "SleptInBed"
        makes: "minecraft:slept_in_bed"
        signature: "SleptInBed(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "SlideDownBlock"
        makes: "minecraft:slide_down_block"
        signature: "SlideDownBlock(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, blocks?: BlockListRef, state?: any (depends on blocks) }"
            optional: true
      - name: "SpearMobs"
        makes: "minecraft:spear_mobs"
        signature: "SpearMobs(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, count?: int 1.. }"
            optional: true
      - name: "StartedRiding"
        makes: "minecraft:started_riding"
        signature: "StartedRiding(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "SummonedEntity"
        makes: "minecraft:summoned_entity"
        signature: "SummonedEntity(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "TameAnimal"
        makes: "minecraft:tame_animal"
        signature: "TameAnimal(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "TargetHit"
        makes: "minecraft:target_hit"
        signature: "TargetHit(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, projectile?: AdvancementEntityPredicate, signal_strength?: MinMaxBounds of int }"
            optional: true
      - name: "ThrownItemPickedUpByEntity"
        makes: "minecraft:thrown_item_picked_up_by_entity"
        signature: "ThrownItemPickedUpByEntity(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "ThrownItemPickedUpByPlayer"
        makes: "minecraft:thrown_item_picked_up_by_player"
        signature: "ThrownItemPickedUpByPlayer(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate, entity?: AdvancementEntityPredicate }"
            optional: true
      - name: "Tick"
        makes: "minecraft:tick"
        signature: "Tick(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
      - name: "UsedEnderEye"
        makes: "minecraft:used_ender_eye"
        signature: "UsedEnderEye(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, distance?: MinMaxBounds of number }"
            optional: true
      - name: "UsedTotem"
        makes: "minecraft:used_totem"
        signature: "UsedTotem(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "UsingItem"
        makes: "minecraft:using_item"
        signature: "UsingItem(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "VillagerTrade"
        makes: "minecraft:villager_trade"
        signature: "VillagerTrade(conditions?: object)"
        params:
          - name: "conditions"
            type: "{ player?: AdvancementEntityPredicate, villager?: AdvancementEntityPredicate, item?: ItemPredicate }"
            optional: true
      - name: "VoluntaryExile"
        makes: "minecraft:voluntary_exile"
        signature: "VoluntaryExile(conditions?: PlayerConditions)"
        params:
          - name: "conditions"
            type: "PlayerConditions"
            optional: true
  - group: "Trunk placer"
    dispatcher: "minecraft:trunk_placer"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/trunk_placer"
    helpers:
      - name: "BendingTrunkPlacer"
        makes: "minecraft:bending_trunk_placer"
        signature: "BendingTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int, bend_length: IntProvider, min_height_for_leaves?: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
          - name: "bend_length"
            type: "IntProvider of int 1..64"
          - name: "min_height_for_leaves"
            type: "int 1.."
            optional: true
      - name: "CherryTrunkPlacer"
        makes: "minecraft:cherry_trunk_placer"
        signature: "CherryTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int, branch_count: IntProvider, branch_horizontal_length: IntProvider, branch_start_offset_from_top: UniformIntProvider, branch_end_offset_from_top: IntProvider)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
          - name: "branch_count"
            type: "IntProvider of int 1..3"
          - name: "branch_horizontal_length"
            type: "IntProvider of int 2..16"
          - name: "branch_start_offset_from_top"
            type: "UniformIntProvider of int -16..0"
          - name: "branch_end_offset_from_top"
            type: "IntProvider of int -16..16"
      - name: "DarkOakTrunkPlacer"
        makes: "minecraft:dark_oak_trunk_placer"
        signature: "DarkOakTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "FancyTrunkPlacer"
        makes: "minecraft:fancy_trunk_placer"
        signature: "FancyTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "ForkingTrunkPlacer"
        makes: "minecraft:forking_trunk_placer"
        signature: "ForkingTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "GiantTrunkPlacer"
        makes: "minecraft:giant_trunk_placer"
        signature: "GiantTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "MegaJungleTrunkPlacer"
        makes: "minecraft:mega_jungle_trunk_placer"
        signature: "MegaJungleTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "PoplarTrunkPlacer"
        makes: "minecraft:poplar_trunk_placer"
        signature: "PoplarTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int, trunk_height_above_branches: IntProvider, branch_amount: IntProvider)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
          - name: "trunk_height_above_branches"
            type: "IntProvider of int 0..8"
          - name: "branch_amount"
            type: "IntProvider of int 1..4"
      - name: "StraightTrunkPlacer"
        makes: "minecraft:straight_trunk_placer"
        signature: "StraightTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
      - name: "UpwardsBranchingTrunkPlacer"
        makes: "minecraft:upwards_branching_trunk_placer"
        signature: "UpwardsBranchingTrunkPlacer(base_height: int, height_rand_a: int, height_rand_b: int, extra_branch_steps: IntProvider, extra_branch_length: IntProvider, place_branch_per_log_probability: float, can_grow_through: [block id] | block id)"
        params:
          - name: "base_height"
            type: "int 0..32"
          - name: "height_rand_a"
            type: "int 0..24"
          - name: "height_rand_b"
            type: "int 0..24"
          - name: "extra_branch_steps"
            type: "IntProvider of int 1.."
          - name: "extra_branch_length"
            type: "IntProvider of int 0.."
          - name: "place_branch_per_log_probability"
            type: "number 0..1"
          - name: "can_grow_through"
            type: "block id | #block tag | list of block ids"
  - group: "Pool alias binding"
    dispatcher: "minecraft:worldgen/pool_alias_binding"
    url: "https://minecraftmetascript.github.io/mms/docs/reference/helpers/worldgen-pool_alias_binding"
    helpers:
      - name: "Direct"
        makes: "minecraft:direct"
        signature: "Direct(alias: string, target: template_pool id)"
        params:
          - name: "alias"
            type: "id"
          - name: "target"
            type: "template_pool id"
      - name: "Random"
        makes: "minecraft:random"
        signature: "Random(alias: string, targets: NonEmptyWeightedList)"
        params:
          - name: "alias"
            type: "id"
          - name: "targets"
            type: "NonEmptyWeightedList of template_pool id"
      - name: "RandomGroup"
        makes: "minecraft:random_group"
        signature: "RandomGroup(groups: NonEmptyWeightedList)"
        params:
          - name: "groups"
            type: "NonEmptyWeightedList of list of PoolAlias"
types:
  - name: "ActuallyTranslucentRGB"
    id: "assets.item_definition.ActuallyTranslucentRGB"
    is: "int | list of number 0..1 (exactly 3)"
  - name: "AdvancementEntityPredicate"
    id: "data.advancement.trigger.AdvancementEntityPredicate"
    is: "PredicateRef"
  - name: "AdvancementLocationPredicate"
    id: "data.advancement.trigger.AdvancementLocationPredicate"
    is: "PredicateRef"
  - name: "AfterAction"
    id: "data.dialog.AfterAction"
    is: "one of the values below"
    values:
      - value: "close"
        doc: "Closes the dialog.\nReturns to the previous non-dialog screen, if any."
      - value: "none"
        doc: "Does nothing.\nOnly available if `pause` is set to `false`."
      - value: "wait_for_response"
        doc: "Replaces the dialog with a \"Waiting for Response\" screen.\nThe waiting screen unpauses the game in single-player mode."
  - name: "AggregateOperands"
    id: "data.number_provider.context_float.AggregateOperands"
    is: "ContextFloatProvider | context_float_provider id | #context_float_provider tag | list of FloatRef (at least 1)"
  - name: "AggregateOperands"
    id: "data.number_provider.context_int.AggregateOperands"
    is: "ContextIntProvider | context_int_provider id | #context_int_provider tag | list of IntRef (at least 1)"
  - name: "AnyEntity"
    id: "world.entity.AnyEntity"
    is: "object"
    fields:
      - name: "id"
        type: "entity_type id"
        doc: "The ID of this entity. Not present on player entities."
  - name: "ApplyBonusFormula"
    id: "data.loot.function.ApplyBonusFormula"
    is: "one of the values below"
    values:
      - "ore_drops"
      - "uniform_bonus_count"
      - "binomial_with_bonus_count"
  - name: "AttributeOperation"
    id: "util.attribute.AttributeOperation"
    is: "one of the values below"
    values:
      - value: "add_value"
        doc: "Adds all of the modifiers' amounts to the current value of the attribute."
      - value: "add_multiplied_base"
        doc: "Multiplies the current value of the attribute by `(1 + x)`,\nwhere `x` is the sum of the modifiers' amounts."
      - value: "add_multiplied_total"
        doc: "For every modifier, multiplies the current value of the attribute by `(1 + x)`,\nwhere `x` is the amount of the particular modifier."
  - name: "Axis"
    id: "util.direction.Axis"
    is: "one of the values below"
    values:
      - "x"
      - "y"
      - "z"
  - name: "BannerAttachment"
    id: "assets.item_definition.BannerAttachment"
    is: "one of the values below"
    values:
      - "wall"
      - "ground"
  - name: "BiomeTemperature"
    id: "data.worldgen.structure.BiomeTemperature"
    is: "one of the values below"
    values:
      - "cold"
      - "warm"
  - name: "BlockEntityTarget"
    id: "data.loot.BlockEntityTarget"
    is: "\"block_entity\""
  - name: "BlockListRef"
    id: "util.registry_ref.BlockListRef"
    is: "block id | #block tag | list of block ids"
  - name: "BlockState"
    id: "util.block_state.BlockState"
    is: "block id | FullBlockState"
  - name: "BlockStateProvider"
    id: "data.worldgen.feature.block_state_provider.BlockStateProvider"
    is: "TypedBlockStateProvider | FullBlockState"
  - name: "BlockStateProviderRef"
    id: "data.worldgen.feature.block_state_provider.BlockStateProviderRef"
    is: "BlockStateProvider | block_state_provider id"
  - name: "BlockTransformDropStrategy"
    id: "data.block_transformer.BlockTransformDropStrategy"
    is: "one of the values below"
    values:
      - "clicked_face"
      - "from_middle"
  - name: "BlockTransformParticle"
    id: "data.block_transformer.BlockTransformParticle"
    is: "one of the values below"
    values:
      - "none"
      - "scrape"
      - "wax_on"
      - "wax_off"
  - name: "BlockTransformType"
    id: "data.block_transformer.BlockTransformType"
    is: "one of the values below"
    values:
      - "single_block"
      - value: "copper_chest"
        doc: "If the original block and the transformed block are both copper chests of any kind, the transform applies to the other half of the double chest."
  - name: "BoundingBox"
    id: "data.worldgen.structure.BoundingBox"
    is: "one of the values below"
    values:
      - "piece"
      - "full"
  - name: "CardinalLightType"
    id: "data.worldgen.dimension.CardinalLightType"
    is: "one of the values below"
    values:
      - "default"
      - "nether"
  - name: "CarverListRef"
    id: "data.worldgen.carver.CarverListRef"
    is: "ConfiguredCarver | carver id | #carver tag | list of (carver id | ConfiguredCarver)"
  - name: "CaveSurface"
    id: "data.worldgen.CaveSurface"
    is: "one of the values below"
    values:
      - "floor"
      - "ceiling"
  - name: "ChatDecorationParameter"
    id: "data.chat_type.ChatDecorationParameter"
    is: "one of the values below"
    values:
      - "sender"
      - "content"
      - "target"
  - name: "ChestType"
    id: "assets.item_definition.ChestType"
    is: "one of the values below"
    values:
      - "single"
      - "left"
      - "right"
  - name: "ChickenModelType"
    id: "data.variants.chicken.ChickenModelType"
    is: "one of the values below"
    values:
      - "normal"
      - "cold"
  - name: "ConditionalPropertyType"
    id: "assets.item_definition.ConditionalPropertyType"
    is: "one of the values below"
    values:
      - "broken"
      - "bundle/has_selected_item"
      - "carried"
      - "component"
      - "custom_model_data"
      - "damaged"
      - "extended_view"
      - "fishing_rod/cast"
      - "has_component"
      - "keybind_down"
      - "selected"
      - "using_item"
      - "view_entity"
  - name: "ConfiguredFeatureRef"
    id: "data.worldgen.feature.ConfiguredFeatureRef"
    is: "feature id | ConfiguredFeature"
  - name: "ContainerComponents"
    id: "data.loot.function.ContainerComponents"
    is: "one of the values below"
    values:
      - "container"
      - "bundle_contents"
      - "charged_projectiles"
  - name: "ContextFloatProvider"
    id: "data.number_provider.context_float.ContextFloatProvider"
    is: "number | context_float_provider"
  - name: "ContextIntProvider"
    id: "data.number_provider.context_int.ContextIntProvider"
    is: "int | context_int_provider"
  - name: "CookingBookCategory"
    id: "data.recipe.CookingBookCategory"
    is: "one of the values below"
    values:
      - "food"
      - "blocks"
      - "misc"
  - name: "CopperGolemStatuePose"
    id: "assets.item_definition.CopperGolemStatuePose"
    is: "one of the values below"
    values:
      - "standing"
      - "sitting"
      - "running"
      - "star"
  - name: "CopyNbtStrategy"
    id: "data.loot.function.CopyNbtStrategy"
    is: "one of the values below"
    values:
      - value: "replace"
        doc: "Replace any existing contents of the target."
      - value: "append"
        doc: "Append to a list."
      - value: "merge"
        doc: "Merge into a compound tag."
  - name: "CowModelType"
    id: "data.variants.cow.CowModelType"
    is: "one of the values below"
    values:
      - "normal"
      - "cold"
      - "warm"
  - name: "CraftingBookCategory"
    id: "data.recipe.CraftingBookCategory"
    is: "one of the values below"
    values:
      - "building"
      - "redstone"
      - "equipment"
      - "misc"
  - name: "CubicSpline"
    id: "data.worldgen.density_function.CubicSpline"
    is: "number | { coordinate: DensityFunctionRef, points: list of SplinePoint }"
  - name: "CustomData"
    id: "world.component.CustomData"
    is: "CustomDataMap | string"
  - name: "CustomSpawnRules"
    id: "world.block.spawner.CustomSpawnRules"
    is: "object"
    fields:
      - name: "block_light_limit"
        type: "InclusiveRange of int 0..15"
        optional: true
        doc: "Range of block light level required for the entity to spawn."
      - name: "sky_light_limit"
        type: "InclusiveRange of int 0..15"
        optional: true
        doc: "Range of sky light level required for the entity to spawn."
  - name: "CustomizableItemDisplayContext"
    id: "assets.model.CustomizableItemDisplayContext"
    is: "one of the values below"
    values:
      - "firstperson_righthand"
      - "firstperson_lefthand"
      - "thirdperson_righthand"
      - "thirdperson_lefthand"
      - "gui"
      - "head"
      - "ground"
      - "fixed"
      - "on_shelf"
  - name: "DamageEffects"
    id: "data.damage_type.DamageEffects"
    is: "one of the values below"
    values:
      - value: "hurt"
        doc: "Default hurt sound."
      - value: "thorns"
        doc: "Thorns hurt sound."
      - value: "drowning"
        doc: "Drowing sound."
      - value: "burning"
        doc: "A single tick of burning hurt sound."
      - value: "poking"
        doc: "Berry bush poke sound."
      - value: "freezing"
        doc: "A single tick of freezing hurt sound."
  - name: "DamageScaling"
    id: "data.damage_type.DamageScaling"
    is: "one of the values below"
    values:
      - value: "never"
        doc: "Always the same."
      - value: "always"
        doc: "Always scale with difficulty."
      - value: "when_caused_by_living_non_player"
        doc: "Scale with difficulty if it was caused by a living entity who is not a player."
  - name: "DeathMessageType"
    id: "data.damage_type.DeathMessageType"
    is: "one of the values below"
    values:
      - value: "default"
        doc: "Resulting translation key of `death.attack.` + message_id."
      - value: "fall_variants"
        doc: "Resulting translation key of `death.attack.` + message_id."
      - value: "intentional_game_design"
        doc: "Resulting translation key of `death.attack.` + message_id + `.link`."
  - name: "DecorationStep"
    id: "data.worldgen.DecorationStep"
    is: "one of the values below"
    values:
      - "raw_generation"
      - "lakes"
      - "local_modifications"
      - "underground_structures"
      - "surface_structures"
      - "strongholds"
      - "underground_ores"
      - "underground_decoration"
      - "fluid_springs"
      - "vegetal_decoration"
      - "top_layer_modification"
  - name: "DensityFunction"
    id: "data.worldgen.density_function.DensityFunction"
    is: "NoiseRange | density_function"
  - name: "DensityFunctionRef"
    id: "data.worldgen.density_function.DensityFunctionRef"
    is: "density_function id | DensityFunction"
  - name: "DialogListRef"
    id: "data.dialog.DialogListRef"
    is: "Dialog | dialog id | #dialog tag | list of (dialog id | Dialog)"
  - name: "Difficulty"
    id: "data.gametest.test_environment.Difficulty"
    is: "one of the values below"
    values:
      - "peaceful"
      - "easy"
      - "normal"
      - "hard"
  - name: "DimensionTypeRef"
    id: "data.worldgen.dimension.DimensionTypeRef"
    is: "dimension_type id"
  - name: "Direction"
    id: "util.direction.Direction"
    is: "one of the values below"
    values:
      - "down"
      - "up"
      - "north"
      - "east"
      - "south"
      - "west"
  - name: "DistanceMetric"
    id: "data.worldgen.density_function.DistanceMetric"
    is: "one of the values below"
    values:
      - value: "euclidean"
        doc: "`sqrt(dx^2 + dy^2 + dz^2)`"
      - value: "euclidean_squared"
        doc: "`dx^2 + dy^2 + dz^2`"
      - value: "manhattan"
        doc: "`abs(dx) + abs(dy) + abs(dz)`"
      - value: "chebyshev"
        doc: "`max(abs(dx), abs(dy), abs(dz))`"
  - name: "DyeColor"
    id: "util.color.DyeColor"
    is: "one of the values below"
    values:
      - "white"
      - "orange"
      - "magenta"
      - "light_blue"
      - "yellow"
      - "lime"
      - "pink"
      - "gray"
      - "light_gray"
      - "cyan"
      - "purple"
      - "blue"
      - "brown"
      - "green"
      - "red"
      - "black"
  - name: "DynamicDrops"
    id: "data.loot.DynamicDrops"
    is: "one of the values below"
    values:
      - value: "contents"
        doc: "Drops the items in a shulker box."
      - value: "sherds"
        doc: "Drops the sherds of a decorated pot."
  - name: "EnchantmentsType"
    id: "data.enchantment.provider.EnchantmentsType"
    is: "enchantment id | #enchantment tag | list of enchantment ids (at least 1)"
  - name: "EndCubeEffectType"
    id: "assets.item_definition.EndCubeEffectType"
    is: "one of the values below"
    values:
      - "portal"
      - "gateway"
  - name: "EntityPredicate"
    id: "data.advancement.predicate.EntityPredicate"
    is: "EntitySubPredicateMap"
  - name: "EntityTarget"
    id: "data.loot.EntityTarget"
    is: "one of the values below"
    values:
      - "this"
      - "attacker"
      - "direct_attacker"
      - "attacking_player"
      - "target_entity"
      - "interacting_entity"
  - name: "EquipmentSlot"
    id: "util.slot.EquipmentSlot"
    is: "one of the values below"
    values:
      - "mainhand"
      - "offhand"
      - "head"
      - "chest"
      - "legs"
      - "feet"
      - "body"
      - "saddle"
  - name: "EquipmentSlotGroup"
    id: "util.slot.EquipmentSlotGroup"
    is: "one of the values below"
    values:
      - "mainhand"
      - "offhand"
      - "head"
      - "chest"
      - "legs"
      - "feet"
      - "hand"
      - "armor"
      - "any"
      - "body"
      - "saddle"
  - name: "FeatureRef"
    id: "data.worldgen.feature.FeatureRef"
    is: "PlacedFeatureRef"
  - name: "Filterable"
    id: "util.Filterable"
    is: "{ raw: T, filtered?: T } | T"
  - name: "FireworkShape"
    id: "world.component.item.FireworkShape"
    is: "one of the values below"
    values:
      - "small_ball"
      - "large_ball"
      - "star"
      - "creeper"
      - "burst"
  - name: "FlatWeightedList"
    id: "util.FlatWeightedList"
    is: "list of FlatWeightedEntry of T"
  - name: "FloatNumberProvider"
    id: "data.number_provider.FloatNumberProvider"
    is: "ContextFloatProvider"
  - name: "FloatNumberProviderRef"
    id: "data.number_provider.FloatNumberProviderRef"
    is: "FloatRef"
  - name: "FloatProvider"
    id: "data.worldgen.FloatProvider"
    is: "T | float_provider"
  - name: "FloatRange"
    id: "data.loot.FloatRange"
    is: "FloatNumberProviderRef | { min?: FloatNumberProviderRef, max?: FloatNumberProviderRef }"
  - name: "FloatRef"
    id: "data.number_provider.context_float.FloatRef"
    is: "context_float_provider id | ContextFloatProvider"
  - name: "FluidState"
    id: "util.fluid_state.FluidState"
    is: "fluid id | { id: fluid id, properties?: any (depends on id) }"
  - name: "FontOption"
    id: "assets.font.FontOption"
    is: "one of the values below"
    values:
      - "uniform"
      - "jp"
  - name: "FrequencyReductionMethod"
    id: "data.worldgen.structure_set.FrequencyReductionMethod"
    is: "one of the values below"
    values:
      - "default"
      - "legacy_type_1"
      - "legacy_type_2"
      - "legacy_type_3"
  - name: "GlobalEnvironmentAttributeMap"
    id: "data.worldgen.attribute.GlobalEnvironmentAttributeMap"
    is: "object"
    fields:
      - name: "[environment_attribute id]"
        type: "any"
        optional: true
  - name: "GrassColorModifier"
    id: "data.worldgen.biome.GrassColorModifier"
    is: "one of the values below"
    values:
      - "none"
      - value: "dark_forest"
        doc: "Grass color will be average of the base color and `#28340a`."
      - value: "swamp"
        doc: "Grass color will be either `#4c763c` or `#6a7039`, depending on block position. \\\nThe base color is ignored."
  - name: "HeadType"
    id: "assets.item_definition.HeadType"
    is: "one of the values below"
    values:
      - "creeper"
      - "dragon"
      - "piglin"
      - "player"
      - "skeleton"
      - "wither_skeleton"
      - "zombie"
  - name: "HeightProvider"
    id: "data.worldgen.HeightProvider"
    is: "height_provider | VerticalAnchor"
  - name: "HeightmapType"
    id: "data.worldgen.HeightmapType"
    is: "one of the values below"
    values:
      - "MOTION_BLOCKING"
      - "MOTION_BLOCKING_NO_LEAVES"
      - "OCEAN_FLOOR"
      - "OCEAN_FLOOR_WG"
      - "WORLD_SURFACE"
      - "WORLD_SURFACE_WG"
  - name: "InclusiveRange"
    id: "util.InclusiveRange"
    is: "T | { min_inclusive: T, max_inclusive: T } | list of T (exactly 2)"
  - name: "Ingredient"
    id: "data.recipe.Ingredient"
    is: "item id | #item tag | list of item ids (at least 1)"
  - name: "IntNumberProvider"
    id: "data.number_provider.IntNumberProvider"
    is: "ContextIntProvider"
  - name: "IntNumberProviderRef"
    id: "data.number_provider.IntNumberProviderRef"
    is: "IntRef"
  - name: "IntProvider"
    id: "data.worldgen.IntProvider"
    is: "T | int_provider"
  - name: "IntRange"
    id: "data.loot.IntRange"
    is: "IntNumberProviderRef | { min?: IntNumberProviderRef, max?: IntNumberProviderRef }"
  - name: "IntRef"
    id: "data.number_provider.context_int.IntRef"
    is: "context_int_provider id | ContextIntProvider"
  - name: "IntegerEnvironmentAttribute"
    id: "data.worldgen.attribute.IntegerEnvironmentAttribute"
    is: "string"
  - name: "ItemListRef"
    id: "util.registry_ref.ItemListRef"
    is: "item id | #item tag | list of item ids"
  - name: "ItemModifier"
    id: "data.item_modifier.ItemModifier"
    is: "LootFunction | item_modifier id | #item_modifier tag | list of (item_modifier id | LootFunction)"
  - name: "ItemModifierWithoutRootRef"
    id: "data.item_modifier.ItemModifierWithoutRootRef"
    is: "LootFunction | list of ItemModifierWithoutRootRef"
  - name: "ItemPredicate"
    id: "data.advancement.predicate.ItemPredicate"
    is: "{ items?: item id | #item tag | list of item ids, count?: MinMaxBounds of int, components?: DataComponentExactPredicate, predicates?: DataComponentPredicate }"
  - name: "ItemStack"
    id: "world.item.ItemStack"
    is: "object"
    fields:
      - name: "id"
        type: "item id"
        doc: "ID of the item."
      - name: "components"
        type: "DataComponentPatch"
        optional: true
      - name: "count"
        type: "int 1..99"
        optional: true
        doc: "Number of items in the stack.\nDefaults to `1`."
  - name: "ItemStackTarget"
    id: "data.loot.ItemStackTarget"
    is: "\"tool\""
  - name: "ItemStackTemplate"
    id: "world.item.ItemStackTemplate"
    is: "ItemStack | item id"
  - name: "LevelBasedValue"
    id: "data.enchantment.LevelBasedValue"
    is: "LevelBasedValue"
  - name: "LevelBasedValue"
    id: "data.enchantment.level_based_value.LevelBasedValue"
    is: "number | LevelBasedValueMap"
  - name: "LiquidSettings"
    id: "data.worldgen.structure.LiquidSettings"
    is: "one of the values below"
    values:
      - "apply_waterlogging"
      - "ignore_waterlogging"
  - name: "ListOperationMode"
    id: "data.loot.function.ListOperationMode"
    is: "one of the values below"
    values:
      - "append"
      - "insert"
      - "replace_all"
      - "replace_section"
  - name: "LootContextParamSets"
    id: "data.loot.LootContextParamSets"
    is: "one of the values below"
    values:
      - "empty"
      - "chest"
      - "command"
      - "selector"
      - "fishing"
      - "entity"
      - "gift"
      - "barter"
      - "advancement_reward"
      - "advancement_entity"
      - "advancement_location"
      - "generic"
      - "block"
      - "block_use"
      - "equipment"
      - "archaeology"
      - "vault"
      - "shearing"
      - "enchanted_damage"
      - "enchanted_item"
      - "enchanted_location"
      - "enchanted_entity"
      - "hit_block"
      - "block_interact"
      - "entity_interact"
      - "villager_trade"
      - "command_slot_source"
      - "container_process"
      - "command_compute_default"
      - "command_compute_position"
      - "command_compute_entity"
  - name: "LootTableListRef"
    id: "data.loot.LootTableListRef"
    is: "LootTable | loot_table id | #loot_table tag | list of (loot_table id | LootTable)"
  - name: "MaterialConditionRef"
    id: "data.worldgen.material_condition.MaterialConditionRef"
    is: "material_condition id | MaterialCondition"
  - name: "MaterialRuleRef"
    id: "data.worldgen.material_rule.MaterialRuleRef"
    is: "material_rule id | MaterialRule"
  - name: "MinMaxBounds"
    id: "data.util.MinMaxBounds"
    is: "T | { min?: T, max?: T }"
  - name: "MineshaftType"
    id: "data.worldgen.structure.MineshaftType"
    is: "one of the values below"
    values:
      - "normal"
      - "mesa"
  - name: "MobCategory"
    id: "data.worldgen.biome.MobCategory"
    is: "one of the values below"
    values:
      - "monster"
      - "creature"
      - "ambient"
      - "axolotls"
      - "underground_water_creature"
      - "water_creature"
      - "water_ambient"
      - "misc"
  - name: "ModelElementRotation"
    id: "assets.model.ModelElementRotation"
    is: "{ origin: list of number (exactly 3), rescale?: bool, axis: Axis, angle: number } | { origin: list of number (exactly 3), rescale?: bool, [Axis]?: number }"
  - name: "ModelRef"
    id: "assets.model.ModelRef"
    is: "model id"
  - name: "ModelVariant"
    id: "assets.block_state_definition.ModelVariant"
    is: "ModelVariantBase | list of object"
  - name: "MultiNoisePreset"
    id: "data.worldgen.dimension.biome_source.MultiNoisePreset"
    is: "one of the values below"
    values:
      - "nether"
      - "overworld"
  - name: "MultiPartCondition"
    id: "assets.block_state_definition.MultiPartCondition"
    is: "OR(…) | AND(…) | map of string to string"
  - name: "MultifaceBlock"
    id: "data.worldgen.feature.MultifaceBlock"
    is: "one of the values below"
    values:
      - "glow_lichen"
      - "sculk_vein"
  - name: "NbtContextTarget"
    id: "data.util.NbtContextTarget"
    is: "EntityTarget | BlockEntityTarget"
  - name: "NbtProvider"
    id: "data.util.NbtProvider"
    is: "NbtContextTarget | nbt_provider"
  - name: "NoiseGeneratorSettingsRef"
    id: "data.worldgen.noise_settings.NoiseGeneratorSettingsRef"
    is: "noise_settings id | object"
  - name: "NoiseParametersRef"
    id: "data.worldgen.density_function.NoiseParametersRef"
    is: "noise id | NoiseParameters"
  - name: "NoiseRange"
    id: "data.worldgen.density_function.NoiseRange"
    is: "number -1e+06..1e+06"
  - name: "NonEmptyWeightedList"
    id: "util.NonEmptyWeightedList"
    is: "list of WeightedEntry of T (at least 1)"
  - name: "NumericPropertyType"
    id: "assets.item_definition.NumericPropertyType"
    is: "one of the values below"
    values:
      - "bundle/fullness"
      - "compass"
      - "cooldown"
      - "count"
      - "crossbow/pull"
      - "custom_model_data"
      - "damage"
      - "time"
      - "use_cycle"
      - "use_duration"
  - name: "NumericalEnvironmentAttribute"
    id: "data.worldgen.attribute.NumericalEnvironmentAttribute"
    is: "one of the values below"
    values:
      - "visual/cloud_height"
      - "visual/fog_start_distance"
      - "visual/moon_angle"
      - "visual/star_angle"
      - "visual/sun_angle"
      - "visual/water_fog_start_distance"
      - "visual/cloud_fog_end_distance"
      - "visual/fog_end_distance"
      - "visual/sky_fog_end_distance"
      - "visual/water_fog_end_distance"
      - "visual/sky_light_factor"
      - "visual/star_brightness"
      - "audio/music_volume"
      - "gameplay/cat_waking_up_gift_chance"
      - "gameplay/creature_world_gen_spawn_probability"
      - "gameplay/surface_slime_spawn_chance"
      - "gameplay/turtle_egg_hatch_chance"
      - "gameplay/sky_light_level"
  - name: "PaletteRef"
    id: "assets.atlas.PaletteRef"
    is: "texture id"
  - name: "PaletteTexture"
    id: "assets.atlas.PaletteTexture"
    is: "PaletteRef"
  - name: "Pass"
    id: "assets.shader.post.Pass"
    is: "object"
  - name: "PigModelType"
    id: "data.variants.pig.PigModelType"
    is: "one of the values below"
    values:
      - "normal"
      - "cold"
  - name: "PlacedFeatureListRef"
    id: "data.worldgen.feature.placement.PlacedFeatureListRef"
    is: "PlacedFeature | placed_feature id | #placed_feature tag | list of (placed_feature id | PlacedFeature) (at least 1)"
  - name: "PlacedFeatureRef"
    id: "data.worldgen.feature.placement.PlacedFeatureRef"
    is: "PlacedFeature | placed_feature id"
  - name: "PositionalEnvironmentAttribute"
    id: "data.worldgen.attribute.PositionalEnvironmentAttribute"
    is: "environment_attribute id"
  - name: "PositionalEnvironmentAttributeMap"
    id: "data.worldgen.attribute.PositionalEnvironmentAttributeMap"
    is: "object"
    fields:
      - name: "[PositionalEnvironmentAttribute]"
        type: "any"
        optional: true
  - name: "PotionTypeMatch"
    id: "world.component.predicate.PotionTypeMatch"
    is: "potion id | #potion tag | list of potion ids"
  - name: "Predicate"
    id: "data.predicate.Predicate"
    is: "LootCondition"
  - name: "PredicateListRef"
    id: "data.predicate.PredicateListRef"
    is: "LootCondition | predicate id | #predicate tag | list of (predicate id | LootCondition)"
  - name: "PredicateRef"
    id: "data.predicate.PredicateRef"
    is: "Predicate | predicate id"
  - name: "ProcessorList"
    id: "data.worldgen.processor_list.ProcessorList"
    is: "Processors(…) | list of Processor"
  - name: "ProcessorListRef"
    id: "data.worldgen.processor_list.ProcessorListRef"
    is: "processor_list id | ProcessorList"
  - name: "Projection"
    id: "data.worldgen.template_pool.Projection"
    is: "one of the values below"
    values:
      - "rigid"
      - "terrain_matching"
  - name: "RGB"
    id: "util.color.RGB"
    is: "int | list of number 0..1 (exactly 3)"
  - name: "RGBA"
    id: "util.color.RGBA"
    is: "int | list of number 0..1 (exactly 4)"
  - name: "RecipeListRef"
    id: "data.recipe.RecipeListRef"
    is: "recipe id | #recipe tag | list of recipe ids"
  - name: "Rotation"
    id: "util.Rotation"
    is: "one of the values below"
    values:
      - "none"
      - "clockwise_90"
      - "180"
      - "counterclockwise_90"
  - name: "Rotation"
    id: "world.entity.display.Rotation"
    is: "AxisAngle | list of number (exactly 4)"
  - name: "RuinedPortalPlacement"
    id: "data.worldgen.structure.RuinedPortalPlacement"
    is: "one of the values below"
    values:
      - "on_land_surface"
      - "partly_buried"
      - "on_ocean_floor"
      - "in_mountain"
      - "underground"
      - "in_nether"
  - name: "ScoreProvider"
    id: "data.util.ScoreProvider"
    is: "EntityTarget | score_provider"
  - name: "SelectPropertyType"
    id: "assets.item_definition.SelectPropertyType"
    is: "one of the values below"
    values:
      - "block_state"
      - "charge_type"
      - "component"
      - "context_dimension"
      - "context_entity_type"
      - "custom_model_data"
      - "display_context"
      - "local_time"
      - "main_hand"
      - "trim_material"
  - name: "SetNameTarget"
    id: "data.loot.function.SetNameTarget"
    is: "one of the values below"
    values:
      - "item_name"
      - "custom_name"
  - name: "SkyboxType"
    id: "data.worldgen.dimension.SkyboxType"
    is: "one of the values below"
    values:
      - "none"
      - "overworld"
      - "end"
  - name: "SlotSource"
    id: "data.slot_source.SlotSource"
    is: "TypedSlotSource | slot_source id | #slot_source tag | list of (slot_source id | TypedSlotSource)"
  - name: "SoundEventRef"
    id: "data.util.SoundEventRef"
    is: "sound_event id | { sound_id: weighed_sound_event id, range?: number }"
  - name: "SpawnEquipment"
    id: "world.block.spawner.SpawnEquipment"
    is: "object"
    fields:
      - name: "loot_table"
        type: "loot_table id"
        doc: "Generates the equipment."
      - name: "slot_drop_chances"
        type: "number 0..1 | map of EquipmentSlot to number 0..1"
        doc: "Chance the mob will drop the equipment on death."
  - name: "SpawnPotential"
    id: "world.block.spawner.SpawnPotential"
    is: "WeightedEntry of SpawnerEntry"
  - name: "SpawnerData"
    id: "data.worldgen.biome.SpawnerData"
    is: "object"
    fields:
      - name: "type"
        type: "entity_type id"
      - name: "count"
        type: "IntProvider of int"
  - name: "SpawnerEntry"
    id: "world.block.spawner.SpawnerEntry"
    is: "object"
    fields:
      - name: "entity"
        type: "AnyEntity"
      - name: "custom_spawn_rules"
        type: "CustomSpawnRules"
        optional: true
      - name: "equipment"
        type: "SpawnEquipment"
        optional: true
        doc: "Rolled items from the specified loot table will be equipped to the mob that spawns."
  - name: "SpreadType"
    id: "data.worldgen.structure_set.SpreadType"
    is: "one of the values below"
    values:
      - "linear"
      - "triangular"
  - name: "StringRGB"
    id: "util.color.StringRGB"
    is: "int | string | list of number 0..1 (exactly 3)"
  - name: "StructureSetRef"
    id: "data.worldgen.structure_set.StructureSetRef"
    is: "structure_set id | StructureSet"
  - name: "TemperatureModifier"
    id: "data.worldgen.biome.TemperatureModifier"
    is: "one of the values below"
    values:
      - "none"
      - "frozen"
  - name: "TemplateEntry"
    id: "data.worldgen.feature.TemplateEntry"
    is: "object"
    fields:
      - name: "id"
        type: "structure id"
        doc: "The structure template to place."
      - name: "rotations"
        type: "list of Rotation"
        optional: true
        doc: "Rotations to choose from and apply to this template, centered around the origin.\nIf not specified, defaults to all allowed rotations."
  - name: "TerrainAdaptation"
    id: "data.worldgen.structure.TerrainAdaptation"
    is: "one of the values below"
    values:
      - "none"
      - "beard_thin"
      - "beard_box"
      - "bury"
      - "encapsulate"
  - name: "Text"
    id: "util.text.Text"
    is: "string | TextObject | list of Text (at least 1)"
  - name: "TextColor"
    id: "util.text.TextColor"
    is: "one of the values below"
    values:
      - "black"
      - "dark_blue"
      - "dark_green"
      - "dark_aqua"
      - "dark_red"
      - "dark_purple"
      - "gold"
      - "gray"
      - "dark_gray"
      - "blue"
      - "green"
      - "aqua"
      - "red"
      - "light_purple"
      - "yellow"
      - "white"
  - name: "TextObject"
    id: "util.text.TextObject"
    is: "object"
  - name: "TilingMode"
    id: "data.worldgen.density_function.TilingMode"
    is: "one of the values below"
    values:
      - "clamp_to_edge"
      - "repeat"
      - "mirrored_repeat"
  - name: "Transformation"
    id: "world.entity.display.Transformation"
    is: "{ translation: list of number (exactly 3), left_rotation: Rotation, right_rotation: Rotation, scale: list of number (exactly 3) } | list of number (exactly 16)"
  - name: "UniformValueType"
    id: "assets.shader.post.UniformValueType"
    is: "one of the values below"
    values:
      - "int"
      - "ivec3"
      - "float"
      - "vec2"
      - "vec3"
      - "vec4"
      - "matrix4x4"
  - name: "VerticalAnchor"
    id: "data.worldgen.VerticalAnchor"
    is: "Absolute(…) | AboveBottom(…) | BelowTop(…) | RelativeToSeaLevel(…)"
  - name: "VerticalDirection"
    id: "util.direction.VerticalDirection"
    is: "one of the values below"
    values:
      - "down"
      - "up"
  - name: "Weather"
    id: "data.gametest.test_environment.Weather"
    is: "one of the values below"
    values:
      - "clear"
      - "rain"
      - "thunder"
  - name: "WeightedList"
    id: "util.WeightedList"
    is: "list of WeightedEntry of T"
  - name: "ZombieNautilusModelType"
    id: "data.variants.zombie_nautilus.ZombieNautilusModelType"
    is: "one of the values below"
    values:
      - "normal"
      - "warm"
lint_rules:
  - id: "accidental-markup"
    severity: "hint"
    doc: "A style mark in text that is never closed, such as the `*` of \"5 * 3\", so it is written as the character itself. The fix puts a backslash before it, which says so."
  - id: "book-page-overflow"
    severity: "warning"
    doc: "A Book page with more text than the book screen shows: 14 lines of about 19 characters. The game cuts the rest off. Widths are measured with the vanilla font, so text outside ASCII is a close guess."
  - id: "constant-expression"
    severity: "hint"
    doc: "An arithmetic expression of number literals can be written as its value."
  - id: "custom-item-as-base"
    severity: "hint"
    doc: "A Book used where the game takes a plain item id, such as a recipe ingredient or an item tag. It stands for written_book there, so any written book matches."
  - id: "deprecated"
    severity: "warning"
    doc: "A use of a declaration whose doc comment has a `@deprecated` tag."
  - id: "external-asset"
    severity: "warning"
    doc: "An id of a texture, sound or structure in the project's namespace that no Texture, Sound or StructureFile call in the project provides. The pack still loads, but the file must come from another pack."
  - id: "jigsaw-facing"
    severity: "warning"
    doc: "A jigsaw block that can never join its target: every jigsaw block with its target name in its pool faces a way it cannot meet. The game turns pieces only about the y axis, so a block facing up joins only one facing down, and a sideways block only a sideways one."
  - id: "jigsaw-fit"
    severity: "warning"
    doc: "An internal jigsaw block (the block in front of it is inside its own piece, such as an arch mount on a road, or a jigsaw inset by a block by mistake) whose pool has pieces that stick out of the piece however they are turned. The game only places a piece joined at an internal jigsaw wholly inside its parent, so those pieces are never placed there. Height is not checked for terrain_matching pieces."
  - id: "jigsaw-overlap"
    severity: "info"
    doc: "A jigsaw block that can never grow when its piece joins a given parent: every piece its pool and the pool's fallback could place there overlaps the parent or the piece itself, however it is turned, and the game never places overlapping pieces. A junction narrower than the roads around it is the usual cause. Only certain cases are reported: every piece involved is a rigid project structure file with a known size and facing, and no pool involved has an empty or feature element."
  - id: "jigsaw-unknown-name"
    severity: "warning"
    doc: "A jigsaw block in a structure file that StructureFile(\"...\") includes whose name or target is in a namespace with JigsawHole declarations, but is not one of them: most likely a typo made in the game's jigsaw screen. The quick fix declares it. Projects that declare no JigsawHole in a namespace are not checked there."
  - id: "jigsaw-unknown-pool"
    severity: "warning"
    doc: "A jigsaw block in a structure file that StructureFile(\"...\") includes draws from a pool in the project's namespace that no TemplatePool declares. The game skips the jigsaw, so the structure stops growing there. The quick fix declares the pool."
  - id: "jigsaw-unreachable-target"
    severity: "warning"
    doc: "A jigsaw block whose target no piece of its pool can join: none of the pool's structure files has a jigsaw block with that name, or the pool has no pieces. Only pools whose pieces are all the project's own structure files are checked."
  - id: "overrides-vanilla"
    severity: "info"
    doc: "A declaration in the minecraft namespace replaces the vanilla resource with the same id."
  - id: "quoted-name"
    severity: "hint"
    doc: "An id or enum name in quotes can be written bare: `minecraft:stone` or `stone` rather than \"minecraft:stone\"."
  - id: "redundant-namespace"
    severity: "hint"
    doc: "A `minecraft:` prefix that can be dropped: `stone` means `minecraft:stone` unless the project declares its own `stone`."
  - id: "unused"
    severity: "hint"
    doc: "A worldgen piece, predicate or item modifier that nothing in the project references, so the game never uses it, or a const, Template, Type or Blueprint that nothing names. A TemplatePool counts as used when a jigsaw block in one of the project's structure files draws from it."
  - id: "unused-asset"
    severity: "info"
    doc: "A .png, .ogg or .nbt file in the project that no Texture, Sound or StructureFile call and no `icon` uses, so the packs leave it out. It is reported on the file itself (in VS Code's Problems panel, by `mms check`, and in the web editor's asset list), and not while the project has errors."
  - id: "use-shorthand"
    severity: "hint"
    doc: "An object literal that has a shorter MMS form: an item entry as its id, `1..3` for a uniform provider or bounds, `diamond * 4` for a stack, a trigger call for a criterion, and `&&`, `||` and `!` for conditions."