VaultRenderer.java

net.minecraft.client.renderer.blockentity.VaultRenderer

信息

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

    TODO

字段/常量

  • itemModelResolver

    • 类型: ItemModelResolver
    • 修饰符: private final
    • 源码定位: L25
    • 说明:

      TODO

  • random

    • 类型: RandomSource
    • 修饰符: private final
    • 源码定位: L26
    • 说明:

      TODO

内部类/嵌套类型

构造器

public VaultRenderer(BlockEntityRendererProvider.Context context) @ L28

  • 构造器名:VaultRenderer
  • 源码定位:L28
  • 修饰符:public

参数:

  • context: BlockEntityRendererProvider.Context

说明:

TODO

方法

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

public VaultRenderState createRenderState() @ L32

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

参数:

说明:

TODO

public void extractRenderState(VaultBlockEntity blockEntity, VaultRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L36

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

参数:

  • blockEntity: VaultBlockEntity
  • state: VaultRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

public void submit(VaultRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L55

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

参数:

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

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class VaultRenderer implements BlockEntityRenderer<VaultBlockEntity, VaultRenderState> {
    private final ItemModelResolver itemModelResolver;
    private final RandomSource random = RandomSource.create();
 
    public VaultRenderer(BlockEntityRendererProvider.Context context) {
        this.itemModelResolver = context.itemModelResolver();
    }
 
    public VaultRenderState createRenderState() {
        return new VaultRenderState();
    }
 
    public void extractRenderState(
        VaultBlockEntity blockEntity,
        VaultRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        ItemStack displayItem = blockEntity.getSharedData().getDisplayItem();
        if (VaultBlockEntity.Client.shouldDisplayActiveEffects(blockEntity.getSharedData()) && !displayItem.isEmpty() && blockEntity.getLevel() != null) {
            state.displayItem = new ItemClusterRenderState();
            this.itemModelResolver.updateForTopItem(state.displayItem.item, displayItem, ItemDisplayContext.GROUND, blockEntity.getLevel(), null, 0);
            state.displayItem.count = ItemClusterRenderState.getRenderedAmount(displayItem.getCount());
            state.displayItem.seed = ItemClusterRenderState.getSeedForItemStack(displayItem);
            VaultClientData clientData = blockEntity.getClientData();
            state.spin = Mth.rotLerp(partialTicks, clientData.previousSpin(), clientData.currentSpin());
        }
    }
 
    public void submit(VaultRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        if (state.displayItem != null) {
            poseStack.pushPose();
            poseStack.translate(0.5F, 0.4F, 0.5F);
            poseStack.mulPose(Axis.YP.rotationDegrees(state.spin));
            ItemEntityRenderer.renderMultipleFromCount(poseStack, submitNodeCollector, state.lightCoords, state.displayItem, this.random);
            poseStack.popPose();
        }
    }
}

引用的其他类