{
	"format_version": "1.16.100",
	"minecraft:entity": {
		"description": {
			"identifier": "agp:test_tornado1",
			"is_spawnable": false,
			"is_summonable": true,
			"is_experimental": false,
			"scripts": {
				"animate": [
					"dir1",
					"SpinCycle1",
					"Spin11",
					"InDistance",
					"OutDistance",
					"CloudFollow",
					"DB1",
					"DF1",
					"Desp1",
					"DT",
					"Re",
					"Dirt11",
					"Water",
					"GetFam"
				]
			},
			"animations": {
				"dir1": "controller.animation.tornado.dir1",
				"SpinCycle1": "animation.SpinCycle1",
				"Spin11": "animation.Spin11",
				"InDistance": "animation.InDistance",
				"OutDistance": "animation.OutDistance",
				"CloudFollow": "animation.CloudFollow",
				"DB1": "animation.DB1",
				"DF1": "animation.DF1",
				"Desp1": "animation.Desp1",
				"DT": "animation.DT",
				"Re": "animation.Re",
				"Dirt11": "animation.Dirt11",
				"Water": "animation.Water",
				"GetFam": "animation.GetFam"
			}
		},
		"component_groups": {
			"dir1": {
				"minecraft:variant": {
					"value": 0
				}
			},
			"dir2": {
				"minecraft:variant": {
					"value": 1
				}
			},
			"dir3": {
				"minecraft:variant": {
					"value": 2
				}
			},
			"dir4": {
				"minecraft:variant": {
					"value": 3
				}
			},
			"OnWater": {
				"minecraft:transformation": {
					"into": "agp:spout1"
				}
			},
			"Pass": {
				"minecraft:type_family": {
					"family": [
						"tornado",
						"agp",
						"mob",
						"Pass"
					]
				}
			},
			"Stop_Pass": {
				"minecraft:type_family": {
					"family": [
						"tornado",
						"agp",
						"mob"
					]
				}
			},
			"Despawn": {
				"minecraft:instant_despawn": {}
			}
		},
		"components": {
			"minecraft:tick_world": {
				"never_despawn": true
			},
			"minecraft:nameable": {},
			"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": {
					"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": "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"
					}
				]
			},
			"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": {
				"run_command": {
					"command": [
						"tag @s add ET2"
					]
				},
				"trigger": "Random_Dir"
			},
			"minecraft:entity_transformed": {
				"run_command": {
					"command": [
						"tag @s add ET2"
					]
				},
				"trigger": "Random_Dir"
			},
			"minecraft:entity_born": {
				"run_command": {
					"command": [
						"tag @s add ET2"
					]
				},
				"trigger": "Random_Dir"
			},
			"Random_Dir": {
				"randomize": [
					{
						"weight": 5,
						"add": {
							"component_groups": [
								"dir1"
							]
						}
					},
					{
						"weight": 4.3,
						"add": {
							"component_groups": [
								"dir2"
							]
						}
					},
					{
						"weight": 2,
						"add": {
							"component_groups": [
								"dir3"
							]
						}
					},
					{
						"weight": 1.3,
						"add": {
							"component_groups": [
								"dir4"
							]
						}
					}
				]
			},
			"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"
					]
				}
			},
			"Pass": {
				"add": {
					"component_groups": [
						"Pass"
					]
				},
				"remove": {
					"component_groups": [
						"Stop_Pass"
					]
				}
			},
			"Stop_Pass": {
				"add": {
					"component_groups": [
						"Stop_Pass"
					]
				},
				"remove": {
					"component_groups": [
						"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"
					]
				}
			}
		}
	}
}