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();
}
}
}引用的其他类
-
- 引用位置:
构造调用 - 关联成员:
CopperGolemModel()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
BlockDisplayContext.create()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ArmedEntityRenderState.extractArmedEntityRenderState()
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
CopperGolemRenderState()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CopperGolemOxidationLevels.getOxidationLevel()
- 引用位置: