{
  "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.jump_around_target",
  "type": "object",
  "title": "Jump Around Target",
  "additionalProperties": false,
  "description": "Allows an entity to jump around a target.",
  "required": [ ],
  "properties": {
    "priority": { "$ref": "./types/priority.json" },
    "check_collision": {
      "title": "Check Collision",
      "type": "boolean",
      "default": false,
      "description": "Enables collision checks when calculating the jump. Setting check_collision to true may affect performance and should be used with care."
    },
    "entity_bounding_box_scale": {
      "title": "Entity Bounding Box Scale",
      "default": 0.7,
      "description": "Scaling temporarily applied to the entity's AABB bounds when jumping. A smaller bounding box reduces the risk of collisions during the jump. When check_collision is true it also increases the chance of being able to jump when close to obstacles."
    },
    "jump_angles": {
      "title": "Jump Angles",
      "type": "array",
      "default": [ 40.0, 55.0, 60.0, 75.0, 80.0 ],
      "items": {
        "type": "number"
      },
      "description": "The jump angles in float degrees that are allowed when performing the jump. The order in which the angles are chosen is randomized."
    },
    "jump_cooldown_duration": {
      "title": "Jump Cooldown Duration",
      "type": "number",
      "default": 0.5,
      "description": "The time in seconds to spend in cooldown before this goal can be used again."
    },
    "jump_cooldown_when_hurt_duration": {
      "title": "Jump Cooldown When Hurt Duration",
      "type": "number",
      "default": 0.1,
      "description": "The time in seconds to spend in cooldown after being hurt before this goal can be used again."
    },
    "landing_distance_from_target": {
      "title": "Vertical Search Distance",
      "description": "The range deciding how close to and how far away from the target the landing position can be when jumping.",
      "$ref": "../../../../general/vectors/number2.json"
    },
    "landing_position_spread_degrees": {
      "title": "Landing Position Spread Degrees",
      "type": "integer",
      "default": 90,
      "minimum": 0,
      "maximum": 360,
      "description": "This angle (in degrees) is used for controlling the spread when picking a landing position behind the target. A zero spread angle means the landing position will be straight behind the target with no variance. A 90 degree spread angle means the landing position can be up to 45 degrees to the left and to the right of the position straight behind the target's view direction."
    },
    "last_hurt_duration": {
      "title": "Last Hurt Duration",
      "type": "number",
      "default": 2.0,
      "description": "If the entity was hurt within these last seconds, the jump_cooldown_when_hurt_duration will be used instead of jump_cooldown_duration."
    },
    "line_of_sight_obstruction_height_ignore": {
      "title": "Line Of Sight Obstruction Height Ignore",
      "type": "integer",
      "default": 4,
      "description": "If the entity's line of sight towards its target is obstructed by an obstacle with a height below this number, the obstacle will be ignored, and the goal will try to find a valid landing position."
    },
    "max_jump_velocity": {
      "title": "Max Jump Velocity",
      "type": "number",
      "default": 1.4,
      "description": "Maximum velocity a jump can be performed at."
    },
    "prepare_jump_duration": {
      "title": "Prepare Jump Duration",
      "type": "number",
      "default": 0.5,
      "description": "The time in seconds to spend preparing for the jump."
    },
    "required_vertical_space": {
      "title": "Require Vertical Space",
      "type": "integer",
      "default": 4,
      "description": "The number of blocks above the entity's head that has to be air for this goal to be usable."
    },
    "snap_to_surface_block_range": {
      "title": "Snap To Surface Block Range",
      "type": "integer",
      "default": 10,
      "description": "The number of blocks above and below from the jump target position that will be checked to find a surface to land on."
    },
    "valid_distance_to_target": {
      "title": "Valid Distance To Target",
      "description": "Target needs to be within this range for the jump to happen.",
      "$ref": "../../../../general/vectors/number2.json"
    },
    "filters": {
      "title": "Filters",
      "description": "Conditions that need to be met for the behavior to start.",
      "$ref": "../../filters/filters.json"
    }
  }
}
