LightDebugRenderer.java

net.minecraft.client.renderer.debug.LightDebugRenderer

信息

  • 全限定名:net.minecraft.client.renderer.debug.LightDebugRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.debug
  • 源码路径:src/main/java/net/minecraft/client/renderer/debug/LightDebugRenderer.java
  • 起始行号:L20
  • 实现:DebugRenderer.SimpleDebugRenderer
  • 职责:

    TODO

字段/常量

  • minecraft

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

      TODO

  • showBlockLight

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

      TODO

  • showSkyLight

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

      TODO

  • MAX_RENDER_DIST

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

      TODO

内部类/嵌套类型

构造器

public LightDebugRenderer(Minecraft minecraft, boolean showBlockLight, boolean showSkyLight) @ L26

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

参数:

  • minecraft: Minecraft
  • showBlockLight: boolean
  • showSkyLight: boolean

说明:

TODO

方法

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

public void emitGizmos(double camX, double camY, double camZ, DebugValueAccess debugValues, Frustum frustum, float partialTicks) @ L32

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

参数:

  • camX: double
  • camY: double
  • camZ: double
  • debugValues: DebugValueAccess
  • frustum: Frustum
  • partialTicks: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class LightDebugRenderer implements DebugRenderer.SimpleDebugRenderer {
    private final Minecraft minecraft;
    private final boolean showBlockLight;
    private final boolean showSkyLight;
    private static final int MAX_RENDER_DIST = 10;
 
    public LightDebugRenderer(Minecraft minecraft, boolean showBlockLight, boolean showSkyLight) {
        this.minecraft = minecraft;
        this.showBlockLight = showBlockLight;
        this.showSkyLight = showSkyLight;
    }
 
    @Override
    public void emitGizmos(double camX, double camY, double camZ, DebugValueAccess debugValues, Frustum frustum, float partialTicks) {
        Level level = this.minecraft.level;
        BlockPos playerPos = BlockPos.containing(camX, camY, camZ);
        LongSet set = new LongOpenHashSet();
 
        for (BlockPos blockPos : BlockPos.betweenClosed(playerPos.offset(-10, -10, -10), playerPos.offset(10, 10, 10))) {
            int skyBrightness = level.getBrightness(LightLayer.SKY, blockPos);
            long sectionNode = SectionPos.blockToSection(blockPos.asLong());
            if (set.add(sectionNode)) {
                Gizmos.billboardText(
                    level.getChunkSource().getLightEngine().getDebugData(LightLayer.SKY, SectionPos.of(sectionNode)),
                    new Vec3(
                        SectionPos.sectionToBlockCoord(SectionPos.x(sectionNode), 8),
                        SectionPos.sectionToBlockCoord(SectionPos.y(sectionNode), 8),
                        SectionPos.sectionToBlockCoord(SectionPos.z(sectionNode), 8)
                    ),
                    TextGizmo.Style.forColorAndCentered(-65536).withScale(4.8F)
                );
            }
 
            if (skyBrightness != 15 && this.showSkyLight) {
                int color = ARGB.srgbLerp(skyBrightness / 15.0F, -16776961, -16711681);
                Gizmos.billboardText(
                    String.valueOf(skyBrightness), Vec3.atLowerCornerWithOffset(blockPos, 0.5, 0.25, 0.5), TextGizmo.Style.forColorAndCentered(color)
                );
            }
 
            if (this.showBlockLight) {
                int blockBrightness = level.getBrightness(LightLayer.BLOCK, blockPos);
                if (blockBrightness != 0) {
                    int color = ARGB.srgbLerp(blockBrightness / 15.0F, -5636096, -256);
                    Gizmos.billboardText(
                        String.valueOf(level.getBrightness(LightLayer.BLOCK, blockPos)), Vec3.atCenterOf(blockPos), TextGizmo.Style.forColorAndCentered(color)
                    );
                }
            }
        }
    }
}

引用的其他类

  • Minecraft

    • 引用位置: 参数/字段
  • Frustum

    • 引用位置: 参数
  • DebugRenderer

    • 引用位置: 实现
  • BlockPos

    • 引用位置: 方法调用
    • 关联成员: BlockPos.betweenClosed(), BlockPos.containing()
  • SectionPos

    • 引用位置: 方法调用
    • 关联成员: SectionPos.blockToSection(), SectionPos.of(), SectionPos.sectionToBlockCoord(), SectionPos.x(), SectionPos.y(), SectionPos.z()
  • Gizmos

    • 引用位置: 方法调用
    • 关联成员: Gizmos.billboardText()
  • TextGizmo

    • 引用位置: 方法调用
    • 关联成员: TextGizmo.Style.forColorAndCentered()
  • ARGB

    • 引用位置: 方法调用
    • 关联成员: ARGB.srgbLerp()
  • DebugValueAccess

    • 引用位置: 参数
  • Vec3

    • 引用位置: 方法调用/构造调用
    • 关联成员: Vec3(), Vec3.atCenterOf(), Vec3.atLowerCornerWithOffset()