// (c) 57Digital Ltd, All Rights Reserved
// @buildsys/entityinheritance chain: mnp_ci:entity ~> mnp_ci:animal_properties ~> mnp_ci:animal_whale
{
  "format_version": "1.16.0",
  "minecraft:entity": {
    "description": {
      "identifier": "mnp_ci:animal_whale",
      "properties": {
        "mnp_ci:is_on_lure": {
          "type": "bool",
          "client_sync": true,
          "default": false
        },
        "mnp_ci:is_caught": {
          "type": "bool",
          "client_sync": true,
          "default": false
        },
        "mnp_ci:length": {
          "type": "float",
          "client_sync": true,
          "default": 0.01,
          "range": [
            0.0,
            1000.0
          ]
        },
        "mnp_ci:weight": {
          "type": "float",
          "client_sync": true,
          "default": 0.01,
          "range": [
            0.0,
            1000.0
          ]
        },
        "mnp_ci:scale": {
          "type": "float",
          "client_sync": true,
          "default": 0.5,
          "range": [
            0.0,
            1.0
          ]
        },
        "mnp_ci:whale_spout_state": {
          "type": "enum",
          "values": [
            "can_whale_spout",
            "whale_spout",
            "cooldown"
          ],
          "default": "cooldown",
          "client_sync": true
        },
        "mnp_ci:feeding_state": {
          "type": "enum",
          "values": [
            "can_feed",
            "feeding"
          ],
          "default": "can_feed",
          "client_sync": true
        }
      },
      "is_spawnable": true,
      "is_summonable": true,
      "is_experimental": false,
      "scripts": {
        "animate": [
          "controller"
        ]
      },
      "animations": {
        "controller": "controller.animation.mnp_ci.whale"
      }
    },
    "component_groups": {
      "fs:instant_despawn": {
        "minecraft:instant_despawn": {
          "remove_child_entities": false
        }
      },
      "mnp_ci:add_physics": {
        "minecraft:physics": {
          "has_collision": true,
          "has_gravity": true
        }
      },
      "mnp_ci:remove_physics": {
        "minecraft:physics": {
          "has_collision": false,
          "has_gravity": false
        }
      },
      "mnp_ci:add_breathable": {
        "minecraft:breathable": {
          "total_supply": 15,
          "suffocate_time": 0,
          "breathes_air": false,
          "breathes_water": true
        }
      },
      "mnp_ci:remove_breathable": {
        "minecraft:breathable": {
          "total_supply": 15,
          "suffocate_time": 0,
          "breathes_air": true,
          "breathes_water": true
        }
      },
      "mnp_ci:persistent": {
        "minecraft:persistent": {}
      },
      "mnp_ci:normal_distance_despawn": {
        "minecraft:despawn": {
          "despawn_from_distance": {
            "min_distance": 32,
            "max_distance": 40
          }
        }
      },
      "mnp_ci:long_distance_despawn": {
        "minecraft:despawn": {
          "despawn_from_chance": false,
          "despawn_from_inactivity": false,
          "despawn_from_simulation_edge": false,
          "despawn_from_distance": {
            "min_distance": 64,
            "max_distance": 64
          }
        }
      },
      "mnp_ci:set_scale_50": {
        "minecraft:scale": {
          "value": 0.5
        }
      },
      "mnp_ci:set_scale_51": {
        "minecraft:scale": {
          "value": 0.51
        }
      },
      "mnp_ci:set_scale_52": {
        "minecraft:scale": {
          "value": 0.52
        }
      },
      "mnp_ci:set_scale_53": {
        "minecraft:scale": {
          "value": 0.53
        }
      },
      "mnp_ci:set_scale_54": {
        "minecraft:scale": {
          "value": 0.54
        }
      },
      "mnp_ci:set_scale_55": {
        "minecraft:scale": {
          "value": 0.55
        }
      },
      "mnp_ci:set_scale_56": {
        "minecraft:scale": {
          "value": 0.56
        }
      },
      "mnp_ci:set_scale_57": {
        "minecraft:scale": {
          "value": 0.57
        }
      },
      "mnp_ci:set_scale_58": {
        "minecraft:scale": {
          "value": 0.58
        }
      },
      "mnp_ci:set_scale_59": {
        "minecraft:scale": {
          "value": 0.59
        }
      },
      "mnp_ci:set_scale_60": {
        "minecraft:scale": {
          "value": 0.6
        }
      },
      "mnp_ci:set_scale_61": {
        "minecraft:scale": {
          "value": 0.61
        }
      },
      "mnp_ci:set_scale_62": {
        "minecraft:scale": {
          "value": 0.62
        }
      },
      "mnp_ci:set_scale_63": {
        "minecraft:scale": {
          "value": 0.63
        }
      },
      "mnp_ci:set_scale_64": {
        "minecraft:scale": {
          "value": 0.64
        }
      },
      "mnp_ci:set_scale_65": {
        "minecraft:scale": {
          "value": 0.65
        }
      },
      "mnp_ci:set_scale_66": {
        "minecraft:scale": {
          "value": 0.66
        }
      },
      "mnp_ci:set_scale_67": {
        "minecraft:scale": {
          "value": 0.67
        }
      },
      "mnp_ci:set_scale_68": {
        "minecraft:scale": {
          "value": 0.68
        }
      },
      "mnp_ci:set_scale_69": {
        "minecraft:scale": {
          "value": 0.69
        }
      },
      "mnp_ci:set_scale_70": {
        "minecraft:scale": {
          "value": 0.7
        }
      },
      "mnp_ci:set_scale_71": {
        "minecraft:scale": {
          "value": 0.71
        }
      },
      "mnp_ci:set_scale_72": {
        "minecraft:scale": {
          "value": 0.72
        }
      },
      "mnp_ci:set_scale_73": {
        "minecraft:scale": {
          "value": 0.73
        }
      },
      "mnp_ci:set_scale_74": {
        "minecraft:scale": {
          "value": 0.74
        }
      },
      "mnp_ci:set_scale_75": {
        "minecraft:scale": {
          "value": 0.75
        }
      },
      "mnp_ci:set_scale_76": {
        "minecraft:scale": {
          "value": 0.76
        }
      },
      "mnp_ci:set_scale_77": {
        "minecraft:scale": {
          "value": 0.77
        }
      },
      "mnp_ci:set_scale_78": {
        "minecraft:scale": {
          "value": 0.78
        }
      },
      "mnp_ci:set_scale_79": {
        "minecraft:scale": {
          "value": 0.79
        }
      },
      "mnp_ci:set_scale_80": {
        "minecraft:scale": {
          "value": 0.8
        }
      },
      "mnp_ci:set_scale_81": {
        "minecraft:scale": {
          "value": 0.81
        }
      },
      "mnp_ci:set_scale_82": {
        "minecraft:scale": {
          "value": 0.82
        }
      },
      "mnp_ci:set_scale_83": {
        "minecraft:scale": {
          "value": 0.83
        }
      },
      "mnp_ci:set_scale_84": {
        "minecraft:scale": {
          "value": 0.84
        }
      },
      "mnp_ci:set_scale_85": {
        "minecraft:scale": {
          "value": 0.85
        }
      },
      "mnp_ci:set_scale_86": {
        "minecraft:scale": {
          "value": 0.86
        }
      },
      "mnp_ci:set_scale_87": {
        "minecraft:scale": {
          "value": 0.87
        }
      },
      "mnp_ci:set_scale_88": {
        "minecraft:scale": {
          "value": 0.88
        }
      },
      "mnp_ci:set_scale_89": {
        "minecraft:scale": {
          "value": 0.89
        }
      },
      "mnp_ci:set_scale_90": {
        "minecraft:scale": {
          "value": 0.9
        }
      },
      "mnp_ci:set_scale_91": {
        "minecraft:scale": {
          "value": 0.91
        }
      },
      "mnp_ci:set_scale_92": {
        "minecraft:scale": {
          "value": 0.92
        }
      },
      "mnp_ci:set_scale_93": {
        "minecraft:scale": {
          "value": 0.93
        }
      },
      "mnp_ci:set_scale_94": {
        "minecraft:scale": {
          "value": 0.94
        }
      },
      "mnp_ci:set_scale_95": {
        "minecraft:scale": {
          "value": 0.95
        }
      },
      "mnp_ci:set_scale_96": {
        "minecraft:scale": {
          "value": 0.96
        }
      },
      "mnp_ci:set_scale_97": {
        "minecraft:scale": {
          "value": 0.97
        }
      },
      "mnp_ci:set_scale_98": {
        "minecraft:scale": {
          "value": 0.98
        }
      },
      "mnp_ci:set_scale_99": {
        "minecraft:scale": {
          "value": 0.99
        }
      },
      "mnp_ci:set_scale_100": {
        "minecraft:scale": {
          "value": 1
        }
      },
      "mnp_ci:swim_straight": {
        "minecraft:behavior.random_swim": {
          "priority": 2,
          "speed_multiplier": 0.9,
          "xz_dist": 12,
          "y_dist": 0,
          "interval": 1
        }
      },
      "mnp_ci:random_swim": {
        "minecraft:behavior.random_swim": {
          "priority": 4,
          "speed_multiplier": 1,
          "xz_dist": 20,
          "y_dist": 5,
          "interval": 3
        }
      },
      "mnp_ci:whale_spout_cooldown": {
        "minecraft:behavior.timer_flag_1": {
          "priority": 0,
          "cooldown_range": 0,
          "duration_range": [
            10,
            10
          ],
          "on_end": {
            "event": "mnp_ci:whale_spout_end_cooldown",
            "target": "self"
          }
        }
      },
      "mnp_ci:whale_spout": {
        "minecraft:behavior.timer_flag_2": {
          "priority": 0,
          "cooldown_range": 0,
          "duration_range": [
            4,
            4
          ],
          "on_end": {
            "event": "mnp_ci:whale_spout_start_cooldown",
            "target": "self"
          }
        }
      },
      "mnp_ci:feeding_timer": {
        "minecraft:timer": {
          "looping": true,
          "randomInterval": true,
          "time": [
            80,
            400
          ],
          "time_down_event": {
            "event": "mnp_ci:feeding_attempt"
          }
        }
      },
      "mnp_ci:feeding": {
        "minecraft:behavior.timer_flag_3": {
          "priority": 0,
          "cooldown_range": 0,
          "duration_range": 6,
          "on_end": {
            "event": "mnp_ci:feeding_end",
            "target": "self"
          }
        }
      },
      "mnp_ci:quick_breach": {
        "minecraft:breathable": {
          "total_supply": 20,
          "suffocate_time": 0,
          "breathes_air": true,
          "breathes_water": false,
          "generates_bubbles": false
        }
      },
      "mnp_ci:breathable": {
        "minecraft:breathable": {
          "total_supply": 500,
          "suffocate_time": 0,
          "breathes_air": true,
          "breathes_water": false,
          "generates_bubbles": false
        }
      }
    },
    "components": {
      "minecraft:is_hidden_when_invisible": {},
      "minecraft:experience_reward": {
        "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
      },
      "minecraft:type_family": {
        "family": [
          "aquatic",
          "whale",
          "mnp_ci"
        ]
      },
      "minecraft:collision_box": {
        "width": 1.4,
        "height": 1.3
      },
      "minecraft:custom_hit_test": {
        "hitboxes": [
          {
            "width": 2.1,
            "height": 2,
            "pivot": [
              0,
              1,
              0
            ]
          }
        ]
      },
      "minecraft:health": {
        "value": 250,
        "max": 250
      },
      "minecraft:hurt_on_condition": {
        "damage_conditions": [
          {
            "filters": {
              "test": "in_lava",
              "subject": "self",
              "operator": "==",
              "value": true
            },
            "cause": "lava",
            "damage_per_tick": 4
          }
        ]
      },
      "minecraft:breathable": {
        "total_supply": 500,
        "suffocate_time": 0,
        "breathes_air": true,
        "breathes_water": false,
        "generates_bubbles": false
      },
      "minecraft:movement": {
        "value": 0.18
      },
      "minecraft:underwater_movement": {
        "value": 0.18
      },
      "minecraft:navigation.generic": {
        "is_amphibious": false,
        "can_path_over_water": false,
        "can_swim": true,
        "can_walk": false,
        "can_breach": true,
        "can_sink": false
      },
      "minecraft:environment_sensor": {
        "triggers": [
          {
            "filters": {
              "all_of": [
                {
                  "test": "enum_property",
                  "domain": "mnp_ci:feeding_state",
                  "value": "feeding"
                },
                {
                  "any_of": [
                    {
                      "test": "in_water",
                      "value": false
                    },
                    {
                      "test": "actor_health",
                      "value": 0
                    }
                  ]
                }
              ]
            },
            "event": "mnp_ci:feeding_end"
          }
        ]
      },
      "minecraft:damage_sensor": {
        "triggers": {
          "cause": "all",
          "on_damage": {
            "event": "mnp_ci:feeding_end"
          }
        }
      },
      "minecraft:movement.sway": {
        "max_turn": 20,
        "sway_amplitude": 0
      },
      "minecraft:behavior.swim_up_for_breath": {
        "priority": 1
      },
      "minecraft:behavior.random_swim": {
        "priority": 4,
        "speed_multiplier": 1,
        "xz_dist": 20,
        "y_dist": 5,
        "interval": 3
      },
      "minecraft:behavior.swim_wander": {
        "priority": 5,
        "interval": 0.3,
        "look_ahead": 6,
        "speed_multiplier": 0.9,
        "wander_time": 2
      },
      "minecraft:physics": {
        "has_gravity": true
      },
      "minecraft:pushable": {
        "is_pushable": false,
        "is_pushable_by_piston": true
      },
      "minecraft:despawn": {
        "despawn_from_distance": {
          "min_distance": 32,
          "max_distance": 40
        }
      },
      "minecraft:conditional_bandwidth_optimization": {}
    },
    "events": {
      "fs:instant_despawn": {
        "add": {
          "component_groups": [
            "fs:instant_despawn"
          ]
        }
      },
      "mnp_ci:add_physics": {
        "add": {
          "component_groups": [
            "mnp_ci:add_physics"
          ]
        }
      },
      "mnp_ci:remove_physics": {
        "add": {
          "component_groups": [
            "mnp_ci:remove_physics"
          ]
        }
      },
      "mnp_ci:add_breathable": {
        "add": {
          "component_groups": [
            "mnp_ci:add_breathable"
          ]
        }
      },
      "mnp_ci:remove_breathable": {
        "add": {
          "component_groups": [
            "mnp_ci:remove_breathable"
          ]
        }
      },
      "mnp_ci:add_long_distance_despawn": {
        "add": {
          "component_groups": [
            "mnp_ci:long_distance_despawn"
          ]
        }
      },
      "mnp_ci:remove_long_distance_despawn": {
        "add": {
          "component_groups": [
            "mnp_ci:normal_distance_despawn"
          ]
        }
      },
      "mnp_ci:persistent": {
        "add": {
          "component_groups": [
            "mnp_ci:persistent"
          ]
        }
      },
      "mnp_ci:set_scale_50": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_50"
          ]
        }
      },
      "mnp_ci:set_scale_51": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_51"
          ]
        }
      },
      "mnp_ci:set_scale_52": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_52"
          ]
        }
      },
      "mnp_ci:set_scale_53": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_53"
          ]
        }
      },
      "mnp_ci:set_scale_54": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_54"
          ]
        }
      },
      "mnp_ci:set_scale_55": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_55"
          ]
        }
      },
      "mnp_ci:set_scale_56": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_56"
          ]
        }
      },
      "mnp_ci:set_scale_57": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_57"
          ]
        }
      },
      "mnp_ci:set_scale_58": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_58"
          ]
        }
      },
      "mnp_ci:set_scale_59": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_59"
          ]
        }
      },
      "mnp_ci:set_scale_60": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_60"
          ]
        }
      },
      "mnp_ci:set_scale_61": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_61"
          ]
        }
      },
      "mnp_ci:set_scale_62": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_62"
          ]
        }
      },
      "mnp_ci:set_scale_63": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_63"
          ]
        }
      },
      "mnp_ci:set_scale_64": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_64"
          ]
        }
      },
      "mnp_ci:set_scale_65": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_65"
          ]
        }
      },
      "mnp_ci:set_scale_66": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_66"
          ]
        }
      },
      "mnp_ci:set_scale_67": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_67"
          ]
        }
      },
      "mnp_ci:set_scale_68": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_68"
          ]
        }
      },
      "mnp_ci:set_scale_69": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_69"
          ]
        }
      },
      "mnp_ci:set_scale_70": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_70"
          ]
        }
      },
      "mnp_ci:set_scale_71": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_71"
          ]
        }
      },
      "mnp_ci:set_scale_72": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_72"
          ]
        }
      },
      "mnp_ci:set_scale_73": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_73"
          ]
        }
      },
      "mnp_ci:set_scale_74": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_74"
          ]
        }
      },
      "mnp_ci:set_scale_75": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_75"
          ]
        }
      },
      "mnp_ci:set_scale_76": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_76"
          ]
        }
      },
      "mnp_ci:set_scale_77": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_77"
          ]
        }
      },
      "mnp_ci:set_scale_78": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_78"
          ]
        }
      },
      "mnp_ci:set_scale_79": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_79"
          ]
        }
      },
      "mnp_ci:set_scale_80": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_80"
          ]
        }
      },
      "mnp_ci:set_scale_81": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_81"
          ]
        }
      },
      "mnp_ci:set_scale_82": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_82"
          ]
        }
      },
      "mnp_ci:set_scale_83": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_83"
          ]
        }
      },
      "mnp_ci:set_scale_84": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_84"
          ]
        }
      },
      "mnp_ci:set_scale_85": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_85"
          ]
        }
      },
      "mnp_ci:set_scale_86": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_86"
          ]
        }
      },
      "mnp_ci:set_scale_87": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_87"
          ]
        }
      },
      "mnp_ci:set_scale_88": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_88"
          ]
        }
      },
      "mnp_ci:set_scale_89": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_89"
          ]
        }
      },
      "mnp_ci:set_scale_90": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_90"
          ]
        }
      },
      "mnp_ci:set_scale_91": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_91"
          ]
        }
      },
      "mnp_ci:set_scale_92": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_92"
          ]
        }
      },
      "mnp_ci:set_scale_93": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_93"
          ]
        }
      },
      "mnp_ci:set_scale_94": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_94"
          ]
        }
      },
      "mnp_ci:set_scale_95": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_95"
          ]
        }
      },
      "mnp_ci:set_scale_96": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_96"
          ]
        }
      },
      "mnp_ci:set_scale_97": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_97"
          ]
        }
      },
      "mnp_ci:set_scale_98": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_98"
          ]
        }
      },
      "mnp_ci:set_scale_99": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_99"
          ]
        }
      },
      "mnp_ci:set_scale_100": {
        "add": {
          "component_groups": [
            "mnp_ci:set_scale_100"
          ]
        }
      },
      "mnp_ci:add_quick_breach": {
        "add": {
          "component_groups": [
            "mnp_ci:quick_breach"
          ]
        }
      },
      "mnp_ci:remove_force_breach": {
        "add": {
          "component_groups": [
            "mnp_ci:breathable"
          ]
        }
      },
      "minecraft:entity_spawned": {
        "add": {
          "component_groups": [
            "mnp_ci:feeding_timer",
            "mnp_ci:whale_spout_cooldown",
            "mnp_ci:random_swim"
          ]
        }
      },
      "mnp_ci:feeding_attempt": {
        "filters": {
          "all_of": [
            {
              "test": "enum_property",
              "domain": "mnp_ci:feeding_state",
              "value": "cooldown"
            },
            {
              "test": "enum_property",
              "domain": "mnp_ci:whale_spout_state",
              "value": "whale_spout",
              "operator": "not"
            },
            {
              "test": "in_water"
            },
            {
              "test": "is_leashed",
              "value": false
            },
            {
              "test": "is_riding",
              "value": false
            }
          ]
        },
        "set_property": {
          "mnp_ci:feeding_state": "feeding"
        },
        "remove": {
          "component_groups": [
            "mnp_ci:feeding_timer",
            "mnp_ci:random_swim"
          ]
        },
        "add": {
          "component_groups": [
            "mnp_ci:feeding",
            "mnp_ci:swim_straight"
          ]
        }
      },
      "mnp_ci:feeding_end": {
        "sequence": [
          {
            "filters": {
              "test": "enum_property",
              "domain": "mnp_ci:feeding_state",
              "value": "feeding"
            },
            "set_property": {
              "mnp_ci:feeding_state": "can_feed"
            },
            "remove": {
              "component_groups": [
                "mnp_ci:feeding",
                "mnp_ci:swim_straight"
              ]
            },
            "add": {
              "component_groups": [
                "mnp_ci:feeding_timer",
                "mnp_ci:random_swim"
              ]
            }
          }
        ]
      },
      "mnp_ci:whale_spout_start_cooldown": {
        "set_property": {
          "mnp_ci:whale_spout_state": "cooldown"
        },
        "remove": {
          "component_groups": [
            "mnp_ci:whale_spout",
            "mnp_ci:swim_straight"
          ]
        },
        "add": {
          "component_groups": [
            "mnp_ci:whale_spout_cooldown",
            "mnp_ci:random_swim"
          ]
        }
      },
      "mnp_ci:whale_spout_end_cooldown": {
        "set_property": {
          "mnp_ci:whale_spout_state": "can_whale_spout"
        },
        "remove": {
          "component_groups": [
            "mnp_ci:whale_spout_cooldown"
          ]
        }
      },
      "mnp_ci:whale_spout_attempt": {
        "first_valid": [
          {
            "filters": {
              "all_of": [
                {
                  "test": "enum_property",
                  "domain": "mnp_ci:whale_spout_state",
                  "value": "can_whale_spout"
                },
                {
                  "test": "in_water"
                }
              ]
            },
            "queue_command": {
              "command": [
                "execute if block ~ ~3 ~ air run event entity @s mnp_ci:whale_spout"
              ]
            }
          },
          {
            "filters": {
              "any_of": [
                {
                  "test": "enum_property",
                  "domain": "mnp_ci:whale_spout_state",
                  "value": "can_whale_spout",
                  "operator": "not"
                },
                {
                  "test": "on_fire"
                },
                {
                  "test": "in_water",
                  "value": false
                }
              ]
            }
          }
        ]
      },
      "mnp_ci:whale_spout": {
        "set_property": {
          "mnp_ci:whale_spout_state": "whale_spout"
        },
        "remove": {
          "component_groups": [
            "mnp_ci:whale_spout_cooldown",
            "mnp_ci:random_swim"
          ]
        },
        "add": {
          "component_groups": [
            "mnp_ci:whale_spout",
            "mnp_ci:swim_straight"
          ]
        }
      }
    }
  }
}