minecraft-src/net/minecraft/client/renderer/entity/CreakingRenderer.java
2025-07-04 03:15:13 +03:00

48 lines
2.2 KiB
Java

package net.minecraft.client.renderer.entity;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.model.CreakingModel;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.layers.LivingEntityEmissiveLayer;
import net.minecraft.client.renderer.entity.state.CreakingRenderState;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.monster.creaking.Creaking;
@Environment(EnvType.CLIENT)
public class CreakingRenderer<T extends Creaking> extends MobRenderer<T, CreakingRenderState, CreakingModel> {
private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/creaking/creaking.png");
private static final ResourceLocation EYES_TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/creaking/creaking_eyes.png");
public CreakingRenderer(EntityRendererProvider.Context context) {
super(context, new CreakingModel(context.bakeLayer(ModelLayers.CREAKING)), 0.6F);
this.addLayer(
new LivingEntityEmissiveLayer<>(this, EYES_TEXTURE_LOCATION, (creakingRenderState, f) -> 1.0F, CreakingModel::getHeadModelParts, RenderType::eyes, true)
);
}
public ResourceLocation getTextureLocation(CreakingRenderState creakingRenderState) {
return TEXTURE_LOCATION;
}
public CreakingRenderState createRenderState() {
return new CreakingRenderState();
}
public void extractRenderState(T creaking, CreakingRenderState creakingRenderState, float f) {
super.extractRenderState(creaking, creakingRenderState, f);
creakingRenderState.attackAnimationState.copyFrom(creaking.attackAnimationState);
creakingRenderState.invulnerabilityAnimationState.copyFrom(creaking.invulnerabilityAnimationState);
creakingRenderState.deathAnimationState.copyFrom(creaking.deathAnimationState);
if (creaking.isTearingDown()) {
creakingRenderState.deathTime = 0.0F;
creakingRenderState.hasRedOverlay = false;
creakingRenderState.eyesGlowing = creaking.hasGlowingEyes();
} else {
creakingRenderState.eyesGlowing = creaking.isActive();
}
creakingRenderState.canMove = creaking.canMove();
}
}