ArmorStandRenderer.java
net.minecraft.client.renderer.entity.ArmorStandRenderer
信息
- 全限定名:net.minecraft.client.renderer.entity.ArmorStandRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.entity
- 源码路径:src/main/java/net/minecraft/client/renderer/entity/ArmorStandRenderer.java
- 起始行号:L25
- 继承:LivingEntityRenderer<ArmorStand,ArmorStandRenderState,ArmorStandArmorModel>
- 职责:
TODO
字段/常量
-
DEFAULT_SKIN_LOCATION- 类型:
Identifier - 修饰符:
public static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
bigModel- 类型:
ArmorStandArmorModel - 修饰符:
private final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
smallModel- 类型:
ArmorStandArmorModel - 修饰符:
private final - 源码定位:
L28 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ArmorStandRenderer(EntityRendererProvider.Context context) @ L30
- 构造器名:ArmorStandRenderer
- 源码定位:L30
- 修饰符:public
参数:
- context: EntityRendererProvider.Context
说明:
TODO
方法
下面的方法块按源码顺序生成。
public Identifier getTextureLocation(ArmorStandRenderState state) @ L46
- 方法名:getTextureLocation
- 源码定位:L46
- 返回类型:Identifier
- 修饰符:public
参数:
- state: ArmorStandRenderState
说明:
TODO
public ArmorStandRenderState createRenderState() @ L50
- 方法名:createRenderState
- 源码定位:L50
- 返回类型:ArmorStandRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void extractRenderState(ArmorStand entity, ArmorStandRenderState state, float partialTicks) @ L54
- 方法名:extractRenderState
- 源码定位:L54
- 返回类型:void
- 修饰符:public
参数:
- entity: ArmorStand
- state: ArmorStandRenderState
- partialTicks: float
说明:
TODO
public void submit(ArmorStandRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L71
- 方法名:submit
- 源码定位:L71
- 返回类型:void
- 修饰符:public
参数:
- state: ArmorStandRenderState
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- camera: CameraRenderState
说明:
TODO
protected void setupRotations(ArmorStandRenderState state, PoseStack poseStack, float bodyRot, float entityScale) @ L76
- 方法名:setupRotations
- 源码定位:L76
- 返回类型:void
- 修饰符:protected
参数:
- state: ArmorStandRenderState
- poseStack: PoseStack
- bodyRot: float
- entityScale: float
说明:
TODO
protected boolean shouldShowName(ArmorStand entity, double distanceToCameraSq) @ L83
- 方法名:shouldShowName
- 源码定位:L83
- 返回类型:boolean
- 修饰符:protected
参数:
- entity: ArmorStand
- distanceToCameraSq: double
说明:
TODO
protected RenderType getRenderType(ArmorStandRenderState state, boolean isBodyVisible, boolean forceTransparent, boolean appearGlowing) @ L87
- 方法名:getRenderType
- 源码定位:L87
- 返回类型:RenderType
- 修饰符:protected
参数:
- state: ArmorStandRenderState
- isBodyVisible: boolean
- forceTransparent: boolean
- appearGlowing: boolean
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ArmorStandRenderer extends LivingEntityRenderer<ArmorStand, ArmorStandRenderState, ArmorStandArmorModel> {
public static final Identifier DEFAULT_SKIN_LOCATION = Identifier.withDefaultNamespace("textures/entity/armorstand/armorstand.png");
private final ArmorStandArmorModel bigModel = this.getModel();
private final ArmorStandArmorModel smallModel;
public ArmorStandRenderer(EntityRendererProvider.Context context) {
super(context, new ArmorStandModel(context.bakeLayer(ModelLayers.ARMOR_STAND)), 0.0F);
this.smallModel = new ArmorStandModel(context.bakeLayer(ModelLayers.ARMOR_STAND_SMALL));
this.addLayer(
new HumanoidArmorLayer<>(
this,
ArmorModelSet.bake(ModelLayers.ARMOR_STAND_ARMOR, context.getModelSet(), ArmorStandArmorModel::new),
ArmorModelSet.bake(ModelLayers.ARMOR_STAND_SMALL_ARMOR, context.getModelSet(), ArmorStandArmorModel::new),
context.getEquipmentRenderer()
)
);
this.addLayer(new ItemInHandLayer<>(this));
this.addLayer(new WingsLayer<>(this, context.getModelSet(), context.getEquipmentRenderer()));
this.addLayer(new CustomHeadLayer<>(this, context.getModelSet(), context.getPlayerSkinRenderCache()));
}
public Identifier getTextureLocation(ArmorStandRenderState state) {
return DEFAULT_SKIN_LOCATION;
}
public ArmorStandRenderState createRenderState() {
return new ArmorStandRenderState();
}
public void extractRenderState(ArmorStand entity, ArmorStandRenderState state, float partialTicks) {
super.extractRenderState(entity, state, partialTicks);
HumanoidMobRenderer.extractHumanoidRenderState(entity, state, partialTicks, this.itemModelResolver);
state.yRot = Mth.rotLerp(partialTicks, entity.yRotO, entity.getYRot());
state.isMarker = entity.isMarker();
state.isSmall = entity.isSmall();
state.showArms = entity.showArms();
state.showBasePlate = entity.showBasePlate();
state.bodyPose = entity.getBodyPose();
state.headPose = entity.getHeadPose();
state.leftArmPose = entity.getLeftArmPose();
state.rightArmPose = entity.getRightArmPose();
state.leftLegPose = entity.getLeftLegPose();
state.rightLegPose = entity.getRightLegPose();
state.wiggle = (float)(entity.level().getGameTime() - entity.lastHit) + partialTicks;
}
public void submit(ArmorStandRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
this.model = state.isSmall ? this.smallModel : this.bigModel;
super.submit(state, poseStack, submitNodeCollector, camera);
}
protected void setupRotations(ArmorStandRenderState state, PoseStack poseStack, float bodyRot, float entityScale) {
poseStack.mulPose(Axis.YP.rotationDegrees(180.0F - bodyRot));
if (state.wiggle < 5.0F) {
poseStack.mulPose(Axis.YP.rotationDegrees(Mth.sin(state.wiggle / 1.5F * (float) Math.PI) * 3.0F));
}
}
protected boolean shouldShowName(ArmorStand entity, double distanceToCameraSq) {
return entity.isCustomNameVisible();
}
protected @Nullable RenderType getRenderType(ArmorStandRenderState state, boolean isBodyVisible, boolean forceTransparent, boolean appearGlowing) {
if (!state.isMarker) {
return super.getRenderType(state, isBodyVisible, forceTransparent, appearGlowing);
} else {
Identifier texture = this.getTextureLocation(state);
if (forceTransparent) {
return RenderTypes.entityTranslucent(texture, false);
} else {
return isBodyVisible ? RenderTypes.entityCutout(texture, false) : null;
}
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ArmorStandModel()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ArmorModelSet.bake()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
HumanoidMobRenderer.extractHumanoidRenderState()
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
ArmorStandRenderState()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderTypes.entityCutout(), RenderTypes.entityTranslucent()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.rotLerp(), Mth.sin()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: