{
	"format_version": "1.16.100",
	"minecraft:entity": {
		"description": {
			"identifier": "agp:morph_tornado1",
			"is_spawnable": false,
			"is_summonable": false,
			"is_experimental": false,
			"scripts": {
				"animate": [
					"SpinCycle1",
					"Spin_M1",
					"CloudFollow",
					"InDistance",
					"OutDistance",
					"DB1",
					"DF1",
					"Desp1",
					"WindFar",
					"WindIn",
					"WindRoar",
					"DT",
					"Re",
					"Rip",
					"GetFam",
					"TF",
					"TA1",
					"TK",
					"GF",
					"HasGTC"
				]
			},
			"animations": {
				"MorphCycle1": "animation.MorphCycle1",
				"Spin_M1": "animation.Spin_M1",
				"CloudFollow": "animation.CloudFollow",
				"InDistance": "animation.InDistance",
				"OutDistance": "animation.OutDistance",
				"DB1": "animation.DB1",
				"DF1": "animation.DF1",
				"Desp1": "animation.Desp1",
				"WindFar": "animation.WindFar",
				"WindIn": "animation.WindIn",
				"WindRoar": "animation.WindRoar",
				"DT": "animation.DT",
				"Re": "animation.Re",
				"Rip": "animation.Rip",
				"GetFam": "animation.GetFam",
				"TF": "animation.TF",
				"TA1": "animation.TA1",
				"TK": "animation.TK",
				"GF": "animation.GF",
				"HasGTC": "animation.HasGTC"
			}
		},
		"component_groups": {
			"TimeToRemoveMorph": {
				"minecraft:timer": {
					"looping": false,
					"time": [
						158,
						229
					],
					"time_down_event": {
						"event": "Remove_Morph"
					}
				}
			},
			"GetFam": {
				"minecraft:type_family": {
					"family": [
						"tornado",
						"agp",
						"mob",
						"Able"
					]
				}
			},
			"Despawn": {
				"minecraft:instant_despawn": {}
			}
		},
		"components": {
			"minecraft:tick_world": {
				"never_despawn": true
			},
			"minecraft:nameable": {},
			"minecraft:type_family": {
				"family": [
					"tornado",
					"agp",
					"mob"
				]
			},
			"minecraft:movement": {
				"value": 0.3
			},
			"minecraft:navigation.climb": {},
			"minecraft:movement.basic": {},
			"minecraft:jump.static": {},
			"minecraft:can_climb": {},
			"minecraft:collision_box": {
				"width": 1.4,
				"height": 7
			},
			"minecraft:breathable": {
				"total_supply": 15,
				"suffocate_time": 0,
				"breathes_air": true,
				"breathes_water": true
			},
			"minecraft:health": {
				"value": 1000000,
				"max": 1000000
			},
			"minecraft:damage_sensor": {
				"triggers": [
					{
						"on_damage": {
							"filters": {
								"any_of": [
									{
										"all_of": [
											{
												"test": "has_damage",
												"value": "fatal"
											},
											{
												"test": "has_tag",
												"value": "TF"
											},
											{
												"test": "is_family",
												"operator": "==",
												"value": "Able"
											}
										]
									},
									{
										"all_of": [
											{
												"test": "has_damage",
												"value": "fatal"
											},
											{
												"test": "has_tag",
												"value": "TF2"
											},
											{
												"test": "is_family",
												"operator": "==",
												"value": "Able"
											}
										]
									}
								]
							},
							"event": "FunctionDeath"
						}
					},
					{
						"cause": "suffocation",
						"deals_damage": false
					}
				]
			},
			"minecraft:environment_sensor": {
				"triggers": [
					{
						"filters": {
							"test": "in_water",
							"operator": "==",
							"value": true
						},
						"event": "OnWater",
						"target": "self"
					},
					{
						"filters": {
							"test": "in_water",
							"operator": "!=",
							"value": true
						},
						"event": "OffWater",
						"target": "self"
					},
					{
						"filters": {
							"test": "has_biome_tag",
							"operator": "==",
							"value": "desert"
						},
						"event": "OnSand",
						"target": "self"
					},
					{
						"filters": {
							"test": "has_biome_tag",
							"operator": "!=",
							"value": "desert"
						},
						"event": "OffSand",
						"target": "self"
					},
					{
						"filters": {
							"test": "has_biome_tag",
							"operator": "==",
							"value": "mesa"
						},
						"event": "OnMesa",
						"target": "self"
					},
					{
						"filters": {
							"test": "has_biome_tag",
							"operator": "!=",
							"value": "mesa"
						},
						"event": "OffMesa",
						"target": "self"
					},
					{
						"filters": {
							"any_of": [
								{
									"test": "in_lava",
									"operator": "==",
									"value": true
								},
								{
									"test": "in_block",
									"operator": "==",
									"value": "fire"
								}
							]
						},
						"event": "OnFire"
					},
					{
						"filters": {
							"any_of": [
								{
									"all_of": [
										{
											"test": "in_lava",
											"operator": "!=",
											"value": true
										},
										{
											"test": "has_tag",
											"operator": "!=",
											"value": "StopFire"
										},
										{
											"test": "has_tag",
											"operator": "==",
											"value": "Fire"
										}
									]
								},
								{
									"all_of": [
										{
											"test": "in_block",
											"operator": "!=",
											"value": "fire"
										},
										{
											"test": "has_tag",
											"operator": "!=",
											"value": "StopFire"
										},
										{
											"test": "has_tag",
											"operator": "==",
											"value": "Fire"
										}
									]
								}
							]
						},
						"event": "FireTimer"
					},
					{
						"filters": {
							"any_of": [
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "snowy_slopes"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "ice_plains"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "cold_beach"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "cold_taiga"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "cold_taiga_hills"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "cold_taiga_mutated"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "ice_mountains"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "ice_plains_spikes"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "grove"
								},
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "frozen_peaks"
								}
							]
						},
						"event": "OnSnow",
						"target": "self"
					},
					{
						"filters": {
							"all_of": [
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "snowy_slopes"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "ice_plains"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "cold_beach"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "cold_taiga"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "cold_taiga_hills"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "cold_taiga_mutated"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "ice_mountains"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "ice_plains_spikes"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "grove"
								},
								{
									"test": "has_biome_tag",
									"operator": "!=",
									"value": "frozen_peaks"
								}
							]
						},
						"event": "OffSnow",
						"target": "self"
					},
					{
						"filters": {
							"all_of": [
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "swamp"
								},
								{
									"test": "in_water",
									"operator": "==",
									"value": true
								}
							]
						},
						"event": "OnSwampWater",
						"target": "self"
					},
					{
						"filters": {
							"any_of": [
								{
									"all_of": [
										{
											"test": "has_biome_tag",
											"operator": "!=",
											"value": "swamp"
										},
										{
											"test": "in_water",
											"operator": "==",
											"value": true
										}
									]
								},
								{
									"all_of": [
										{
											"test": "has_biome_tag",
											"operator": "==",
											"value": "swamp"
										},
										{
											"test": "in_water",
											"operator": "!=",
											"value": true
										}
									]
								}
							]
						},
						"event": "OffSwampWater",
						"target": "self"
					},
					{
						"filters": {
							"all_of": [
								{
									"test": "has_biome_tag",
									"operator": "==",
									"value": "swamp"
								},
								{
									"test": "in_water",
									"operator": "!=",
									"value": true
								}
							]
						},
						"event": "OnSwamp",
						"target": "self"
					},
					{
						"filters": {
							"any_of": [
								{
									"all_of": [
										{
											"test": "has_biome_tag",
											"operator": "==",
											"value": "swamp"
										},
										{
											"test": "in_water",
											"operator": "==",
											"value": true
										}
									]
								},
								{
									"all_of": [
										{
											"test": "has_biome_tag",
											"operator": "!=",
											"value": "swamp"
										},
										{
											"test": "in_water",
											"operator": "!=",
											"value": true
										}
									]
								}
							]
						},
						"event": "OffSwamp",
						"target": "self"
					},
					{
						"filters": {
							"any_of": [
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "jagged_peaks"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "stony_peaks"
								}
							]
						},
						"event": "Pass"
					},
					{
						"filters": {
							"any_of": [
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "plains"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "desert"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "jungle"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "taiga"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "savanna"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "frozen"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "cold"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "lukewarm"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "warm"
								},
								{
									"test": "has_biome_tag",
									"subject": "self",
									"operator": "==",
									"value": "swamp"
								}
							]
						},
						"event": "Stop_Pass"
					},
					{
						"filters": {
							"any_of": [
								{
									"all_of": [
										{
											"test": "is_underground",
											"subject": "self",
											"operator": "==",
											"value": true
										},
										{
											"test": "has_biome_tag",
											"subject": "self",
											"operator": "!=",
											"value": "mangrove_swamp"
										},
										{
											"test": "is_altitude",
											"subject": "self",
											"operator": ">=",
											"value": -30
										}
									]
								}
							]
						},
						"event": "Up"
					},
					{
						"filters": {
							"test": "is_underground",
							"subject": "self",
							"operator": "==",
							"value": false
						},
						"event": "Remove_Up"
					},
					{
						"filters": {
							"any_of": [
								{
									"all_of": [
										{
											"test": "has_damage",
											"value": "fatal"
										},
										{
											"test": "has_tag",
											"value": "TF"
										},
										{
											"test": "is_family",
											"operator": "==",
											"value": "Able"
										}
									]
								},
								{
									"all_of": [
										{
											"test": "has_damage",
											"value": "fatal"
										},
										{
											"test": "has_tag",
											"value": "TF2"
										},
										{
											"test": "is_family",
											"operator": "==",
											"value": "Able"
										}
									]
								}
							]
						},
						"event": "FunctionDeath"
					},
					{
						"filters": {
							"test": "distance_to_nearest_player",
							"operator": ">=",
							"value": 75
						},
						"event": "Despawn"
					}
				]
			},
			"minecraft:hurt_on_condition": {
				"damage_conditions": [
					{
						"filters": {
							"test": "in_lava",
							"subject": "self",
							"operator": "==",
							"value": true
						},
						"cause": "lava",
						"damage_per_tick": 4
					}
				]
			},
			"minecraft:behavior.melee_attack": {
				"priority": 3
			},
			"minecraft:behavior.hurt_by_target": {
				"priority": 1
			},
			"minecraft:physics": {},
			"minecraft:pushable": {
				"is_pushable": true,
				"is_pushable_by_piston": true
			}
		},
		"events": {
			"minecraft:entity_spawned": {
				"add": {
					"component_groups": [
						"TimeToRemoveMorph"
					]
				},
				"run_command": {
					"command": [
						"tag @s add ET",
						"tag @s add GTC"
					]
				}
			},
			"SkyChance": {
				"randomize": [
					{
						"weight": 7,
						"run_command": {
							"command": [
								"tag @s add NoSky",
								"tag @s remove GreenSky",
								"tag @s remove BlueSky",
								"tag @s remove RedSky",
								"tag @s remove DeepRedSky"
							]
						}
					},
					{
						"weight": 1,
						"run_command": {
							"command": [
								"tag @s remove NoSky",
								"tag @s add GreenSky",
								"tag @s remove BlueSky",
								"tag @s remove RedSky",
								"tag @s remove DeepRedSky"
							]
						}
					},
					{
						"weight": 1.6,
						"run_command": {
							"command": [
								"tag @s remove NoSky",
								"tag @s remove GreenSky",
								"tag @s add BlueSky",
								"tag @s remove RedSky",
								"tag @s remove DeepRedSky"
							]
						}
					},
					{
						"weight": 0.32,
						"run_command": {
							"command": [
								"tag @s remove NoSky",
								"tag @s remove GreenSky",
								"tag @s remove BlueSky",
								"tag @s add RedSky",
								"tag @s remove DeepRedSky"
							]
						}
					},
					{
						"weight": 0.04,
						"run_command": {
							"command": [
								"tag @s remove NoSky",
								"tag @s remove GreenSky",
								"tag @v remove BlueSky",
								"tag @s remove RedSky",
								"tag @s add DeepRedSky"
							]
						}
					}
				]
			},
			"Remove_Morph": {
				"run_command": {
					"command": [
						"execute @a[tag=MorphTornado] ~~~ tag @s remove MorphTornado"
					]
				},
				"add": {
					"component_groups": [
						"Despawn"
					]
				}
			},
			"OnWater": {
				"run_command": {
					"command": [
						"tag @s add OnWater"
					]
				}
			},
			"OffWater": {
				"run_command": {
					"command": [
						"tag @s remove OnWater"
					]
				}
			},
			"OnSand": {
				"run_command": {
					"command": [
						"tag @s add OnSand"
					]
				}
			},
			"OffSand": {
				"run_command": {
					"command": [
						"tag @s remove OnSand"
					]
				}
			},
			"OnMesa": {
				"run_command": {
					"command": [
						"tag @s add OnMesa"
					]
				}
			},
			"OffMesa": {
				"run_command": {
					"command": [
						"tag @s remove OnMesa"
					]
				}
			},
			"OnSnow": {
				"run_command": {
					"command": [
						"tag @s add OnSnow"
					]
				}
			},
			"OffSnow": {
				"run_command": {
					"command": [
						"tag @s remove OnSnow"
					]
				}
			},
			"OnSwampWater": {
				"run_command": {
					"command": [
						"tag @s add OnSwampWater"
					]
				}
			},
			"OffSwampWater": {
				"run_command": {
					"command": [
						"tag @s remove OnSwampWater"
					]
				}
			},
			"OnSwamp": {
				"run_command": {
					"command": [
						"tag @s add OnSwamp"
					]
				}
			},
			"OffSwamp": {
				"run_command": {
					"command": [
						"tag @s remove OnSwamp"
					]
				}
			},
			"OnFire": {
				"run_command": {
					"command": [
						"tag @s add Fire"
					]
				}
			},
			"FireTimer": {
				"run_command": {
					"command": [
						"tag @s add StopFire"
					]
				}
			},
			"RF": {
				"run_command": {
					"command": [
						"tag @s remove Fire",
						"tag @s remove StopFire"
					]
				}
			},
			"RW": {
				"add": {
					"component_groups": [
						"GetFam"
					]
				}
			},
			"Pass": {
				"run_command": {
					"command": [
						"tag @s add Pass"
					]
				}
			},
			"Stop_Pass": {
				"run_command": {
					"command": [
						"tag @s remove Pass"
					]
				}
			},
			"Up": {
				"run_command": {
					"command": [
						"tag @s add Up",
						"execute @s[tag=Up,tag=!OnWater] ~~~ tp ~~0.5 ~"
					]
				}
			},
			"Remove_Up": {
				"run_command": {
					"command": [
						"tag @s remove Up"
					]
				}
			},
			"Despawn": {
				"add": {
					"component_groups": [
						"Despawn"
					]
				}
			}
		}
	}
}