WardenRenderer.java

net.minecraft.client.renderer.entity.WardenRenderer

信息

  • 全限定名:net.minecraft.client.renderer.entity.WardenRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/WardenRenderer.java
  • 起始行号:L15
  • 继承:MobRenderer<Warden,WardenRenderState,WardenModel>
  • 职责:

    TODO

字段/常量

  • TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L16
    • 说明:

      TODO

  • BIOLUMINESCENT_LAYER_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L17
    • 说明:

      TODO

  • HEART_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L18
    • 说明:

      TODO

  • PULSATING_SPOTS_TEXTURE_1

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L19
    • 说明:

      TODO

  • PULSATING_SPOTS_TEXTURE_2

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L20
    • 说明:

      TODO

内部类/嵌套类型

构造器

public WardenRenderer(EntityRendererProvider.Context context) @ L22

  • 构造器名:WardenRenderer
  • 源码定位:L22
  • 修饰符:public

参数:

  • context: EntityRendererProvider.Context

说明:

TODO

方法

下面的方法块按源码顺序生成。

public Identifier getTextureLocation(WardenRenderState state) @ L70

  • 方法名:getTextureLocation
  • 源码定位:L70
  • 返回类型:Identifier
  • 修饰符:public

参数:

  • state: WardenRenderState

说明:

TODO

public WardenRenderState createRenderState() @ L74

  • 方法名:createRenderState
  • 源码定位:L74
  • 返回类型:WardenRenderState
  • 修饰符:public

参数:

说明:

TODO

public void extractRenderState(Warden entity, WardenRenderState state, float partialTicks) @ L78

  • 方法名:extractRenderState
  • 源码定位:L78
  • 返回类型:void
  • 修饰符:public

参数:

  • entity: Warden
  • state: WardenRenderState
  • partialTicks: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class WardenRenderer extends MobRenderer<Warden, WardenRenderState, WardenModel> {
    private static final Identifier TEXTURE = Identifier.withDefaultNamespace("textures/entity/warden/warden.png");
    private static final Identifier BIOLUMINESCENT_LAYER_TEXTURE = Identifier.withDefaultNamespace("textures/entity/warden/warden_bioluminescent_layer.png");
    private static final Identifier HEART_TEXTURE = Identifier.withDefaultNamespace("textures/entity/warden/warden_heart.png");
    private static final Identifier PULSATING_SPOTS_TEXTURE_1 = Identifier.withDefaultNamespace("textures/entity/warden/warden_pulsating_spots_1.png");
    private static final Identifier PULSATING_SPOTS_TEXTURE_2 = Identifier.withDefaultNamespace("textures/entity/warden/warden_pulsating_spots_2.png");
 
    public WardenRenderer(EntityRendererProvider.Context context) {
        super(context, new WardenModel(context.bakeLayer(ModelLayers.WARDEN)), 0.9F);
        WardenModel bioluminescentModel = new WardenModel(context.bakeLayer(ModelLayers.WARDEN_BIOLUMINESCENT));
        WardenModel pulsatingSpotsModel = new WardenModel(context.bakeLayer(ModelLayers.WARDEN_PULSATING_SPOTS));
        WardenModel tendrilsModel = new WardenModel(context.bakeLayer(ModelLayers.WARDEN_TENDRILS));
        WardenModel heartModel = new WardenModel(context.bakeLayer(ModelLayers.WARDEN_HEART));
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this,
                renderState -> BIOLUMINESCENT_LAYER_TEXTURE,
                (warden, ageInTicks) -> 1.0F,
                bioluminescentModel,
                RenderTypes::entityTranslucentEmissive,
                false
            )
        );
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this,
                renderState -> PULSATING_SPOTS_TEXTURE_1,
                (warden, ageInTicks) -> Math.max(0.0F, Mth.cos(ageInTicks * 0.045F) * 0.25F),
                pulsatingSpotsModel,
                RenderTypes::entityTranslucentEmissive,
                false
            )
        );
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this,
                renderState -> PULSATING_SPOTS_TEXTURE_2,
                (warden, ageInTicks) -> Math.max(0.0F, Mth.cos(ageInTicks * 0.045F + (float) Math.PI) * 0.25F),
                pulsatingSpotsModel,
                RenderTypes::entityTranslucentEmissive,
                false
            )
        );
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this, renderState -> TEXTURE, (warden, ageInTicks) -> warden.tendrilAnimation, tendrilsModel, RenderTypes::entityTranslucentEmissive, false
            )
        );
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this, renderState -> HEART_TEXTURE, (warden, ageInTicks) -> warden.heartAnimation, heartModel, RenderTypes::entityTranslucentEmissive, false
            )
        );
    }
 
    public Identifier getTextureLocation(WardenRenderState state) {
        return TEXTURE;
    }
 
    public WardenRenderState createRenderState() {
        return new WardenRenderState();
    }
 
    public void extractRenderState(Warden entity, WardenRenderState state, float partialTicks) {
        super.extractRenderState(entity, state, partialTicks);
        state.tendrilAnimation = entity.getTendrilAnimation(partialTicks);
        state.heartAnimation = entity.getHeartAnimation(partialTicks);
        state.roarAnimationState.copyFrom(entity.roarAnimationState);
        state.sniffAnimationState.copyFrom(entity.sniffAnimationState);
        state.emergeAnimationState.copyFrom(entity.emergeAnimationState);
        state.diggingAnimationState.copyFrom(entity.diggingAnimationState);
        state.attackAnimationState.copyFrom(entity.attackAnimationState);
        state.sonicBoomAnimationState.copyFrom(entity.sonicBoomAnimationState);
    }
}

引用的其他类

  • WardenModel

    • 引用位置: 构造调用
    • 关联成员: WardenModel()
  • EntityRendererProvider

    • 引用位置: 参数
  • MobRenderer

    • 引用位置: 继承
  • WardenRenderState

    • 引用位置: 参数/构造调用/返回值
    • 关联成员: WardenRenderState()
  • Identifier

    • 引用位置: 字段/方法调用/返回值
    • 关联成员: Identifier.withDefaultNamespace()
  • Mth

    • 引用位置: 方法调用
    • 关联成员: Mth.cos()
  • Warden

    • 引用位置: 参数