TrialSpawnerRenderer.java

net.minecraft.client.renderer.blockentity.TrialSpawnerRenderer

信息

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

    TODO

字段/常量

  • entityRenderer
    • 类型: EntityRenderDispatcher
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

内部类/嵌套类型

构造器

public TrialSpawnerRenderer(BlockEntityRendererProvider.Context context) @ L23

  • 构造器名:TrialSpawnerRenderer
  • 源码定位:L23
  • 修饰符:public

参数:

  • context: BlockEntityRendererProvider.Context

说明:

TODO

方法

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

public SpawnerRenderState createRenderState() @ L27

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

参数:

说明:

TODO

public void extractRenderState(TrialSpawnerBlockEntity blockEntity, SpawnerRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L31

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

参数:

  • blockEntity: TrialSpawnerBlockEntity
  • state: SpawnerRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

static void extractSpawnerData(SpawnerRenderState state, float partialTicks, Entity displayEntity, EntityRenderDispatcher entityRenderer, double oSpin, double spin) @ L47

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

参数:

  • state: SpawnerRenderState
  • partialTicks: float
  • displayEntity: Entity
  • entityRenderer: EntityRenderDispatcher
  • oSpin: double
  • spin: double

说明:

TODO

public void submit(SpawnerRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L62

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

参数:

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

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class TrialSpawnerRenderer implements BlockEntityRenderer<TrialSpawnerBlockEntity, SpawnerRenderState> {
    private final EntityRenderDispatcher entityRenderer;
 
    public TrialSpawnerRenderer(BlockEntityRendererProvider.Context context) {
        this.entityRenderer = context.entityRenderer();
    }
 
    public SpawnerRenderState createRenderState() {
        return new SpawnerRenderState();
    }
 
    public void extractRenderState(
        TrialSpawnerBlockEntity blockEntity,
        SpawnerRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        if (blockEntity.getLevel() != null) {
            TrialSpawner spawner = blockEntity.getTrialSpawner();
            TrialSpawnerStateData data = spawner.getStateData();
            Entity displayEntity = data.getOrCreateDisplayEntity(spawner, blockEntity.getLevel(), spawner.getState());
            extractSpawnerData(state, partialTicks, displayEntity, this.entityRenderer, data.getOSpin(), data.getSpin());
        }
    }
 
    static void extractSpawnerData(
        SpawnerRenderState state, float partialTicks, @Nullable Entity displayEntity, EntityRenderDispatcher entityRenderer, double oSpin, double spin
    ) {
        if (displayEntity != null) {
            state.displayEntity = entityRenderer.extractEntity(displayEntity, partialTicks);
            state.displayEntity.lightCoords = state.lightCoords;
            state.spin = (float)Mth.lerp((double)partialTicks, oSpin, spin) * 10.0F;
            state.scale = 0.53125F;
            float maxLength = Math.max(displayEntity.getBbWidth(), displayEntity.getBbHeight());
            if (maxLength > 1.0) {
                state.scale /= maxLength;
            }
        }
    }
 
    public void submit(SpawnerRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        if (state.displayEntity != null) {
            SpawnerRenderer.submitEntityInSpawner(poseStack, submitNodeCollector, state.displayEntity, this.entityRenderer, state.spin, state.scale, camera);
        }
    }
}

引用的其他类