LecternRenderer.java

net.minecraft.client.renderer.blockentity.LecternRenderer

信息

  • 全限定名:net.minecraft.client.renderer.blockentity.LecternRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.blockentity
  • 源码路径:src/main/java/net/minecraft/client/renderer/blockentity/LecternRenderer.java
  • 起始行号:L21
  • 实现:BlockEntityRenderer<LecternBlockEntity,LecternRenderState>
  • 职责:

    TODO

字段/常量

  • sprites

    • 类型: SpriteGetter
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • bookModel

    • 类型: BookModel
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

  • BOOK_STATE

    • 类型: BookModel.State
    • 修饰符: private static final
    • 源码定位: L24
    • 说明:

      TODO

内部类/嵌套类型

构造器

public LecternRenderer(BlockEntityRendererProvider.Context context) @ L26

  • 构造器名:LecternRenderer
  • 源码定位:L26
  • 修饰符:public

参数:

  • context: BlockEntityRendererProvider.Context

说明:

TODO

方法

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

public LecternRenderState createRenderState() @ L31

  • 方法名:createRenderState
  • 源码定位:L31
  • 返回类型:LecternRenderState
  • 修饰符:public

参数:

说明:

TODO

public void extractRenderState(LecternBlockEntity blockEntity, LecternRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L35

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

参数:

  • blockEntity: LecternBlockEntity
  • state: LecternRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

public void submit(LecternRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L47

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

参数:

  • state: LecternRenderState
  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • camera: CameraRenderState

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class LecternRenderer implements BlockEntityRenderer<LecternBlockEntity, LecternRenderState> {
    private final SpriteGetter sprites;
    private final BookModel bookModel;
    private static final BookModel.State BOOK_STATE = BookModel.State.forAnimation(0.0F, 0.1F, 0.9F, 1.2F);
 
    public LecternRenderer(BlockEntityRendererProvider.Context context) {
        this.sprites = context.sprites();
        this.bookModel = new BookModel(context.bakeLayer(ModelLayers.BOOK));
    }
 
    public LecternRenderState createRenderState() {
        return new LecternRenderState();
    }
 
    public void extractRenderState(
        LecternBlockEntity blockEntity,
        LecternRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        state.hasBook = blockEntity.getBlockState().getValue(LecternBlock.HAS_BOOK);
        state.yRot = blockEntity.getBlockState().getValue(LecternBlock.FACING).getClockWise().toYRot();
    }
 
    public void submit(LecternRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        if (state.hasBook) {
            poseStack.pushPose();
            poseStack.translate(0.5F, 1.0625F, 0.5F);
            poseStack.mulPose(Axis.YP.rotationDegrees(-state.yRot));
            poseStack.mulPose(Axis.ZP.rotationDegrees(67.5F));
            poseStack.translate(0.0F, -0.125F, 0.0F);
            submitNodeCollector.submitModel(
                this.bookModel,
                BOOK_STATE,
                poseStack,
                state.lightCoords,
                OverlayTexture.NO_OVERLAY,
                -1,
                EnchantTableRenderer.BOOK_TEXTURE,
                this.sprites,
                0,
                state.breakProgress
            );
            poseStack.popPose();
        }
    }
}

引用的其他类