{
  "format_version": "1.10.0",
  "animations": {
    "animation.InDistance": {
      "timeline": {
        "0.0": [
          "/execute @e[type=agp:tornado0] ~ ~ ~ tag @e[type=!player,type=!agp:player_air,type=!agp:decoy_block,type=!agp:tornado_siren,type=!agp:pl,r=33] add in",
	    "/execute as @e[type=agp:tornado0] run tag @e[type=!player,type=!agp:player_air,type=!agp:decoy_block,type=!agp:tornado_siren,type=!agp:pl,r=33] add in",

	    "/execute @e[type=agp:tornado1] ~ ~ ~ tag @e[type=!player,type=!agp:player_air,type=!agp:decoy_block,type=!agp:tornado_siren,type=!agp:pl,r=38] add in",
	    "/execute as @e[type=agp:tornado1] run tag @e[type=!player,type=!agp:player_air,type=!agp:decoy_block,type=!agp:tornado_siren,type=!agp:pl,r=38] add in"
        ]
	},
	"animation_length": 0.5,
	"loop": true
    },
    "animation.OutDistance": {
      "timeline": {
        "0.0": [
          "/execute @e[type=agp:tornado0] ~~~ execute @e[type=!player,rm=69] ~~~ tag @s remove in",
	    "/execute @e[type=agp:tornado1] ~~~ execute @e[type=!player,rm=74] ~~~ tag @s remove in"
        ]
	},
	"animation_length": 0.04,
	"loop": true
    },

    "animation.SpinCycle0": {
      "timeline": {
        "0.0": [
          "/execute @e[r=90,type=!player,type=!agp:tornado0,tag=in,tag=!not,type=!agp:satellite] ~ ~ ~ tp ^ ^ ^0.07 facing @e[type=agp:tornado0] true",
	    "/effect @a[r=35,tag=!BO,tag=!c] jump_boost 1 1 true",
	    "/effect @a[r=35,tag=!BO,tag=!c] slow_falling 1 3 true",
	    "/execute @e[r=186,type=agp:decoy_block,tag=!Out,tag=!Fall] ~ ~ ~ tp ^3.1 ^0.66 ^0.027 facing @e[type=agp:tornado0]",
	    "/execute @e[r=186,type=agp:decoy_block,tag=Out,tag=!Fall] ~ ~ ~ tp ^3.67 ^0.0 ^0.036 facing @e[type=agp:tornado0]",
	    "/execute @e[type=agp:tornado0] ~~~ camerashake add @a[r=23] 0.01 1 positional",

	    "/execute @s[family=!Pass] ~~~ fill ~2 ~-1 ~2 ~~~ dirt 0 replace grass",
	    "/execute @s[family=!Pass] ~~~ fill ~-2 ~-1 ~2 ~~~ dirt 0 replace grass",
	    "/execute @s[family=!Pass] ~~~ fill ~4 ~-1 ~2 ~~~ dirt 0 replace grass_path",
	    "/execute @s[family=!Pass] ~~~ fill ~-4 ~-1 ~2 ~~~ dirt 0 replace grass_path",
	    "/execute @s[family=!Pass] ~~~ fill ~2 ~-1 ~2.4 ~~~ dirt 0 replace farmland",
	    "/execute @s[family=!Pass] ~~~ fill ~-2 ~-1 ~2.4 ~~~ dirt 0 replace farmland",
	    "/execute @s[family=!Pass] ~~~ fill ~2 ~-1 ~2.4 ~~~ dirt 0 replace podzol",
	    "/execute @s[family=!Pass] ~~~ fill ~-2 ~-1 ~2.4 ~~~ dirt 0 replace podzol",
	    "/execute @s[family=!Pass] ~~~ fill ~2 ~-1 ~2.4 ~~~ mud 0 replace mycelium",
	    "/execute @s[family=!Pass] ~~~ fill ~-2 ~-1 ~2.4 ~~~ mud 0 replace mycelium",

	    "/execute @s[tag=Move] ~~~ tp ^^^0.28",
	    "/execute @s[tag=Move,tag=!OnWater,tag=!OnSwampWater] ~~~ tp ~~-1~ true",
	    "/execute @s[family=!Pass] ~~~ function blocks0"
        ]
	},
	"animation_length": 0.01,
	"loop": true
    },
    "animation.SpinCycle1": {
      "timeline": {
        "0.0": [
          "/execute @e[r=109,type=!player,type=!agp:tornado1,type=!agp:player_air,tag=in,tag=!not,tag=!Fall] ~ ~ ~ tp ^2.5 ^0.18 ^0.03 facing @e[type=agp:tornado1] true",
	    "/execute @e[r=127,type=agp:player_air,tag=!PP,tag=!PR] ~ ~ ~ tp ^1.8 ^0.31 ^0.03 facing @e[type=agp:tornado1] true",
	    "/execute @e[r=127,type=agp:player_air,tag=!PP,tag=PR] ~ ~ ~ tp ^1.8 ^-0.25 ^0.03 facing @e[type=agp:tornado1] true",
	    "/execute @e[r=186,type=agp:decoy_block,tag=!Out,tag=!Fall] ~ ~ ~ tp ^3.7 ^0.54 ^0.03 facing @e[type=agp:tornado1]",
	    "/execute @e[r=186,type=agp:decoy_block,tag=Out,type=!agp:tornado1,tag=!Fall] ~ ~ ~ tp ^5.8 ^0.0 ^0.03 facing @e[type=agp:tornado1]",
          "/execute @e[type=agp:tornado1] ~ ~ ~camerashake add @a[r=28] 0.02 1 positional",

	    "/execute @s[family=!Pass] ~~~ fill ~4 ~-1 ~2 ~~~ dirt 0 replace grass",
	    "/execute @s[family=!Pass] ~~~ fill ~-4 ~-1 ~2 ~~~ dirt 0 replace grass",
	    "/execute @s[family=!Pass] ~~~ fill ~4 ~-1 ~2 ~~~ dirt 0 replace grass_path",
	    "/execute @s[family=!Pass] ~~~ fill ~-4 ~-1 ~2 ~~~ dirt 0 replace grass_path",
	    "/execute @s[family=!Pass] ~~~ fill ~4 ~-1 ~2 ~~~ dirt 0 replace farmland",
	    "/execute @s[family=!Pass] ~~~ fill ~-4 ~-1 ~2 ~~~ dirt 0 replace farmland",
	    "/execute @s[family=!Pass] ~~~ fill ~3 ~-1 ~2 ~~~ dirt 0 replace podzol",
	    "/execute @s[family=!Pass] ~~~ fill ~-3 ~-1 ~2 ~~~ dirt 0 replace podzol",
	    "/execute @s[family=!Pass] ~~~ fill ~3 ~-1 ~2 ~~~ mud 0 replace mycelium",
	    "/execute @s[family=!Pass] ~~~ fill ~-3 ~-1 ~2 ~~~ mud 0 replace mycelium",

	    "/execute @s[tag=Move] ~~~ tp ^^^0.27",
	    "/execute @s[tag=Move,tag=!OnWater] ~~~ tp ~~-1~ true",
	    "/execute @s[family=!Pass] ~~~ function blocks1",

	    "/execute @s ~~~ execute @p[tag=OG,tag=!BO,tag=!c,rm=60] ~~~ tag @s add AF",
	    "/execute @s ~~~ execute @p[tag=OG,tag=!BO,tag=!c,r=45] ~~~ tag @s remove AF",

	    "/execute @s ~~~ execute @p[tag=OG,tag=!BO,tag=!c,rm=60] ~~~ tag @s remove OG"
        ]
	},
	"animation_length": 0.01,
	"loop": true
    },

    "animation.FunnelCloud0": {
      "timeline": {
        "0.0": [
	    "/execute @e[type=agp:tornado0] ~ ~ ~ particle agp:FunnelCloud0 ^ ^-12 ^",

	    "/execute @e[type=agp:tornado1] ~ ~ ~ particle agp:FunnelCloud1 ^ ^-12 ^",

	    "/execute @e[type=agp:tornado2] ~ ~ ~ particle agp:FunnelCloud2 ^ ^-12 ^"
        ]
	},
	"animation_length": 0.01,
	"loop": true
    },
    "animation.CloudFollow": {
      "timeline": {
        "2": [
	    "/execute @e[family=Able] ~ ~ ~ particle agp:cloud0 ~ ~ ~",

	    "/execute @e[type=agp:tornado0] ~ ~ ~ particle agp:cloud0 ~ ~ ~",

	    "/execute @e[type=agp:tornado1] ~ ~ ~ particle agp:cloud0 ~ ~ ~"
        ]
	},
	"animation_length": 2.2,
	"loop": true
    },
    "animation.SpoutCloud": {
      "timeline": {
        "0.0": [
	    "/execute @e[type=agp:spout0] ~ ~ ~ particle agp:Wcloud0 ~ ~ ~",

	    "/execute @e[type=agp:spout1] ~ ~ ~ particle agp:Wcloud0 ~ ~ ~",

	    "/execute @e[type=agp:spout2] ~ ~ ~ particle agp:Wcloud0 ~ ~ ~"
        ]
	},
	"animation_length": 0.04,
	"loop": true
    },

    "animation.Spin1": {
      "timeline": {
        "0.0": [
	    "/execute @s ~~~ function F1P"
        ]
	},
	"animation_length": 0.01,
	"loop": true
    },
    "animation.Spin2": {
      "timeline": {
        "0.0": [
	    "/execute @s ~~~ function F2P"
        ]
	},
	"animation_length": 0.01,
	"loop": true
    },
    "animation.Pull": {
      "timeline": {
        "0.0": [
          "/execute @e[type=agp:tornado1] ~~~ particle tornado1:pull"
        ]
	},
	"animation_length": 0.8,
	"loop": true
    },

    "animation.Rip": {
      "timeline": {
	  "8": [
	    "/execute @s ~~~ tp ^^^-2.6"
        ],
	  "10": [
	    "/execute @s ~~~ tp ^^^-1.3"
        ],
	  "12": [
	    "/execute @s ~~~ tp ^^^-0.4"
        ],
        "15": [
	    "/execute @s ~~~ tp ^^^2.1"
        ],
	  "22": [
	    "/execute @s ~~~ tp ^^^-0.7"
        ]
	},
	"animation_length": 22.5,
	"loop": true
    },
    "animation.Rip0": {
      "timeline": {
	  "0.0": [
	    "/execute @s ~~~ tp ^^^-2.8"
        ],
	  "0.7": [
	    "/execute @s ~~~ tp ^^^1.4"
        ],
	  "2": [
	    "/execute @s ~~~ tp ^^^-2.4"
        ],
	  "2.7": [
	    "/execute @s ~~~ tp ^^^2.1"
        ],
	  "3.4": [
	    "/execute @s ~~~ tp ^^^1.9"
        ],
	  "4": [
	    "/execute @s ~~~ tp ^^^0.9"
        ],
	  "6": [
	    "/execute @s ~~~ tp ^^^-2.8"
        ],
	  "8": [
	    "/execute @s ~~~ tp ^^^-2.6"
        ],
	  "10": [
	    "/execute @s ~~~ tp ^^^-1.3"
        ],
	  "12": [
	    "/execute @s ~~~ tp ^^^-0.4"
        ],
	  "13.5": [
	    "/execute @s ~~~ tp ^^^1.1"
        ],
        "15": [
	    "/execute @s ~~~ tp ^^^2.1"
        ],
	  "22": [
	    "/execute @s ~~~ tp ^^^-0.7"
        ]
	},
	"animation_length": 22.5,
	"loop": true
    }
  }
}