{
  "format_version": "1.10.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "minecraft:player",
      "materials": {
        "default": "entity_alphatest",
        "cape": "entity_alphatest",
        "animated": "player_animated",
        "backpack_animated": "backpack_animated"
      },
      "textures": {
        "default": "textures/entity/steve",
        "cape": "textures/entity/cape_invisible",

        "ice_projectiles": "textures/weapons/ice/projectiles",
        "ice_incantation": "textures/weapons/ice/incantation",

        "backpack": "textures/weapons/backpack"
      },
      "geometry": {
        "default": "geometry.humanoid.custom",
        "cape": "geometry.cape",

        "ice_projectiles": "geometry.ice_projectiles",
        "ice_incantation": "geometry.ice_incantation",
        
        "backpack": "geometry.backpack",

        "locators_extension": "geometry.locators_extension"
      },
      "scripts": {
        "scale": "0.9375",
        "variables": {
          "variable.attack_time": "public"
        },
        "initialize": [
          "variable.is_holding_right = 0.0;",
          "variable.is_blinking = 0.0;",
          "variable.last_blink_time = 0.0;",
          "variable.hand_bob = 0.0;"
        ],
        "pre_animation": [
          "variable.helmet_layer_visible = 1.0;",
          "variable.leg_layer_visible = 1.0;",
          "variable.boot_layer_visible = 1.0;",
          "variable.chest_layer_visible = 1.0;",
          "variable.attack_body_rot_y = Math.sin(360*Math.sqrt(variable.attack_time)) * 5.0;",
          "variable.tcos0 = (math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed / variable.gliding_speed_value) * 57.3;",
          "variable.first_person_rotation_factor = math.sin((1 - variable.attack_time) * 180.0);",
          "variable.first_person_rotation_factor_forced = math.sin((1 - query.life_time) * 180.0);",
          "variable.hand_bob = query.life_time < 0.01 ? 0.0 : variable.hand_bob + ((query.is_on_ground && query.is_alive ? math.clamp(math.sqrt(math.pow(query.position_delta(0), 2.0) + math.pow(query.position_delta(2), 2.0)), 0.0, 0.1) : 0.0) - variable.hand_bob) * 0.02;",

          "variable.map_angle = math.clamp(1 - variable.player_x_rotation / 45.1, 0.0, 1.0);",
          "variable.item_use_normalized = query.main_hand_item_use_duration / query.main_hand_item_max_duration;",


          "variable.tcos0_fire_sword = (math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed / variable.gliding_speed_value) * 57.3;",


          "variable.bfaxe = query.get_equipped_item_name('main_hand') == 'bfaxe';",
          "variable.bfbook = query.get_equipped_item_name('main_hand') == 'bfbook';",
          "variable.fire_sword = query.get_equipped_item_name('main_hand') == 'fire_sword';",
          "variable.frost_sword = query.get_equipped_item_name('main_hand') == 'frost_sword';",
          "variable.hammer = query.get_equipped_item_name('main_hand') == 'hammer';",
          "variable.nunchaku = query.get_equipped_item_name('main_hand') == 'nunchaku';",
          "variable.katana = query.get_equipped_item_name('main_hand') == 'katana';",
          "variable.ice_fruit = query.get_equipped_item_name('main_hand') == 'ice_fruit';",
          "variable.warden_reap = query.get_equipped_item_name('main_hand') == 'warden_reap';",
          "variable.warden_sword = query.get_equipped_item_name('main_hand') == 'warden_sword';",
          "variable.big_blaster = query.get_equipped_item_name('main_hand') == 'big_blaster';",
          "variable.small_blaster = query.get_equipped_item_name('main_hand') == 'small_blaster';",

          "variable.show_right_hand = variable.bfaxe || variable.bfbook || variable.fire_sword || variable.frost_sword;",
          "variable.show_left_hand = query.is_using_item && variable.bfbook;",

          "variable.hold_custom_weapon = variable.bfaxe || variable.bfbook || variable.fire_sword || variable.frost_sword || variable.warden_reap || variable.warden_sword;",
          "variable.cancel_attack_fp_animation = variable.fire_sword || variable.frost_sword || variable.nunchaku || variable.katana || variable.warden_reap || variable.warden_sword;",
          "variable.cancel_attack_tp_animation = variable.fire_sword || variable.frost_sword || variable.nunchaku || variable.katana || variable.warden_reap || variable.warden_sword;",
          "variable.cancel_item_swing = variable.show_right_hand || variable.warden_reap || variable.warden_sword;",
          "variable.cancel_moving_movement = variable.fire_sword || variable.warden_reap || variable.warden_sword;",

          "variable.need_locators_extension = variable.frost_sword || variable.bfbook || variable.warden_reap || variable.warden_sword;",
          "variable.correction_first_person_angle = (variable.bfbook || variable.fire_sword || variable.frost_sword || variable.warden_reap || variable.warden_sword) && variable.is_first_person;",

          "variable.is_backpack_charged = query.is_baby;"
        ],
        "animate": [
          { "root": "!variable.correction_first_person_angle" },
          { "item_attack": "variable.is_first_person && (variable.nunchaku || variable.katana)" },
          { "correction_first_person_angle": "variable.correction_first_person_angle"},

          { "fire_sword_root": "variable.fire_sword" },
          { "frost_sword_root": "variable.frost_sword" },
          { "bfbook_root": "variable.bfbook" },
          { "hammer_invocation_controller": "variable.hammer" },
          { "katana_controller": "variable.katana" },
          { "nunchaku_controller": "variable.nunchaku" },

          { "warden_sword_root": "variable.warden_sword" },
          { "warden_reap_root": "variable.warden_reap" },

          { "ice_power_controller" : "q.variant >= 100"},


          { "small_blaster_root" : "variable.small_blaster" },
          { "big_blaster_root" : "variable.big_blaster" }
        ]
      },
      "animations": {
        "root": "controller.animation.player.root",
        "base_controller": "controller.animation.player.base",
        "hudplayer": "controller.animation.player.hudplayer",
        "humanoid_base_pose": "animation.humanoid.base_pose",
        "look_at_target": "controller.animation.humanoid.look_at_target",
        "look_at_target_ui": "animation.player.look_at_target.ui",
        "look_at_target_default": "animation.humanoid.look_at_target.default",
        "look_at_target_gliding": "animation.humanoid.look_at_target.gliding",
        "look_at_target_swimming": "animation.humanoid.look_at_target.swimming",
        "look_at_target_inverted": "animation.player.look_at_target.inverted",
        "cape": "animation.player.cape",
        "move.arms": "animation.player.move.arms",
        "move.legs": "animation.player.move.legs",
        "swimming": "animation.player.swim",
        "swimming.legs": "animation.player.swim.legs",
        "riding.arms": "animation.player.riding.arms",
        "riding.legs": "animation.player.riding.legs",
        "holding": "animation.player.holding",
        "brandish_spear": "animation.humanoid.brandish_spear",
        "holding_spyglass": "animation.humanoid.holding_spyglass",
        "charging": "animation.humanoid.charging",
        "attack.positions": "animation.player.attack.positions",
        "attack.rotations": "animation.player.attack.rotations",
        "sneaking": "animation.player.sneaking",
        "bob": "animation.player.bob",
        "damage_nearby_mobs": "animation.humanoid.damage_nearby_mobs",
        "bow_and_arrow": "animation.humanoid.bow_and_arrow",
        "use_item_progress": "animation.humanoid.use_item_progress",
        "skeleton_attack": "animation.skeleton.attack",
        "sleeping": "animation.player.sleeping",
        "first_person_base_pose": "animation.player.first_person.base_pose",
        "first_person_empty_hand": "animation.player.first_person.empty_hand",
        "first_person_swap_item": "animation.player.first_person.swap_item",
        "first_person_shield_block": "animation.player.first_person.shield_block",
        "first_person_attack_controller": "controller.animation.player.first_person_attack",
        "first_person_attack_rotation": "animation.player.first_person.attack_rotation",
        "first_person_vr_attack_rotation": "animation.player.first_person.vr_attack_rotation",
        "first_person_walk": "animation.player.first_person.walk",
        "first_person_map_controller": "controller.animation.player.first_person_map",
        "first_person_map_hold": "animation.player.first_person.map_hold",
        "first_person_map_hold_attack": "animation.player.first_person.map_hold_attack",
        "first_person_map_hold_off_hand": "animation.player.first_person.map_hold_off_hand",
        "first_person_map_hold_main_hand": "animation.player.first_person.map_hold_main_hand",
        "first_person_crossbow_equipped": "animation.player.first_person.crossbow_equipped",
        "third_person_crossbow_equipped": "animation.player.crossbow_equipped",
        "third_person_bow_equipped": "animation.player.bow_equipped",
        "third_person_rocket_launcher_equipped": "animation.player.rocket_launcher_equipped",
        "crossbow_hold": "animation.player.crossbow_hold",
        "crossbow_controller": "controller.animation.player.crossbow",
        "shield_block_main_hand": "animation.player.shield_block_main_hand",
        "shield_block_off_hand": "animation.player.shield_block_off_hand",
        "blink": "controller.animation.persona.blink",
		    "tooting_goat_horn": "animation.humanoid.tooting_goat_horn",

        "correction_first_person_angle": "animation.player.correction_first_person_angle",

        "force_first_person_attack_rotation": "animation.player.first_person.force_attack_rotation",
        "force_third_person_attack_rotation": "animation.player.force_attack",


        "fire_sword_root": "controller.animation.player_fire_sword.root",
        "fire_sword_move_controller": "controller.animation.player_fire_sword.move",
        "fire_sword.first_person.idle": "animation.fire_sword.first_person.idle",
        "fire_sword.third_person.idle": "animation.fire_sword.third_person.idle",
        "fire_sword.first_person.move": "animation.fire_sword.first_person.move",
        "fire_sword.third_person.move": "animation.fire_sword.third_person.move", 
        "fire_sword_attack_controller": "controller.animation.player_fire_sword.attack",
        "fire_sword.first_person.attack": "animation.fire_sword.first_person.attack",
        "fire_sword.third_person.attack": "animation.fire_sword.third_person.attack", 
        "fire_sword.first_person.special_attack": "animation.fire_sword.first_person.special_attack", 
        "fire_sword.third_person.special_attack": "animation.fire_sword.third_person.special_attack",

        "frost_sword_root": "controller.animation.player_frost_sword.root",
        "frost_sword.first_person.idle": "animation.frost_sword.first_person.idle",
        "frost_sword.third_person.idle": "animation.frost_sword.third_person.idle",
        "frost_sword.first_person.attack": "animation.frost_sword.first_person.attack",
        "frost_sword.third_person.attack": "animation.frost_sword.third_person.attack",

        "bfbook_root": "controller.animation.player_bfbook.root",
        "bfbook_idle_controller": "controller.animation.player_bfbook.idle",
        "bfbook.first_person.idle": "animation.bfbook.first_person.idle",
        "bfbook.third_person.idle": "animation.bfbook.third_person.idle",
        "bfbook_use_controller": "controller.animation.player_bfbook.use",
        "bfbook.first_person.use": "animation.bfbook.first_person.use",
        "bfbook.third_person.use": "animation.bfbook.third_person.use",

        "hammer_invocation_controller": "controller.animation.player.hammer_invocation",
        "hammer_invocation": "animation.player.hammer_invocation",

        "item_attack": "animation.player.first_person.attack_rotation_item",
        "katana_controller": "controller.animation.player.katana.attack",
        "attack_third_person.katana": "animation.katana.attack",
        "attack_first_person.katana": "animation.katana.player_view",
        "nunchaku_controller": "controller.animation.player.nunchaku.attack",
        "attack_third_person.nunchaku": "animation.nunchaku.attack",
        "attack_first_person.nunchaku": "animation.nunchaku.player_view",


        "warden_reap_root": "controller.animation.player_warden_reap.root",
        "warden_reap_move_controller": "controller.animation.player_warden_reap.move",
        "warden_reap.first_person.idle": "animation.warden_reap.first_person.idle",
        "warden_reap.third_person.idle": "animation.warden_reap.third_person.idle",
        "warden_reap.first_person.move": "animation.warden_reap.first_person.move",
        "warden_reap.third_person.move": "animation.warden_reap.third_person.move", 
        "warden_reap_attack_controller": "controller.animation.player_warden_reap.attack",
        "warden_reap.first_person.attack": "animation.warden_reap.first_person.attack",
        "warden_reap.third_person.attack": "animation.warden_reap.third_person.attack", 
        "warden_reap.first_person.special_attack": "animation.warden_reap.first_person.special_attack", 
        "warden_reap.third_person.special_attack": "animation.warden_reap.third_person.special_attack",


        "warden_sword_root": "controller.animation.player_warden_sword.root",
        "warden_sword_move_controller": "controller.animation.player_warden_sword.move",
        "warden_sword.first_person.idle": "animation.warden_sword.first_person.idle",
        "warden_sword.third_person.idle": "animation.warden_sword.third_person.idle",
        "warden_sword.first_person.move": "animation.warden_sword.first_person.move",
        "warden_sword.third_person.move": "animation.warden_sword.third_person.move", 
        "warden_sword_attack_controller": "controller.animation.player_warden_sword.attack",
        "warden_sword.first_person.attack": "animation.warden_sword.first_person.attack",
        "warden_sword.third_person.attack": "animation.warden_sword.third_person.attack", 
        "warden_sword.first_person.special_attack": "animation.warden_sword.first_person.special_attack", 
        "warden_sword.third_person.special_attack": "animation.warden_sword.third_person.special_attack",

        "ice_power_controller": "controller.animation.weapon.ice_power",
        "ice_projectiles0": "animation.ice_projectile.fly_0",
        "ice_projectiles1": "animation.ice_projectile.fly_1",
        "ice_projectiles2": "animation.ice_projectile.fly_2",
        "ice_projectiles3": "animation.ice_projectile.fly_3",
        "ice_incantation": "animation.ice_incantation.spawn",

        "small_blaster_root": "controller.animation.player_small_blaster.root",
        "small_blaster_hold_controller": "controller.animation.player_small_blaster.hold",
        "small_blaster.first_person.hold": "animation.small_blaster.first_person.hold",
        "small_blaster.third_person.hold": "animation.small_blaster.third_person.hold",
        "small_blaster_shoot_controller": "controller.animation.player_small_blaster.shoot",
        "small_blaster.first_person.shoot": "animation.small_blaster.first_person.shoot",
        "small_blaster.third_person.shoot": "animation.small_blaster.third_person.shoot",

        "big_blaster_root": "controller.animation.player_big_blaster.root",
        "big_blaster_hold_controller": "controller.animation.player_big_blaster.hold",
        "big_blaster.first_person.hold": "animation.big_blaster.first_person.hold",
        "big_blaster.third_person.hold": "animation.big_blaster.third_person.hold",
        "big_blaster_shoot_controller": "controller.animation.player_big_blaster.shoot",
        "big_blaster.first_person.shoot": "animation.big_blaster.first_person.shoot",
        "big_blaster.third_person.shoot": "animation.big_blaster.third_person.shoot"
      },
      "particle_effects": {
        "fire_sword.special_attack": "df:fire_sword.special_attack",
        "bfbook.particle_in": "df:bfbook.particle_in",
        "bfbook.magic_bullet": "df:bfbook.magic_bullet",

        "frost_sword.ice_explosion": "df:frost_sword.ice_explosion",
        "frost_sword.ice_projection": "df:frost_sword.ice_projection",

        "warden_sword.slash": "df:warden_sword.slash",
        "warden_sword.particle": "df:warden_sword.particle",
        "warden_reap.slash": "df:warden_reap.slash",
        "warden_reap.particle": "df:warden_reap.particle"
      },
      "sound_effects": {
        "attack.frost": "player.attack.frost",
        "attack.book": "player.attack.book",
        "attack.fire": "player.attack.fire",
        "attack.fire_2": "player.attack.fire_2"
      },
      "render_controllers": [
        { "controller.render.player.first_person": "variable.is_first_person" },
        { "controller.render.player.first_person_special_weapon": "variable.is_first_person" },
        { "controller.render.player.third_person": "!variable.is_first_person && !variable.map_face_icon" },
        { "controller.render.player.map": "variable.map_face_icon" },

        { "controller.render.player.ice_power": "query.variant >= 100" },

        { "controller.render.backpack": "q.is_baby && !variable.is_first_person"},

        { "controller.render.player.locators_extension": "variable.need_locators_extension" }
      ],
      "enable_attachables": true
    }
  }
}
