{
    "format_version": "1.8.0",
    "minecraft:client_entity": {
        "description": {
            "identifier": "minecraft:wither",
            "materials": {
                "default": "wither_boss",
                "armor": "wither_boss_armor",
                "UP_box": "entity_emissive_alpha"
            },
            "textures": {
                "UP_box": "models/entity/UP_box",
                "transparent": "models/entity/transparent",
                "default": "textures/entity/wither_boss/wither",
                "armor_white": "textures/entity/wither_boss/wither_armor_white",
                "armor_blue": "textures/entity/wither_boss/wither_armor_blue",
                "invulnerable": "textures/entity/wither_boss/wither_invulnerable"
            },
            "geometry": {
                "default": "geometry.witherBoss",
                "armor": "geometry.witherBoss.armor",
                "target_rotate": "geometry.target_rotate_28",
                "block": "geometry.block_28"
            },
            "scripts": {
                "pre_animation": [
                    "variable.base_scale = 2;",
                    "variable.swell_clamped = Math.clamp(query.swell_amount, 0.0, 1.0);",
                    "variable.wobble = 1.0 + Math.sin(query.swell_amount * 5730) * query.swell_amount * 0.01;",
                    "variable.swell_adjustment = Math.pow(variable.swell_clamped, 4);",
                    "variable.scale_xz = (1.0 + variable.swell_adjustment * 0.4) * variable.wobble;",
                    "variable.scale_y = (1.0 + variable.swell_adjustment * 0.1) / variable.wobble;",
                    "variable.body_base_rotation = Math.cos(query.life_time * 114.6);",
                    "variable.upper_body_rotation = (0.065 + 0.5 * variable.body_base_rotation) * 180 + query.target_x_rotation;",
                    "variable.is_invulnerable = query.invulnerable_ticks > 0.0;",
                    "variable.display_normal_skin = (query.invulnerable_ticks <= 0) || ((query.invulnerable_ticks <= 80) && (Math.mod(query.invulnerable_ticks / 5, 2) == 1));"
                ],
                "scalex": "variable.scale_xz * variable.base_scale",
                "scaley": "variable.scale_y * variable.base_scale",
                "scalez": "variable.scale_xz * variable.base_scale"
            },
            "particle_effects": {

                "invisible": "invisible",
                "status_setup": "status_setup",
                "health_setup": "health_setup",
                "hostile_warnings": "hostile_warnings",
                "pos": "pos",
                "hostile_distance_setup": "hostile_distance_setup",
                "locate_line": "locate_line",
                "locate_mob": "locate_wither",
				"pos_egg": "pos_wither"

            },
            "sound_effects": {
                "mob_sound": "loud_mob.wither.ambient"
            },

            "animations": {
                "target_rotate": "animation.target_rotate",
                "camera_rotate": "animation.camera_rotate",

                "scale": "animation.wither_boss.scale",
                "move": "animation.wither_boss.move",
                "look_at_target": "animation.wither_boss.look_at_target"
            },
            "animation_controllers": [
					{"1": "controller.animation.target_rotate_setup"}, 
					{"1.1": "controller.animation.camera_rotate_setup"}, 
					{"2": "controller.animation.invisible"}, 
					{"3": "controller.animation.status"}, 
					{"4": "controller.animation.health"}, 
					{"5": "controller.animation.hostile_warnings"}, 
					{"6": "controller.animation.pos"}, 
					{"locate": "controller.animation.locate"},
					{"hostile_distance": "controller.animation.hostile_distance"},
                {
                    "move": "controller.animation.wither_boss.move"}
            ],
            "render_controllers": [
                "controller.render.target_rotate",
                "controller.render.block",
                "controller.render.wither_boss",
                "controller.render.wither_boss_armor_white",
                "controller.render.wither_boss_armor_blue"
            ]
        }
    }
}
