minecraft-src/net/minecraft/client/renderer/entity/IllagerRenderer.java
2025-07-04 02:49:36 +03:00

30 lines
1.4 KiB
Java

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<T extends AbstractIllager, S extends IllagerRenderState> extends MobRenderer<T, S, IllagerModel<S>> {
protected IllagerRenderer(EntityRendererProvider.Context context, IllagerModel<S> 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();
}
}