NeighborsUpdateRenderer.java
net.minecraft.client.renderer.debug.NeighborsUpdateRenderer
信息
- 全限定名:net.minecraft.client.renderer.debug.NeighborsUpdateRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.debug
- 源码路径:src/main/java/net/minecraft/client/renderer/debug/NeighborsUpdateRenderer.java
- 起始行号:L19
- 实现:DebugRenderer.SimpleDebugRenderer
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
net.minecraft.client.renderer.debug.NeighborsUpdateRenderer.LastUpdate- 类型:
record - 修饰符:
private - 源码定位:
L46 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void emitGizmos(double camX, double camY, double camZ, DebugValueAccess debugValues, Frustum frustum, float partialTicks) @ L20
- 方法名:emitGizmos
- 源码定位:L20
- 返回类型:void
- 修饰符:public
参数:
- camX: double
- camY: double
- camZ: double
- debugValues: DebugValueAccess
- frustum: Frustum
- partialTicks: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class NeighborsUpdateRenderer implements DebugRenderer.SimpleDebugRenderer {
@Override
public void emitGizmos(double camX, double camY, double camZ, DebugValueAccess debugValues, Frustum frustum, float partialTicks) {
int shrinkTime = DebugSubscriptions.NEIGHBOR_UPDATES.expireAfterTicks();
double shrinkSpeed = 1.0 / (shrinkTime * 2);
Map<BlockPos, NeighborsUpdateRenderer.LastUpdate> lastUpdates = new HashMap<>();
debugValues.forEachEvent(DebugSubscriptions.NEIGHBOR_UPDATES, (blockPos, remainingTicks, totalLifetime) -> {
long age = totalLifetime - remainingTicks;
NeighborsUpdateRenderer.LastUpdate lastUpdatex = lastUpdates.getOrDefault(blockPos, NeighborsUpdateRenderer.LastUpdate.NONE);
lastUpdates.put(blockPos, lastUpdatex.tryCount((int)age));
});
for (Entry<BlockPos, NeighborsUpdateRenderer.LastUpdate> entry : lastUpdates.entrySet()) {
BlockPos pos = entry.getKey();
NeighborsUpdateRenderer.LastUpdate lastUpdate = entry.getValue();
AABB aabb = new AABB(pos).inflate(0.002).deflate(shrinkSpeed * lastUpdate.age);
Gizmos.cuboid(aabb, GizmoStyle.stroke(-1));
}
for (Entry<BlockPos, NeighborsUpdateRenderer.LastUpdate> entry : lastUpdates.entrySet()) {
BlockPos pos = entry.getKey();
NeighborsUpdateRenderer.LastUpdate lastUpdate = entry.getValue();
Gizmos.billboardText(String.valueOf(lastUpdate.count), Vec3.atCenterOf(pos), TextGizmo.Style.whiteAndCentered());
}
}
@OnlyIn(Dist.CLIENT)
private record LastUpdate(int count, int age) {
private static final NeighborsUpdateRenderer.LastUpdate NONE = new NeighborsUpdateRenderer.LastUpdate(0, Integer.MAX_VALUE);
public NeighborsUpdateRenderer.LastUpdate tryCount(int age) {
if (age == this.age) {
return new NeighborsUpdateRenderer.LastUpdate(this.count + 1, age);
} else {
return age < this.age ? new NeighborsUpdateRenderer.LastUpdate(1, age) : this;
}
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
GizmoStyle.stroke()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Gizmos.billboardText(), Gizmos.cuboid()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TextGizmo.Style.whiteAndCentered()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AABB()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Vec3.atCenterOf()
- 引用位置: