48 lines
2.2 KiB
Java
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();
|
|
}
|
|
}
|