{
  "$id": "blockception.minecraft.behavior.feature_rules.1.13.0",
  "type": "object",
  "title": "Feature Rules 1.13.0",
  "description": "Each feature rule controls exactly one feature and serves as the root of a chain of feature data.",
  "additionalProperties": false,
  "required": ["format_version", "minecraft:feature_rules"],
  "minProperties": 2,
  "maxProperties": 2,
  "definitions": {
    "coord_dist": {
      "title": "",
      "description": "UNDOCUMENTED",
      "$comment": "UNDOCUMENTED",
      "oneOf": [
        {
          "$ref": "../../../molang/number.json",
          "description": "Expression for the coordinate (evaluated each iteration).  Mutually exclusive with random distribution object below."
        },
        {
          "type": "object",
          "description": "Distribution for the coordinate (evaluated each iteration).  Mutually exclusive with Molang expression above.",
          "additionalProperties": false,
          "examples": [{ "numerator": 1, "denominator": 1 }],
          "properties": {
            "numerator": {
              "title": "Numerator",
              "description": "UNDOCUMENTED",
              "$comment": "UNDOCUMENTED",
              "type": "number",
              "minimum": 1
            },
            "denominator": {
              "title": "Denominator",
              "description": "UNDOCUMENTED",
              "$comment": "UNDOCUMENTED",
              "type": "number",
              "minimum": 1
            }
          }
        }
      ]
    }
  },
  "properties": {
    "format_version": {
      "const": "1.13.0",
      "description": "Specifies the version of the game this entity was made in. Minimum supported version is 1.13.0. Current supported version is 1.13.0.",
      "title": "Format Version"
    },
    "minecraft:feature_rules": {
      "title": "Feature rules",
      "description": "Each feature rule controls exactly one feature and serves as the root of a chain of feature data.",
      "type": "object",
      "additionalProperties": false,
      "required": ["description", "conditions"],
      "properties": {
        "description": {
          "title": "Description",
          "description": "UNDOCUMENTED",
          "$comment": "UNDOCUMENTED",
          "type": "object",
          "additionalProperties": false,
          "required": ["identifier", "places_feature"],
          "properties": {
            "identifier": {
              "title": "Identifier",
              "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.",
              "type": "string",
              "$ref": "../../../general/feature/identifier.json"
            },
            "places_feature": {
              "title": "Places Feature",
              "description": "Named reference to the feature controlled by this rule.",
              "type": "string"
            }
          }
        },
        "conditions": {
          "title": "Conditions",
          "description": "Parameters to control where and when the feature will be placed.",
          "type": "object",
          "additionalProperties": false,
          "required": ["placement_pass"],
          "properties": {
            "placement_pass": {
              "title": "Placement pass",
              "description": "When the feature should be placed relative to others. Earlier passes in the list are guaranteed to occur before later passes. Order is not guaranteed within each pass.",
              "type": "string",
              "enum": [
                "pregeneration_pass",
                "first_pass",
                "before_underground_pass",
                "underground_pass",
                "after_underground_pass",
                "before_surface_pass",
                "surface_pass",
                "after_surface_pass",
                "before_sky_pass",
                "sky_pass",
                "after_sky_pass",
                "final_pass"
              ]
            },
            "minecraft:biome_filter": {
              "title": "Placement pass",
              "description": "List of filter tests to determine which biomes this rule will attach to.",
              "$ref": "../../entities/filters/filters.json"
            }
          }
        },
        "distribution": {
          "title": "Distribution",
          "description": "Parameters controlling the initial scatter of the feature.",
          "type": "object",
          "additionalProperties": false,
          "required": ["iterations"],
          "properties": {
            "coordinate_eval_order": {
              "title": "Coordinate Eval Order",
              "description": "The order in which coordinates will be evaluated. Should be used when a coordinate depends on another. If omitted, defaults to `xzy`.",
              "type": "string",
              "enum": ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"]
            },
            "iterations": {
              "title": "Iterations",
              "description": "Number of scattered positions to generate",
              "$ref": "../../../molang/number.json"
            },
            "scatter_chance": {
              "title": "Scatter Chance",
              "oneOf": [
                {
                  "$ref": "../../../molang/number.json",
                  "description": "Probability (0-100] that this scatter will occur.  Not evaluated each iteration; either no iterations will run, or all will."
                },
                {
                  "type": "object",
                  "description": "Probability numerator / denominator that this scatter will occur.  Not evaluated each iteration; either no iterations will run, or all will.",
                  "additionalProperties": false,
                  "properties": {
                    "numerator": {
                      "title": "Numerator",
                      "description": "UNDOCUMENTED",
                      "$comment": "UNDOCUMENTED",
                      "type": "number",
                      "minimum": 1
                    },
                    "denominator": {
                      "title": "Denominator",
                      "description": "UNDOCUMENTED",
                      "$comment": "UNDOCUMENTED",
                      "type": "number",
                      "minimum": 1
                    }
                  }
                }
              ]
            },
            "x": { "title": "X", "$ref": "#/definitions/coord_dist" },
            "z": { "title": "Y", "$ref": "#/definitions/coord_dist" },
            "y": { "title": "Z", "$ref": "#/definitions/coord_dist" }
          }
        }
      }
    }
  }
}
