{
  "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.random_search_and_dig",
  "additionalProperties": false,
  "description": "Allows this entity to locate a random target block that it can path find to. Once found, the entity will move towards it and dig up an item.",
  "type": "object",
  "title": "Random Look Around",
  "required": [],
  "properties": {
    "priority": { "$ref": "types/priority.json" },
    "speed_multiplier": { "$ref": "types/speed_multiplier.json" },

    "cooldown_range": {
      "title": "Cooldown Range",
      "default": [0.0, 0.0],
      "description": "Goal cooldown range in seconds.",
      "anyOf": [
        {
          "$ref": "../../../../general/vectors/number2.json"
        },
        {
          "type": "number", 
          "minimum": 0
        }
      ]
    },
    "digging_duration_range": {
      "title": "Digging Duration Range",

      "$ref": "../../../../general/vectors/number2.json",
      "default": [0.0, 0.0],
      "description": "Digging duration in seconds."
    },
    "find_valid_position_retries": {
      "title": "Find Valid Position Retries",
      "type": "number",
      "default": 0.0,
      "description": "Amount of retries to find a valid target position within search range."
    },
    "goal_radius": {
      "title": "Goal Radius",
      "type": "number",
      "default": 1500000,
      "description": "Distance in blocks within the entity to considers it has reached it's target position."
    },
    "item_table": {
      "title": "Item Table",
      "type": "string",
      "description": "File path relative to the behavior pack root for items to spawn list (loot table format)."
    },
    "on_digging_start": {
      "title": "On Digging Start",
      "$ref": "../types/trigger.json",
      "description": "Event to run when the goal ends searching has begins digging."
    },
    "on_fail_during_digging": {
      "title": "On Fail During Digging",
      "$ref": "../types/trigger.json",
      "description": "Event to run when the goal failed while in digging state."
    },
    "on_fail_during_searching": {
      "title": "On Fail During Searching",
      "$ref": "../types/trigger.json",
      "description": "Event to run when the goal failed while in searching state."
    },
    "on_item_found": {
      "title": "On Item Found",
      "$ref": "../types/trigger.json",
      "description": "Event to run when the goal find a item."
    },
    "on_searching_start": {
      "title": "On Searching Start",
      "$ref": "../types/trigger.json",
      "description": "Event to run when the goal starts searching."
    },
    "on_success": {
      "title": "On Success",
      "$ref": "../types/trigger.json",
      "description": "Event to run when searching and digging has ended."
    },
    "search_range_xz": {
      "title": "Search Range XZ",
      "type": "number",
      "default": 0.0,
      "description": "Width and length of the volume around the entity used to find a valid target position"
    },
    "search_range_y": {
      "title": "Search Range Y",
      "type": "number",
      "default": 0.0,
      "description": "Height of the volume around the entity used to find a valid target position"
    },
    "spawn_item_after_seconds": {
      "title": "Spawn Item After Seconds",
      "type": "number",
      "default": 0.0,
      "description": "Digging duration before spawning item in seconds."
    },
    "spawn_item_pos_offset": {
      "title": "Spawn Item Pos Offset",
      "type": "number",
      "default": 0.0,
      "description": "Distance to offset the item's spawn location in the direction the mob is facing."
    },
    "target_blocks": {
      "title": "Target Blocks",
      "type": "array",
      "description": "List of target block types the goal will look to dig on. Overrides the default list.",
      "items": {
        "$ref": "../../../../general/block/reference.json"
      }
    },
    "target_dig_position_offset": {
      "title": "Target Dig Position Offset",
      "type": "number",
      "default": 2250000,
      "description": "Dig target position offset from the feet position of the mob in their facing direction."
    }
  }
}
