PlayerItemInHandLayer.java
net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer
信息
- 全限定名:net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer
- 类型:public class
- 包:net.minecraft.client.renderer.entity.layers
- 源码路径:src/main/java/net/minecraft/client/renderer/entity/layers/PlayerItemInHandLayer.java
- 起始行号:L21
- 继承:ItemInHandLayer<S,M>
- 职责:
TODO
字段/常量
-
X_ROT_MIN- 类型:
float - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
X_ROT_MAX- 类型:
float - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public PlayerItemInHandLayer(RenderLayerParent<S,M> renderer) @ L25
- 构造器名:PlayerItemInHandLayer
- 源码定位:L25
- 修饰符:public
参数:
- renderer: RenderLayerParent<S,M>
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected void submitArmWithItem(S state, ItemStackRenderState item, ItemStack itemStack, HumanoidArm arm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords) @ L29
- 方法名:submitArmWithItem
- 源码定位:L29
- 返回类型:void
- 修饰符:protected
参数:
- state: S
- item: ItemStackRenderState
- itemStack: ItemStack
- arm: HumanoidArm
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
说明:
TODO
private void renderItemHeldToEye(S state, HumanoidArm arm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords) @ L42
- 方法名:renderItemHeldToEye
- 源码定位:L42
- 返回类型:void
- 修饰符:private
参数:
- state: S
- arm: HumanoidArm
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class PlayerItemInHandLayer<S extends AvatarRenderState, M extends EntityModel<S> & ArmedModel<S> & HeadedModel> extends ItemInHandLayer<S, M> {
private static final float X_ROT_MIN = (float) (-Math.PI / 6);
private static final float X_ROT_MAX = (float) (Math.PI / 2);
public PlayerItemInHandLayer(RenderLayerParent<S, M> renderer) {
super(renderer);
}
protected void submitArmWithItem(
S state, ItemStackRenderState item, ItemStack itemStack, HumanoidArm arm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords
) {
if (!item.isEmpty()) {
InteractionHand currentHand = arm == state.mainArm ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND;
if (state.isUsingItem && state.useItemHand == currentHand && state.attackTime < 1.0E-5F && !state.heldOnHead.isEmpty()) {
this.renderItemHeldToEye(state, arm, poseStack, submitNodeCollector, lightCoords);
} else {
super.submitArmWithItem(state, item, itemStack, arm, poseStack, submitNodeCollector, lightCoords);
}
}
}
private void renderItemHeldToEye(S state, HumanoidArm arm, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords) {
poseStack.pushPose();
this.getParentModel().root().translateAndRotate(poseStack);
ModelPart head = this.getParentModel().getHead();
float previousXRot = head.xRot;
head.xRot = Mth.clamp(head.xRot, (float) (-Math.PI / 6), (float) (Math.PI / 2));
head.translateAndRotate(poseStack);
head.xRot = previousXRot;
CustomHeadLayer.translateToHead(poseStack, CustomHeadLayer.Transforms.DEFAULT);
boolean isLeftHand = arm == HumanoidArm.LEFT;
poseStack.translate((isLeftHand ? -2.5F : 2.5F) / 16.0F, -0.0625F, 0.0F);
state.heldOnHead.submit(poseStack, submitNodeCollector, lightCoords, OverlayTexture.NO_OVERLAY, state.outlineColor);
poseStack.popPose();
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CustomHeadLayer.translateToHead()
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.clamp()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: