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)
);
}
}
}
}
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockPos.betweenClosed(), BlockPos.containing()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SectionPos.blockToSection(), SectionPos.of(), SectionPos.sectionToBlockCoord(), SectionPos.x(), SectionPos.y(), SectionPos.z()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Gizmos.billboardText()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TextGizmo.Style.forColorAndCentered()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ARGB.srgbLerp()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
Vec3(), Vec3.atCenterOf(), Vec3.atLowerCornerWithOffset()
- 引用位置: