ParrotOnShoulderLayer.java

net.minecraft.client.renderer.entity.layers.ParrotOnShoulderLayer

信息

  • 全限定名:net.minecraft.client.renderer.entity.layers.ParrotOnShoulderLayer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity.layers
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer.java
  • 起始行号:L19
  • 继承:RenderLayer<AvatarRenderState,PlayerModel>
  • 职责:

    TODO

字段/常量

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

      TODO

内部类/嵌套类型

构造器

public ParrotOnShoulderLayer(RenderLayerParent<AvatarRenderState,PlayerModel> renderer, EntityModelSet modelSet) @ L22

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

参数:

  • renderer: RenderLayerParent<AvatarRenderState,PlayerModel>
  • modelSet: EntityModelSet

说明:

TODO

方法

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

public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, AvatarRenderState state, float yRot, float xRot) @ L27

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

参数:

  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • lightCoords: int
  • state: AvatarRenderState
  • yRot: float
  • xRot: float

说明:

TODO

private void submitOnShoulder(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, AvatarRenderState playerState, Parrot.Variant parrotVariant, float yRot, float xRot, boolean isLeft) @ L39

  • 方法名:submitOnShoulder
  • 源码定位:L39
  • 返回类型:void
  • 修饰符:private

参数:

  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • lightCoords: int
  • playerState: AvatarRenderState
  • parrotVariant: Parrot.Variant
  • yRot: float
  • xRot: float
  • isLeft: boolean

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ParrotOnShoulderLayer extends RenderLayer<AvatarRenderState, PlayerModel> {
    private final ParrotModel model;
 
    public ParrotOnShoulderLayer(RenderLayerParent<AvatarRenderState, PlayerModel> renderer, EntityModelSet modelSet) {
        super(renderer);
        this.model = new ParrotModel(modelSet.bakeLayer(ModelLayers.PARROT));
    }
 
    public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, AvatarRenderState state, float yRot, float xRot) {
        Parrot.Variant parrotOnLeftShoulder = state.parrotOnLeftShoulder;
        if (parrotOnLeftShoulder != null) {
            this.submitOnShoulder(poseStack, submitNodeCollector, lightCoords, state, parrotOnLeftShoulder, yRot, xRot, true);
        }
 
        Parrot.Variant parrotOnRightShoulder = state.parrotOnRightShoulder;
        if (parrotOnRightShoulder != null) {
            this.submitOnShoulder(poseStack, submitNodeCollector, lightCoords, state, parrotOnRightShoulder, yRot, xRot, false);
        }
    }
 
    private void submitOnShoulder(
        PoseStack poseStack,
        SubmitNodeCollector submitNodeCollector,
        int lightCoords,
        AvatarRenderState playerState,
        Parrot.Variant parrotVariant,
        float yRot,
        float xRot,
        boolean isLeft
    ) {
        poseStack.pushPose();
        poseStack.translate(isLeft ? 0.4F : -0.4F, playerState.isCrouching ? -1.3F : -1.5F, 0.0F);
        ParrotRenderState parrotState = new ParrotRenderState();
        parrotState.pose = ParrotModel.Pose.ON_SHOULDER;
        parrotState.ageInTicks = playerState.ageInTicks;
        parrotState.walkAnimationPos = playerState.walkAnimationPos;
        parrotState.walkAnimationSpeed = playerState.walkAnimationSpeed;
        parrotState.yRot = yRot;
        parrotState.xRot = xRot;
        submitNodeCollector.submitModel(
            this.model,
            parrotState,
            poseStack,
            ParrotRenderer.getVariantTexture(parrotVariant),
            lightCoords,
            OverlayTexture.NO_OVERLAY,
            playerState.outlineColor,
            null
        );
        poseStack.popPose();
    }
}

引用的其他类