package net.minecraft.client.renderer.entity; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.IllagerModel; import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; import net.minecraft.client.renderer.entity.state.IllagerRenderState; import net.minecraft.world.entity.monster.AbstractIllager; import net.minecraft.world.item.CrossbowItem; @Environment(EnvType.CLIENT) public abstract class IllagerRenderer extends MobRenderer> { protected IllagerRenderer(EntityRendererProvider.Context context, IllagerModel model, float shadowRadius) { super(context, model, shadowRadius); this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getItemRenderer())); } public void extractRenderState(T entity, S reusedState, float partialTick) { super.extractRenderState(entity, reusedState, partialTick); reusedState.isRiding = entity.isPassenger(); reusedState.mainArm = entity.getMainArm(); reusedState.armPose = entity.getArmPose(); reusedState.maxCrossbowChargeDuration = reusedState.armPose == AbstractIllager.IllagerArmPose.CROSSBOW_CHARGE ? CrossbowItem.getChargeDuration(entity.getUseItem(), entity) : 0; reusedState.ticksUsingItem = entity.getTicksUsingItem(); reusedState.attackAnim = entity.getAttackAnim(partialTick); reusedState.isAggressive = entity.isAggressive(); } }