{
    "format_version": "1.8.0",
    "animations": {
        "animation.humanoid.attack.rotations": {
            "loop": true,
            "bones": {
                "body": {
                    "rotation": [ 0.0, "math.sin(math.sqrt(variable.attack_time) * 360) * 11.46 - this", 0.0 ]
                },
                "leftarm": {
                    "rotation": [ "math.sin(math.sqrt(variable.attack_time) * 360) * 11.46", 0.0, 0.0 ]
                },
                "rightarm": {
                    "rotation": [ "math.sin(1.0 - math.pow(1.0 - variable.attack_time, 3.0) * 180.0) * (variable.is_brandishing_spear || variable.is_holding_spyglass ? -1.0 : 1.0 )", "variable.is_brandishing_spear || variable.is_holding_spyglass ? 0.0 : (math.sin(math.sqrt(variable.attack_time) * 360) * 11.46) * 2.0", 0.0 ]
                }
            }
        },
        "animation.humanoid.base_pose": {
            "loop": true,
            "bones": {
                "waist": {
                    "rotation": [ 0.0, 0.0, 0.0 ]
                }
            }
        },
        "animation.humanoid.big_head": {
            "loop": true,
            "bones": {
                "head": {
                    "scale": 1.4
                }
            }
        },
        "animation.humanoid.bob": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ 0.0, 0.0, "((math.cos(query.life_time * 103.2) * 2.865) + 2.865) *-1.0" ]
                },
                "rightarm": {
                    "rotation": [ 0.0, 0.0, "(math.cos(query.life_time * 103.2) * 2.865) + 2.865" ]
                }
            }
        },
        "animation.humanoid.bow_and_arrow": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ "query.target_x_rotation - 90.0 - math.sin(query.life_time * 76.8) * 2.865 - this", "query.target_y_rotation + 28.65", "-(math.cos(query.life_time * 103.2) * 2.865) - 2.865" ]
                },
                "rightarm": {
                    "rotation": [ "query.target_x_rotation - 90.0 + math.sin(query.life_time * 76.8) * 2.865 - this", "query.target_y_rotation - 5.73", "(math.cos(query.life_time * 103.2) * 2.865) + 2.865" ]
                }
            }
        },
        "animation.humanoid.brandish_spear": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "this * -0.5 - 143.5 - 22.5 * variable.charge_amount", "-this", "-((math.cos(query.life_time * 103.2) * 2.865) + 2.865)" ]
                }
            }
        },
        "animation.humanoid.holding_spyglass": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "math.clamp(query.target_x_rotation - 105 - (variable.is_sneaking ? 15 : 0), -170, 180)", "math.clamp(query.target_y_rotation - 15, -60, 90)", 5.0 ]
                }
            }
        },
        "animation.humanoid.tooting_goat_horn": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "math.clamp(query.target_x_rotation, -43, 14) - 75", "math.clamp(query.target_y_rotation, -37, 43) - 30", 5.0 ]
                },
                "rightitem": {
                    "rotation": [ 15, 0, 100 ],
                    "position": [ 4, 0, 1 ]
                }
            }
        },
        "animation.humanoid.holding_brush": {
            "loop": true,
            "bones": {
                "rightitem": {
                    "scale": 1.5,
                    "position": {
                        "0.0": [ -7, -1, -1 ]
                    },
                    "rotation": {
                        "0.0": [ 20, -30, -10 ]
                    }
                }
            }
        },
        "animation.humanoid.brushing": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "math.clamp(query.target_x_rotation, -43, 14) - 50", "math.clamp(query.target_y_rotation, -37, 43)", 5.0 ]
                },
                "rightitem": {
                    "position": {
                        "0.0": [ 0, 0, 0 ],
                        "0.1": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 1.5, 0, -3 ]
                        },
                        "0.2": {
                            "pre": [ 1.5, 0, -3 ],
                            "post": [ 0, 0, 0 ]
                        },
                        "0.3": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 1.5, 0, 3 ]
                        },
                        "0.4": {
                            "pre": [ 1.5, 0, 3 ],
                            "post": [ 0, 0, 0 ]
                        },
                        "0.5": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 0, 0, 0 ]
                        }
                    },
                    "rotation": {
                        "0.0": [ 0, 0, 0 ],
                        "0.1": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 0, -30, 0 ]
                        },
                        "0.2": {
                            "pre": [ 0, -30, 0 ],
                            "post": [ 0, 0, 0 ]
                        },
                        "0.3": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 0, 30, 0 ]
                        },
                        "0.4": {
                            "pre": [ 0, 30, 0 ],
                            "post": [ 0, 0, 0 ]
                        },
                        "0.5": {
                            "pre": [ 0, 0, 0 ],
                            "post": [ 0, 0, 0 ]
                        }
                    }
                }
            }
        },
        "animation.humanoid.celebrating": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ "(math.cos(query.life_time * 800.0) * 2.865)", 180.0, -135.0 ]
                },
                "rightarm": {
                    "rotation": [ "(math.cos(query.life_time * 800.0) * 2.865)", 180.0, 153.0 ]
                }
            }
        },
        "animation.humanoid.charging": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "22.5 * variable.charge_amount - this", "-this", 0.0 ]
                }
            }
        },
        "animation.humanoid.damage_nearby_mobs": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ "-45.0-this", "-this", "-this" ]
                },
                "leftleg": {
                    "rotation": [ "45.0-this", "-0.1-this", "-0.1-this" ]
                },
                "rightarm": {
                    "rotation": [ "45.0-this", "-this", "-this" ]
                },
                "rightleg": {
                    "rotation": [ "-45.0-this", "0.1-this", "0.1-this" ]
                }
            }
        },
        "animation.humanoid.holding": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ "variable.is_holding_left ? (-this * 0.5 - 18.0) : 0.0", 0.0, 0.0 ]
                },
                "rightarm": {
                    "rotation": [ "variable.is_holding_right ? (-this * 0.5 - 18.0) : 0.0", 0.0, 0.0 ]
                }
            }
        },
        "animation.humanoid.look_at_target.default": {
            "loop": true,
            "bones": {
                "head": {
                    "relative_to": {
                        "rotation": "entity"
                    },
                    "rotation": [ "query.target_x_rotation", "query.target_y_rotation", 0.0 ]
                }
            }
        },
        "animation.humanoid.look_at_target.gliding": {
            "loop": true,
            "bones": {
                "head": {
                    "rotation": [ -45.0, "query.target_y_rotation", 0.0 ]
                }
            }
        },
        "animation.humanoid.look_at_target.swimming": {
            "loop": true,
            "bones": {
                "head": {
                    "rotation": [ "math.lerp(query.target_x_rotation, -45.0, variable.swim_amount)", "query.target_y_rotation", 0.0 ]
                }
            }
        },
        "animation.humanoid.move": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ "variable.tcos0", 0.0, 0.0 ]
                },
                "leftleg": {
                    "rotation": [ "variable.tcos0 * -1.4", -0.1, -0.1 ]
                },
                "rightarm": {
                    "rotation": [ "-variable.tcos0", 0.0, 0.0 ]
                },
                "rightleg": {
                    "rotation": [ "variable.tcos0 * 1.4", 0.1, 0.1 ]
                }
            }
        },
        "animation.humanoid.riding.body": {
            "loop": true,
            "bones": {
                "body": {
                    "position": [ 0.0, "variable.riding_y_offset ?? 0.0", 0.0 ]
                }
            }
        },
        "animation.humanoid.riding.arms": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [ -36.0, 0.0, 0.0 ]
                },
                "rightarm": {
                    "rotation": [ -36.0, 0.0, 0.0 ]
                }
            }
        },
        "animation.humanoid.riding.legs": {
            "loop": true,
            "bones": {
                "leftleg": {
                    "rotation": [ "-81.0 - this", "-18.0 - this", "-this" ]
                },
                "rightleg": {
                    "rotation": [ "-81.0 - this", "18.0 - this", "-this" ]
                }
            }
        },
        "animation.humanoid.sneaking": {
            "loop": true,
            "bones": {
                "body": {
                    "rotation": [ "0.5 - this", 0.0, 0.0 ]
                },
                "head": {
                    "position": [ 0.0, 1.0, 0.0 ]
                },
                "leftarm": {
                    "rotation": [ 72.0, 0.0, 0.0 ]
                },
                "leftleg": {
                    "position": [ 0.0, -3.1, 3.9 ]
                },
                "rightarm": {
                    "rotation": [ 72.0, 0.0, 0.0 ]
                },
                "rightleg": {
                    "position": [ 0.0, -2.9, 4.1 ]
                }
            }
        },
        "animation.humanoid.swimming": {
            "animation_length": 1.3,
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": {
                        "0.7": {
                            "post": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)" ],
                            "pre": [ "math.lerp(this, 0.0, variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)", "math.lerp(this, 180.0 - 0.01877 * (-65.0 * math.mod(query.modified_distance_moved, 26.0) + math.mod(query.modified_distance_moved, 26.0) * math.mod(query.modified_distance_moved, 26.0)), variable.leftarmswim_amount)" ]
                        },
                        "1.1": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)" ],
                        "1.3": {
                            "post": [ "math.lerp(this, 90.0 - (22.5 * math.mod(query.modified_distance_moved, 26.0)), variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)" ],
                            "pre": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)", "math.lerp(this, 180.0, variable.leftarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.leftarmswim_amount)" ]
                        }
                    }
                },
                "leftleg": {
                    "rotation": [ "math.lerp(this, math.cos(query.modified_distance_moved * 19.5 + 180.0) * 17.2, variable.leftarmswim_amount) - this", -0.1, -0.1 ]
                },
                "rightarm": {
                    "rotation": {
                        "0.7": {
                            "post": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)" ],
                            "pre": [ "math.lerp(this, 0.0, variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)", "math.lerp(this, -0.1019 * (-65.0 * math.mod(query.modified_distance_moved, 26.0) + math.mod(query.modified_distance_moved, 26.0) * math.mod(query.modified_distance_moved, 26.0)), variable.rightarmswim_amount)" ]
                        },
                        "1.1": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)" ],
                        "1.3": {
                            "post": [ "math.lerp(this, 90.0 - (22.5 * math.mod(query.modified_distance_moved, 26.0)), variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)" ],
                            "pre": [ "math.lerp(this, 11.25 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)", "math.lerp(this, 180.0, variable.rightarmswim_amount)", "math.lerp(this, 72.77 + 13.4 * math.mod(query.modified_distance_moved, 26.0), variable.rightarmswim_amount)" ]
                        }
                    }
                },
                "rightleg": {
                    "rotation": [ "math.lerp(this, math.cos(query.modified_distance_moved * 19.5) * 17.2, variable.leftarmswim_amount) - this", 0.1, 0.1 ]
                }
            }
        },
        "animation.humanoid.use_item_progress": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [ "variable.use_item_startup_progress * -60.0 + variable.use_item_interval_progress * 11.25", "variable.use_item_startup_progress * -22.5 + variable.use_item_interval_progress * 11.25", "variable.use_item_startup_progress * -5.625 + variable.use_item_interval_progress * 11.25" ]
                }
            }
        },
        "animation.humanoid.melee_spear_hold": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this",
                        0.0
                    ]
                },
                "rightitem": {
                    "position": [ 0.0, -1.5, -1.5 ]
                }
            }
        },
        // Same as "animation.humanoid.melee_spear_hold", but with the "leftarm" always matching the rotation of "rightarm". 
        "animation.zombie.melee_spear_hold": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this",
                        0.0
                    ]
                },
                "rightarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this",
                        0.0
                    ]
                },
                "rightitem": {
                    "position": [ 0.0, -1.5, -1.5 ]
                }
            }
        },
        "animation.humanoid.melee_spear_use": {
            "loop": true,
            "bones": {
                "rightarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this + v.tp_melee_spear_use_arm_rotation_x",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this + v.tp_melee_spear_use_arm_rotation_y",
                        "v.tp_melee_spear_use_arm_rotation_z"
                    ]
                },
                "rightitem": {
                    "position": [ 0.0, -1.5, -1.5 ],
                    "rotation": [ "v.tp_melee_spear_use_item_rotation_x", 0.0, 0.0 ]
                }
            }
        },
        // Same as "animation.humanoid.melee_spear_use", but with the "leftarm" always matching the rotation of "rightarm". 
        "animation.zombie.melee_spear_use": {
            "loop": true,
            "bones": {
                "leftarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this + v.tp_melee_spear_use_arm_rotation_x",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this - v.tp_melee_spear_use_arm_rotation_y",
                        "v.tp_melee_spear_use_arm_rotation_z"
                    ]
                },
                "rightarm": {
                    "rotation": [
                        "v.tp_melee_spear_base_arm_rotation_x + q.target_x_rotation - q.is_sneaking * 27.0 - this + v.tp_melee_spear_use_arm_rotation_x",
                        "math.clamp(q.target_y_rotation, -60.0, 45.0) - this + v.tp_melee_spear_use_arm_rotation_y",
                        "v.tp_melee_spear_use_arm_rotation_z"
                    ]
                },
                "rightitem": {
                    "position": [ 0.0, -1.5, -1.5 ],
                    "rotation": [ "v.tp_melee_spear_use_item_rotation_x", 0.0, 0.0 ]
                }
            }
        }
    }
}
