{
  "$id": "blockception.minecraft.behavior.volumes.1.17.0",
  "type": "object",
  "title": "Spawn Rules 1.17.0",
  "description": "UNDOCUMENTED.",
  "$comment": "UNDOCUMENTED",
  "additionalProperties": false,
  "required": ["format_version", "minecraft:volume"],
  "properties": {
    "format_version": {
      "const": "1.17.0",
      "description": "Specifies the version of the game this entity was made in. Minimum supported version is 1.17.0. Current supported version is 1.17.0.",
      "title": "Format Version"
    },
    "minecraft:volume": {
      "type": "object",
      "title": "Spawn Rules",
      "description": "UNDOCUMENTED.",
      "$comment": "UNDOCUMENTED",
      "additionalProperties": false,
      "properties": {
        "description": {
          "type": "object",
          "title": "Description",
          "description": "The description contains a single `identifier` string.",
          "additionalProperties": false,
          "properties": {
            "identifier": {
              "title": "Identifier",
              "description": "The unique identifier for this volume. It must be of the form `namespace:name', where namespace cannot be `minecraft`.",
              "$ref": "../../../general/volume/identifier.json"
            }
          }
        },
        "components": {
          "type": "object",
          "title": "Components",
          "description": "UNDOCUMENTED.",
          "$comment": "UNDOCUMENTED",
          "additionalProperties": false,
          "properties": {
            "minecraft:bounds": {
              "title": "Bounds",
              "description": "Component that defines a minimum and maximum block position for a bounding box and which world dimension the bounding box is in. Every volume must have a bounds component.",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "dimension": {
                  "type": "string",
                  "description": "The name of the dimension the bounding box will exist in: one of `overworld', `nether` or `the end`.",
                  "title": "Dimension",
                  "enum": ["overworld", "nether", "the end"]
                },
                "max": {
                  "type": "array",
                  "description": "The maximum block position of the bounding box.",
                  "title": "Maximum",
                  "items": [
                    { "title": "X", "type": "number" },
                    { "title": "Y", "type": "number" },
                    { "title": "Z", "type": "number" }
                  ]
                },
                "min": {
                  "type": "array",
                  "description": "The minimum block position of the bounding box.",
                  "title": "Minimum",
                  "items": [
                    { "title": "X", "type": "number" },
                    { "title": "Y", "type": "number" },
                    { "title": "Z", "type": "number" }
                  ]
                }
              }
            },
            "minecraft:fog": {
              "title": "Fog",
              "description": "Displays the given fog whenever a player enters the volume. Each volume can only have one fog attached.",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "fog_identifier": {
                  "type": "string",
                  "default": "",
                  "description": "The identifier of a fog definition. Note that you will not receive any feedback if the definition does not exist.",
                  "title": "Fog Identifier"
                },
                "priority": {
                  "type": "integer",
                  "default": 2147483647,
                  "description": "The priority for this fog definition setting. Smaller numbers have higher priority. Fogs with equal priority will be combined together.",
                  "title": "Priority"
                }
              }
            },
            "minecraft:on_actor_enter": {
              "title": "On Actor Enter",
              "description": "Component that defines what happens when an actor enters the volume. Can contain multiple json objects.",
              "type": "object",
              "additionalProperties": false,
              "required": ["on_enter"],
              "properties": {
                "on_enter": {
                  "title": "On Enter",
                  "description": "Required array that contains all the triggers.",
                  "type": "array",
                  "items": {
                    "title": "On Enter Trigger",
                    "description": "Trigger.",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "condition": {
                        "title": "Condition",
                        "description": "Molang expression to test against the actor. The given event will be triggered if the expression evaluates to true.",
                        "type": "string",
                        "$ref": "../../../molang/string.json"
                      },
                      "event": {
                        "title": "Event",
                        "description": "Name of the event to run.",
                        "type": "string"
                      },
                      "target": {
                        "title": "Target",
                        "description": "One of `self` or `other`. Self means the event is attached to the volume. Other means the event is attached to the actor.",
                        "type": "string",
                        "enum": ["self", "other"]
                      }
                    }
                  }
                }
              }
            },
            "minecraft:on_actor_leave": {
              "title": "On Actor Leave",
              "description": "Component that defines what happens when an actor leaves the volume.",
              "type": "object",
              "additionalProperties": false,
              "required": ["on_enter"],
              "properties": {
                "on_enter": {
                  "title": "On Enter",
                  "description": "Required array that contains all the triggers.",
                  "type": "array",
                  "items": {
                    "title": "On Enter Trigger",
                    "description": "Trigger.",
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "condition": {
                        "title": "Condition",
                        "description": "Molang expression to test against the actor. The given event will be triggered if the expression evaluates to true.",
                        "type": "string",
                        "$ref": "../../../molang/string.json"
                      },
                      "event": {
                        "title": "Event",
                        "description": "Name of the event to run.",
                        "type": "string"
                      },
                      "target": {
                        "title": "Target",
                        "description": "One of `self` or `other`. Self means the event is attached to the volume. Other means the event is attached to the actor.",
                        "type": "string",
                        "enum": ["self", "other"]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
