GuiBookModelRenderer.java

net.minecraft.client.gui.render.pip.GuiBookModelRenderer

信息

  • 全限定名:net.minecraft.client.gui.render.pip.GuiBookModelRenderer
  • 类型:public class
  • 包:net.minecraft.client.gui.render.pip
  • 源码路径:src/main/java/net/minecraft/client/gui/render/pip/GuiBookModelRenderer.java
  • 起始行号:L18
  • 继承:PictureInPictureRenderer
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

public GuiBookModelRenderer(MultiBufferSource.BufferSource bufferSource) @ L19

  • 构造器名:GuiBookModelRenderer
  • 源码定位:L19
  • 修饰符:public

参数:

  • bufferSource: MultiBufferSource.BufferSource

说明:

TODO

方法

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

public Class<GuiBookModelRenderState> getRenderStateClass() @ L23

  • 方法名:getRenderStateClass
  • 源码定位:L23
  • 返回类型:Class
  • 修饰符:public

参数:

说明:

TODO

protected void renderToTexture(GuiBookModelRenderState bookModelState, PoseStack poseStack) @ L28

  • 方法名:renderToTexture
  • 源码定位:L28
  • 返回类型:void
  • 修饰符:protected

参数:

  • bookModelState: GuiBookModelRenderState
  • poseStack: PoseStack

说明:

TODO

protected float getTranslateY(int height, int guiScale) @ L46

  • 方法名:getTranslateY
  • 源码定位:L46
  • 返回类型:float
  • 修饰符:protected

参数:

  • height: int
  • guiScale: int

说明:

TODO

protected String getTextureLabel() @ L51

  • 方法名:getTextureLabel
  • 源码定位:L51
  • 返回类型:String
  • 修饰符:protected

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class GuiBookModelRenderer extends PictureInPictureRenderer<GuiBookModelRenderState> {
    public GuiBookModelRenderer(MultiBufferSource.BufferSource bufferSource) {
        super(bufferSource);
    }
 
    @Override
    public Class<GuiBookModelRenderState> getRenderStateClass() {
        return GuiBookModelRenderState.class;
    }
 
    protected void renderToTexture(GuiBookModelRenderState bookModelState, PoseStack poseStack) {
        Minecraft.getInstance().gameRenderer.getLighting().setupFor(Lighting.Entry.ENTITY_IN_UI);
        poseStack.mulPose(Axis.YP.rotationDegrees(180.0F));
        poseStack.mulPose(Axis.XP.rotationDegrees(25.0F));
        float open = bookModelState.open();
        poseStack.translate((1.0F - open) * 0.2F, (1.0F - open) * 0.1F, (1.0F - open) * 0.25F);
        poseStack.mulPose(Axis.YP.rotationDegrees(-(1.0F - open) * 90.0F - 90.0F));
        poseStack.mulPose(Axis.XP.rotationDegrees(180.0F));
        float flip = bookModelState.flip();
        float pageFlip1 = Mth.clamp(Mth.frac(flip + 0.25F) * 1.6F - 0.3F, 0.0F, 1.0F);
        float pageFlip2 = Mth.clamp(Mth.frac(flip + 0.75F) * 1.6F - 0.3F, 0.0F, 1.0F);
        BookModel bookModel = bookModelState.bookModel();
        bookModel.setupAnim(BookModel.State.forAnimation(0.0F, pageFlip1, pageFlip2, open));
        Identifier texture = bookModelState.texture();
        VertexConsumer buffer = this.bufferSource.getBuffer(bookModel.renderType(texture));
        bookModel.renderToBuffer(poseStack, buffer, 15728880, OverlayTexture.NO_OVERLAY);
    }
 
    @Override
    protected float getTranslateY(int height, int guiScale) {
        return 17 * guiScale;
    }
 
    @Override
    protected String getTextureLabel() {
        return "book model";
    }
}

引用的其他类