{
  "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.move_around_target",
  "type": "object",
  "title": "Move Around Target",
  "additionalProperties": false,
  "description": "Allows an entity to move around a target. If the entity is too close (i.e. closer than destination range min and height difference limit) it will try to move away from its target. If the entity is too far away from its target it will try to move closer to a random position within the destination range. A randomized amount of those positions will be behind the target, and the spread can be tweaked with 'destination_pos_search_spread_degrees'.",
  "required": [],
  "properties": {
    "priority": { "$ref": "./types/priority.json" },
    "destination_pos_search_spread_degrees": {
      "title": "Desitnation Pos Search Spread Degrees",
      "type": "number",
      "default": 90.0,
      "minimum": 0,
      "maximum": 360,
      "description": "This angle (in degrees) is used for controlling the spread when picking a destination position behind the target. A zero spread angle means the destination position will be straight behind the target with no variance. A 90 degree spread angle means the destination position can be up to 45 degrees to the left and to the right of the position straight behind the target's view direction."
    },
    "destination_position_range": {
      "title": "Desitnation Position Range",
      "default": [4.0, 8.0],
      "description": "The range of distances from the target entity within which the goal should look for a position to move the owner entity to.",
      "$ref": "../../../../general/vectors/number2.json"
    },
    "height_difference_limit": {
      "title": "Height Difference Limit",
      "type": "number",
      "default": 10.0,
      "description": "Distance in height (in blocks) between the owner entity and the target has to be less than this value when owner checks if it is too close and should move away from the target. This value needs to be bigger than zero for the move away logic to trigger."
    },
    "horizontal_search_distance": {
      "title": "Horizontal Search Distance",
      "type": "integer",
      "default": 5,
      "description": "Horizontal search distance (in blocks) when searching for a position to move away from target."
    },
    "movement_speed": {
      "title": "Movement Speed",
      "type": "number",
      "default": 0.6,
      "description": "The speed with which the entity should move to its target position."
    },
    "vertical_search_distance": {
      "title": "Vertical Search Distance",
      "type": "integer",
      "default": 5,
      "description": "Number of ticks needed to complete a stay at the block."
    },
    "filters": {
      "title": "Filters",
      "description": "Conditions that need to be met for the behavior to start.",
      "$ref": "../../filters/filters.json"
    }
  }
}
