TestInstanceRenderer.java

net.minecraft.client.renderer.blockentity.TestInstanceRenderer

信息

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

    TODO

字段/常量

  • ERROR_PADDING

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

      TODO

  • beacon

    • 类型: BeaconRenderer<TestInstanceBlockEntity>
    • 修饰符: private final
    • 源码定位: L26
    • 说明:

      TODO

  • box

    • 类型: BlockEntityWithBoundingBoxRenderer<TestInstanceBlockEntity>
    • 修饰符: private final
    • 源码定位: L27
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public TestInstanceRenderState createRenderState() @ L29

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

参数:

说明:

TODO

public void extractRenderState(TestInstanceBlockEntity blockEntity, TestInstanceRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L33

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

参数:

  • blockEntity: TestInstanceBlockEntity
  • state: TestInstanceRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

public void submit(TestInstanceRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L54

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

参数:

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

说明:

TODO

private void submitErrorMarker(TestInstanceBlockEntity.ErrorMarker error) @ L63

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

参数:

  • error: TestInstanceBlockEntity.ErrorMarker

说明:

TODO

public boolean shouldRenderOffScreen() @ L71

  • 方法名:shouldRenderOffScreen
  • 源码定位:L71
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public int getViewDistance() @ L76

  • 方法名:getViewDistance
  • 源码定位:L76
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public boolean shouldRender(TestInstanceBlockEntity blockEntity, Vec3 cameraPosition) @ L81

  • 方法名:shouldRender
  • 源码定位:L81
  • 返回类型:boolean
  • 修饰符:public

参数:

  • blockEntity: TestInstanceBlockEntity
  • cameraPosition: Vec3

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class TestInstanceRenderer implements BlockEntityRenderer<TestInstanceBlockEntity, TestInstanceRenderState> {
    private static final float ERROR_PADDING = 0.02F;
    private final BeaconRenderer<TestInstanceBlockEntity> beacon = new BeaconRenderer<>();
    private final BlockEntityWithBoundingBoxRenderer<TestInstanceBlockEntity> box = new BlockEntityWithBoundingBoxRenderer<>();
 
    public TestInstanceRenderState createRenderState() {
        return new TestInstanceRenderState();
    }
 
    public void extractRenderState(
        TestInstanceBlockEntity blockEntity,
        TestInstanceRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        state.beaconRenderState = new BeaconRenderState();
        BlockEntityRenderState.extractBase(blockEntity, state.beaconRenderState, breakProgress);
        BeaconRenderer.extract(blockEntity, state.beaconRenderState, partialTicks, cameraPosition);
        state.blockEntityWithBoundingBoxRenderState = new BlockEntityWithBoundingBoxRenderState();
        BlockEntityRenderState.extractBase(blockEntity, state.blockEntityWithBoundingBoxRenderState, breakProgress);
        BlockEntityWithBoundingBoxRenderer.extract(blockEntity, state.blockEntityWithBoundingBoxRenderState);
        state.errorMarkers.clear();
 
        for (TestInstanceBlockEntity.ErrorMarker marker : blockEntity.getErrorMarkers()) {
            state.errorMarkers.add(new TestInstanceBlockEntity.ErrorMarker(marker.pos(), marker.text()));
        }
    }
 
    public void submit(TestInstanceRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        this.beacon.submit(state.beaconRenderState, poseStack, submitNodeCollector, camera);
        this.box.submit(state.blockEntityWithBoundingBoxRenderState, poseStack, submitNodeCollector, camera);
 
        for (TestInstanceBlockEntity.ErrorMarker error : state.errorMarkers) {
            this.submitErrorMarker(error);
        }
    }
 
    private void submitErrorMarker(TestInstanceBlockEntity.ErrorMarker error) {
        BlockPos pos = error.pos();
        Gizmos.cuboid(new AABB(pos).inflate(0.02F), GizmoStyle.fill(ARGB.colorFromFloat(0.375F, 1.0F, 0.0F, 0.0F)));
        String text = error.text().getString();
        float scale = 0.16F;
        Gizmos.billboardText(text, Vec3.atLowerCornerWithOffset(pos, 0.5, 1.2, 0.5), TextGizmo.Style.whiteAndCentered().withScale(0.16F)).setAlwaysOnTop();
    }
 
    @Override
    public boolean shouldRenderOffScreen() {
        return this.beacon.shouldRenderOffScreen() || this.box.shouldRenderOffScreen();
    }
 
    @Override
    public int getViewDistance() {
        return Math.max(this.beacon.getViewDistance(), this.box.getViewDistance());
    }
 
    public boolean shouldRender(TestInstanceBlockEntity blockEntity, Vec3 cameraPosition) {
        return this.beacon.shouldRender(blockEntity, cameraPosition) || this.box.shouldRender(blockEntity, cameraPosition);
    }
}

引用的其他类