TheEndGatewayRenderer.java

net.minecraft.client.renderer.blockentity.TheEndGatewayRenderer

信息

  • 全限定名:net.minecraft.client.renderer.blockentity.TheEndGatewayRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.blockentity
  • 源码路径:src/main/java/net/minecraft/client/renderer/blockentity/TheEndGatewayRenderer.java
  • 起始行号:L20
  • 继承:AbstractEndPortalRenderer<TheEndGatewayBlockEntity,EndGatewayRenderState>
  • 职责:

    TODO

字段/常量

  • BEAM_LOCATION
    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L21
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public EndGatewayRenderState createRenderState() @ L23

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

参数:

说明:

TODO

public void extractRenderState(TheEndGatewayBlockEntity blockEntity, EndGatewayRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L27

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

参数:

  • blockEntity: TheEndGatewayBlockEntity
  • state: EndGatewayRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

public void submit(EndGatewayRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L48

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

参数:

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

说明:

TODO

public int getViewDistance() @ L58

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

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class TheEndGatewayRenderer extends AbstractEndPortalRenderer<TheEndGatewayBlockEntity, EndGatewayRenderState> {
    private static final Identifier BEAM_LOCATION = Identifier.withDefaultNamespace("textures/entity/end_portal/end_gateway_beam.png");
 
    public EndGatewayRenderState createRenderState() {
        return new EndGatewayRenderState();
    }
 
    public void extractRenderState(
        TheEndGatewayBlockEntity blockEntity,
        EndGatewayRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        Level level = blockEntity.getLevel();
        if (blockEntity.isSpawning() || blockEntity.isCoolingDown() && level != null) {
            state.scale = blockEntity.isSpawning() ? blockEntity.getSpawnPercent(partialTicks) : blockEntity.getCooldownPercent(partialTicks);
            double beamDistance = blockEntity.isSpawning() ? blockEntity.getLevel().getMaxY() : 50.0;
            state.scale = Mth.sin(state.scale * (float) Math.PI);
            state.height = Mth.floor(state.scale * beamDistance);
            state.color = blockEntity.isSpawning() ? DyeColor.MAGENTA.getTextureDiffuseColor() : DyeColor.PURPLE.getTextureDiffuseColor();
            state.animationTime = blockEntity.getLevel() != null ? Math.floorMod(blockEntity.getLevel().getGameTime(), 40) + partialTicks : 0.0F;
        } else {
            state.height = 0;
        }
    }
 
    public void submit(EndGatewayRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        if (state.height > 0) {
            BeaconRenderer.submitBeaconBeam(
                poseStack, submitNodeCollector, BEAM_LOCATION, state.scale, state.animationTime, -state.height, state.height * 2, state.color, 0.15F, 0.175F
            );
        }
 
        submitCube(state.facesToShow, RenderTypes.endGateway(), poseStack, submitNodeCollector);
    }
 
    @Override
    public int getViewDistance() {
        return 256;
    }
}

引用的其他类