package net.minecraft.client.model;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.monster.Monster;

public abstract class AbstractZombieModel<T extends Monster> extends HumanoidModel<T> {
    protected AbstractZombieModel(final float float1, final float float2, final int integer3, final int integer4) {
        super(float1, float2, integer3, integer4);
    }
    
    @Override
    public void setupAnim(final T aww, final float float2, final float float3, final float float4, final float float5, final float float6) {
        super.setupAnim(aww, float2, float3, float4, float5, float6);
        final boolean boolean8 = this.isAggressive(aww);
        final float float7 = Mth.sin(this.attackTime * 3.1415927f);
        final float float8 = Mth.sin((1.0f - (1.0f - this.attackTime) * (1.0f - this.attackTime)) * 3.1415927f);
        this.rightArm.zRot = 0.0f;
        this.leftArm.zRot = 0.0f;
        this.rightArm.yRot = -(0.1f - float7 * 0.6f);
        this.leftArm.yRot = 0.1f - float7 * 0.6f;
        final float float9 = -3.1415927f / (boolean8 ? 1.5f : 2.25f);
        this.rightArm.xRot = float9;
        this.leftArm.xRot = float9;
        final ModelPart rightArm = this.rightArm;
        rightArm.xRot += float7 * 1.2f - float8 * 0.4f;
        final ModelPart leftArm = this.leftArm;
        leftArm.xRot += float7 * 1.2f - float8 * 0.4f;
        final ModelPart rightArm2 = this.rightArm;
        rightArm2.zRot += Mth.cos(float4 * 0.09f) * 0.05f + 0.05f;
        final ModelPart leftArm2 = this.leftArm;
        leftArm2.zRot -= Mth.cos(float4 * 0.09f) * 0.05f + 0.05f;
        final ModelPart rightArm3 = this.rightArm;
        rightArm3.xRot += Mth.sin(float4 * 0.067f) * 0.05f;
        final ModelPart leftArm3 = this.leftArm;
        leftArm3.xRot -= Mth.sin(float4 * 0.067f) * 0.05f;
    }
    
    public abstract boolean isAggressive(final T aww);
}
