{
  "format_version": "1.10.0",
  "animation_controllers": {
        "controller.animation.cyn_hao.horse.bucking": {
            "initial_state": "bucking_false",
            "states": {
                "bucking_false": {
                    "transitions": [
                        { "bucking_true": "query.has_player_rider && !query.is_tamed" }
                    ]
                },
                
                "bucking_true": {
                    "transitions": [
                        { "bucked_off": "!query.has_rider && !query.is_tamed" },
                        { "bucking_false": "!query.has_rider || query.is_tamed" }
                    ]
                },

                "bucked_off": {
                    "on_entry": [
                        "/playsound mob.horse.angry @a ~ ~ ~ 1.0"
                    ],
                    "transitions": [
                        { "bucking_false": "query.all_animations_finished" }
                    ]
                }
            }
        },

        "controller.animation.cyn_hao.donkey.bucking": {
            "initial_state": "bucking_false",
            "states": {
                "bucking_false": {
                    "transitions": [
                        { "bucking_true": "query.has_player_rider && !query.is_tamed" }
                    ]
                },
                
                "bucking_true": {
                    "transitions": [
                        { "bucked_off": "!query.has_rider && !query.is_tamed" },
                        { "bucking_false": "!query.has_rider || query.is_tamed" }
                    ]
                },

                "bucked_off": {
                    "on_entry": [
                        "/playsound mob.horse.donkey.angry @a ~ ~ ~ 1.0"
                    ],
                    "transitions": [
                        { "bucking_false": "query.all_animations_finished" }
                    ]
                }
            }
        },
        
        "controller.animation.cyn_hao.sea_big.bucking": {
            "initial_state": "bucking_false",
            "states": {
                "bucking_false": {
                    "transitions": [
                        { "bucking_true": "query.has_player_rider && !query.is_tamed" }
                    ]
                },
                
                "bucking_true": {
                    "transitions": [
                        { "bucked_off": "!query.has_rider && !query.is_tamed" },
                        { "bucking_false": "!query.has_rider || query.is_tamed" }
                    ]
                },

                "bucked_off": {
                    "on_entry": [
                        "/playsound mob.horse.angry @a ~ ~ ~ 1.0 0.7"
                    ],
                    "transitions": [
                        { "bucking_false": "query.all_animations_finished" }
                    ]
                }
            }
        }
    }
}
