CopperGolemRenderer.java

net.minecraft.client.renderer.entity.CopperGolemRenderer

信息

  • 全限定名:net.minecraft.client.renderer.entity.CopperGolemRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/CopperGolemRenderer.java
  • 起始行号:L27
  • 继承:MobRenderer<CopperGolem,CopperGolemRenderState,CopperGolemModel>
  • 职责:

    TODO

字段/常量

  • BLOCK_DISPLAY_CONTEXT

    • 类型: BlockDisplayContext
    • 修饰符: public static final
    • 源码定位: L28
    • 说明:

      TODO

  • blockModelResolver

    • 类型: BlockModelResolver
    • 修饰符: private final
    • 源码定位: L29
    • 说明:

      TODO

内部类/嵌套类型

构造器

public CopperGolemRenderer(EntityRendererProvider.Context context) @ L31

  • 构造器名:CopperGolemRenderer
  • 源码定位:L31
  • 修饰符:public

参数:

  • context: EntityRendererProvider.Context

说明:

TODO

方法

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

public Identifier getTextureLocation(CopperGolemRenderState state) @ L49

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

参数:

  • state: CopperGolemRenderState

说明:

TODO

private static Function<CopperGolemRenderState,Identifier> getEyeTextureLocationProvider() @ L53

  • 方法名:getEyeTextureLocationProvider
  • 源码定位:L53
  • 返回类型:Function<CopperGolemRenderState,Identifier>
  • 修饰符:private static

参数:

说明:

TODO

public CopperGolemRenderState createRenderState() @ L57

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

参数:

说明:

TODO

public void extractRenderState(CopperGolem entity, CopperGolemRenderState state, float partialTicks) @ L61

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

参数:

  • entity: CopperGolem
  • state: CopperGolemRenderState
  • partialTicks: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class CopperGolemRenderer extends MobRenderer<CopperGolem, CopperGolemRenderState, CopperGolemModel> {
    public static final BlockDisplayContext BLOCK_DISPLAY_CONTEXT = BlockDisplayContext.create();
    private final BlockModelResolver blockModelResolver;
 
    public CopperGolemRenderer(EntityRendererProvider.Context context) {
        super(context, new CopperGolemModel(context.bakeLayer(ModelLayers.COPPER_GOLEM)), 0.5F);
        this.blockModelResolver = context.getBlockModelResolver();
        this.addLayer(
            new LivingEntityEmissiveLayer<>(
                this,
                getEyeTextureLocationProvider(),
                (copperGolem, ageInTicks) -> 1.0F,
                new CopperGolemModel(context.bakeLayer(ModelLayers.COPPER_GOLEM)),
                RenderTypes::eyes,
                false
            )
        );
        this.addLayer(new ItemInHandLayer<>(this));
        this.addLayer(new BlockDecorationLayer<>(this, s -> s.blockOnAntenna, this.model::applyBlockOnAntennaTransform));
        this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getPlayerSkinRenderCache()));
    }
 
    public Identifier getTextureLocation(CopperGolemRenderState state) {
        return CopperGolemOxidationLevels.getOxidationLevel(state.weathering).texture();
    }
 
    private static Function<CopperGolemRenderState, Identifier> getEyeTextureLocationProvider() {
        return renderState -> CopperGolemOxidationLevels.getOxidationLevel(renderState.weathering).eyeTexture();
    }
 
    public CopperGolemRenderState createRenderState() {
        return new CopperGolemRenderState();
    }
 
    public void extractRenderState(CopperGolem entity, CopperGolemRenderState state, float partialTicks) {
        super.extractRenderState(entity, state, partialTicks);
        ArmedEntityRenderState.extractArmedEntityRenderState(entity, state, this.itemModelResolver, partialTicks);
        state.weathering = entity.getWeatherState();
        state.copperGolemState = entity.getState();
        state.idleAnimationState.copyFrom(entity.getIdleAnimationState());
        state.interactionGetItem.copyFrom(entity.getInteractionGetItemAnimationState());
        state.interactionGetNoItem.copyFrom(entity.getInteractionGetNoItemAnimationState());
        state.interactionDropItem.copyFrom(entity.getInteractionDropItemAnimationState());
        state.interactionDropNoItem.copyFrom(entity.getInteractionDropNoItemAnimationState());
        ItemStack antennaItem = entity.getItemBySlot(CopperGolem.EQUIPMENT_SLOT_ANTENNA);
        if (antennaItem.getItem() instanceof BlockItem blockItem) {
            BlockItemStateProperties blockItemState = antennaItem.getOrDefault(DataComponents.BLOCK_STATE, BlockItemStateProperties.EMPTY);
            BlockState blockState = blockItemState.apply(blockItem.getBlock().defaultBlockState());
            this.blockModelResolver.update(state.blockOnAntenna, blockState, BLOCK_DISPLAY_CONTEXT);
        } else {
            state.blockOnAntenna.clear();
        }
    }
}

引用的其他类