{
  "format_version": "1.8.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "minecraft:wolf",
      "materials": { "default": "wolf" },
      "textures": {
        "default": "textures/entity/wolf/wolf",
        "angry": "textures/entity/wolf/wolf_angry",
        "tame": "textures/entity/wolf/wolf_tame"
      },
      "geometry": {
        "default": "geometry.wolf"
      },
      "scripts": {
        "pre_animation": [
          "variable.body_shake_angle = 0.05 * query.frame_alpha + query.shake_angle;",
          "variable.body_roll_progress = Math.clamp((variable.body_shake_angle - 0.16) / 1.8, 0, 1);",
          "variable.body_rot_z = Math.sin(variable.body_roll_progress * 180) * Math.sin(variable.body_roll_progress * 1980) * 27;",
          "variable.upper_body_roll_progress = Math.clamp((variable.body_shake_angle - 0.08) / 1.8, 0, 1);",
          "variable.upper_body_rot_z = (Math.sin(variable.upper_body_roll_progress * 180) * Math.sin(variable.upper_body_roll_progress * 1980) * 27) - variable.body_rot_z;",
          "variable.tail_roll_progress = Math.clamp((variable.body_shake_angle - 0.2) / 1.8, 0, 1);",
          "variable.tail_rot_z = (Math.sin(variable.tail_roll_progress * 180) * Math.sin(variable.tail_roll_progress * 1980) * 27) - variable.body_rot_z;",
          "variable.head_roll_progress = Math.clamp(variable.body_shake_angle / 1.8, 0, 1);",
          "variable.head_rot_z = (Math.sin(variable.head_roll_progress * 180) * Math.sin(variable.head_roll_progress * 1980) * 27) - variable.body_rot_z;"
        ]
      },
      "animations": {
        "wolf_setup": "animation.wolf.setup",
        "wolf_baby_scaling": "animation.wolf.baby_scaling",
        "wolf_look_at": "animation.common.look_at_target",
        "wolf_head_rot_z": "animation.wolf.head_rot_z",
        "wolf_tail_default": "animation.wolf.tail_default",
        "wolf_angry": "animation.wolf.angry",
        "wolf_sitting": "animation.wolf.sitting",
        "wolf_shaking": "animation.wolf.shaking",
        "wolf_leg_default": "animation.wolf.leg_default"
      },
      "animation_controllers": [
        { "wolf_setup": "controller.animation.wolf.setup" },
        { "wolf_look_at": "controller.animation.wolf.look_at" },
        { "wolf_baby_scaling": "controller.animation.wolf.baby_scaling" },
        { "wolf_head_rot_z": "controller.animation.wolf.head_rot_z" },
        { "wolf_tail_default": "controller.animation.wolf.tail_default" },
        { "wolf_angry": "controller.animation.wolf.angry" },
        { "wolf_sitting": "controller.animation.wolf.sitting" },
        { "wolf_shaking": "controller.animation.wolf.shaking" }
      ],
      "render_controllers": [ "controller.render.wolf" ],
      "spawn_egg": {
        "texture": "spawn_egg",
        "texture_index": 4
      }
    }
  }
}