GameTestBlockHighlightRenderer.java
net.minecraft.client.renderer.debug.GameTestBlockHighlightRenderer
信息
- 全限定名:net.minecraft.client.renderer.debug.GameTestBlockHighlightRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.debug
- 源码路径:src/main/java/net/minecraft/client/renderer/debug/GameTestBlockHighlightRenderer.java
- 起始行号:L15
- 职责:
TODO
字段/常量
-
SHOW_POS_DURATION_MS- 类型:
int - 修饰符:
private static final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
PADDING- 类型:
float - 修饰符:
private static final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
markers- 类型:
Map<BlockPos,GameTestBlockHighlightRenderer.Marker> - 修饰符:
private final - 源码定位:
L18 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.renderer.debug.GameTestBlockHighlightRenderer.Marker- 类型:
record - 修饰符:
private - 源码定位:
L44 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void highlightPos(BlockPos absolutePos, BlockPos relativePos) @ L20
- 方法名:highlightPos
- 源码定位:L20
- 返回类型:void
- 修饰符:public
参数:
- absolutePos: BlockPos
- relativePos: BlockPos
说明:
TODO
public void clear() @ L25
- 方法名:clear
- 源码定位:L25
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void emitGizmos() @ L29
- 方法名:emitGizmos
- 源码定位:L29
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private void renderMarker(BlockPos pos, GameTestBlockHighlightRenderer.Marker marker) @ L35
- 方法名:renderMarker
- 源码定位:L35
- 返回类型:void
- 修饰符:private
参数:
- pos: BlockPos
- marker: GameTestBlockHighlightRenderer.Marker
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class GameTestBlockHighlightRenderer {
private static final int SHOW_POS_DURATION_MS = 10000;
private static final float PADDING = 0.02F;
private final Map<BlockPos, GameTestBlockHighlightRenderer.Marker> markers = Maps.newHashMap();
public void highlightPos(BlockPos absolutePos, BlockPos relativePos) {
String text = relativePos.toShortString();
this.markers.put(absolutePos, new GameTestBlockHighlightRenderer.Marker(1610678016, text, Util.getMillis() + 10000L));
}
public void clear() {
this.markers.clear();
}
public void emitGizmos() {
long time = Util.getMillis();
this.markers.entrySet().removeIf(entry -> time > entry.getValue().removeAtTime);
this.markers.forEach((pos, marker) -> this.renderMarker(pos, marker));
}
private void renderMarker(BlockPos pos, GameTestBlockHighlightRenderer.Marker marker) {
Gizmos.cuboid(pos, 0.02F, GizmoStyle.fill(marker.color()));
if (!marker.text.isEmpty()) {
Gizmos.billboardText(marker.text, Vec3.atLowerCornerWithOffset(pos, 0.5, 1.2, 0.5), TextGizmo.Style.whiteAndCentered().withScale(0.16F))
.setAlwaysOnTop();
}
}
@OnlyIn(Dist.CLIENT)
private record Marker(int color, String text, long removeAtTime) {
}
}