DebugRenderer.java
net.minecraft.client.renderer.debug.DebugRenderer
信息
- 全限定名:net.minecraft.client.renderer.debug.DebugRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.debug
- 源码路径:src/main/java/net/minecraft/client/renderer/debug/DebugRenderer.java
- 起始行号:L24
- 职责:
TODO
字段/常量
-
renderers- 类型:
List<DebugRenderer.SimpleDebugRenderer> - 修饰符:
private final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
lastDebugEntriesVersion- 类型:
long - 修饰符:
private - 源码定位:
L26 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.renderer.debug.DebugRenderer.SimpleDebugRenderer- 类型:
interface - 修饰符:
public - 源码定位:
L199 - 说明:
TODO
- 类型:
构造器
public DebugRenderer() @ L28
- 构造器名:DebugRenderer
- 源码定位:L28
- 修饰符:public
参数:
- 无
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void refreshRendererList() @ L32
- 方法名:refreshRendererList
- 源码定位:L32
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void emitGizmos(Frustum frustum, double camX, double camY, double camZ, float partialTicks) @ L142
- 方法名:emitGizmos
- 源码定位:L142
- 返回类型:void
- 修饰符:public
参数:
- frustum: Frustum
- camX: double
- camY: double
- camZ: double
- partialTicks: float
说明:
TODO
public static Optional<Entity> getTargetedEntity(Entity cameraEntity, int maxTargetingRange) @ L155
- 方法名:getTargetedEntity
- 源码定位:L155
- 返回类型:Optional
- 修饰符:public static
参数:
- cameraEntity: Entity
- maxTargetingRange: int
说明:
TODO
private static Vec3 mixColor(float hueShift) @ L173
- 方法名:mixColor
- 源码定位:L173
- 返回类型:Vec3
- 修饰符:private static
参数:
- hueShift: float
说明:
TODO
private static Vec3 shiftHue(float r, float g, float b, float hs) @ L189
- 方法名:shiftHue
- 源码定位:L189
- 返回类型:Vec3
- 修饰符:private static
参数:
- r: float
- g: float
- b: float
- hs: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class DebugRenderer {
private final List<DebugRenderer.SimpleDebugRenderer> renderers = new ArrayList<>();
private long lastDebugEntriesVersion;
public DebugRenderer() {
this.refreshRendererList();
}
public void refreshRendererList() {
Minecraft minecraft = Minecraft.getInstance();
this.renderers.clear();
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.CHUNK_BORDERS)) {
this.renderers.add(new ChunkBorderRenderer(minecraft));
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.CHUNK_SECTION_OCTREE)) {
this.renderers.add(new OctreeDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_PATHFINDING) {
this.renderers.add(new PathfindingRenderer());
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_WATER_LEVELS)) {
this.renderers.add(new WaterDebugRenderer(minecraft));
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_HEIGHTMAP)) {
this.renderers.add(new HeightMapRenderer(minecraft));
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_COLLISION_BOXES)) {
this.renderers.add(new CollisionBoxRenderer(minecraft));
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_ENTITY_SUPPORTING_BLOCKS)) {
this.renderers.add(new SupportBlockRenderer(minecraft));
}
if (SharedConstants.DEBUG_NEIGHBORSUPDATE) {
this.renderers.add(new NeighborsUpdateRenderer());
}
if (SharedConstants.DEBUG_EXPERIMENTAL_REDSTONEWIRE_UPDATE_ORDER) {
this.renderers.add(new RedstoneWireOrientationsRenderer());
}
if (SharedConstants.DEBUG_STRUCTURES) {
this.renderers.add(new StructureRenderer());
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_BLOCK_LIGHT_LEVELS)
|| minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_SKY_LIGHT_LEVELS)) {
this.renderers
.add(
new LightDebugRenderer(
minecraft,
minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_BLOCK_LIGHT_LEVELS),
minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_SKY_LIGHT_LEVELS)
)
);
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_SOLID_FACES)) {
this.renderers.add(new SolidFaceRenderer(minecraft));
}
if (SharedConstants.DEBUG_VILLAGE_SECTIONS) {
this.renderers.add(new VillageSectionsDebugRenderer());
}
if (SharedConstants.DEBUG_BRAIN) {
this.renderers.add(new BrainDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_POI) {
this.renderers.add(new PoiDebugRenderer(new BrainDebugRenderer(minecraft)));
}
if (SharedConstants.DEBUG_BEES) {
this.renderers.add(new BeeDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_RAIDS) {
this.renderers.add(new RaidDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_GOAL_SELECTOR) {
this.renderers.add(new GoalSelectorDebugRenderer(minecraft));
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_CHUNKS_ON_SERVER)) {
this.renderers.add(new ChunkDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_GAME_EVENT_LISTENERS) {
this.renderers.add(new GameEventListenerRenderer());
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.VISUALIZE_SKY_LIGHT_SECTIONS)) {
this.renderers.add(new LightSectionDebugRenderer(minecraft, LightLayer.SKY));
}
if (SharedConstants.DEBUG_BREEZE_MOB) {
this.renderers.add(new BreezeDebugRenderer(minecraft));
}
if (SharedConstants.DEBUG_ENTITY_BLOCK_INTERSECTION) {
this.renderers.add(new EntityBlockIntersectionDebugRenderer());
}
if (minecraft.debugEntries.isCurrentlyEnabled(DebugScreenEntries.ENTITY_HITBOXES)) {
this.renderers.add(new EntityHitboxDebugRenderer(minecraft));
}
this.renderers.add(new ChunkCullingDebugRenderer(minecraft));
}
public void emitGizmos(Frustum frustum, double camX, double camY, double camZ, float partialTicks) {
Minecraft minecraft = Minecraft.getInstance();
DebugValueAccess debugValues = minecraft.getConnection().createDebugValueAccess();
if (minecraft.debugEntries.getCurrentlyEnabledVersion() != this.lastDebugEntriesVersion) {
this.lastDebugEntriesVersion = minecraft.debugEntries.getCurrentlyEnabledVersion();
this.refreshRendererList();
}
for (DebugRenderer.SimpleDebugRenderer renderer : this.renderers) {
renderer.emitGizmos(camX, camY, camZ, debugValues, frustum, partialTicks);
}
}
public static Optional<Entity> getTargetedEntity(@Nullable Entity cameraEntity, int maxTargetingRange) {
if (cameraEntity == null) {
return Optional.empty();
} else {
Vec3 from = cameraEntity.getEyePosition();
Vec3 pick = cameraEntity.getViewVector(1.0F).scale(maxTargetingRange);
Vec3 to = from.add(pick);
AABB box = cameraEntity.getBoundingBox().expandTowards(pick).inflate(1.0);
int rangeSquared = maxTargetingRange * maxTargetingRange;
EntityHitResult hitResult = ProjectileUtil.getEntityHitResult(cameraEntity, from, to, box, EntitySelector.CAN_BE_PICKED, rangeSquared);
if (hitResult == null) {
return Optional.empty();
} else {
return from.distanceToSqr(hitResult.getLocation()) > rangeSquared ? Optional.empty() : Optional.of(hitResult.getEntity());
}
}
}
private static Vec3 mixColor(float hueShift) {
float regions = 5.99999F;
int region = (int)(Mth.clamp(hueShift, 0.0F, 1.0F) * 5.99999F);
float progress = hueShift * 5.99999F - region;
return switch (region) {
case 0 -> new Vec3(1.0, progress, 0.0);
case 1 -> new Vec3(1.0F - progress, 1.0, 0.0);
case 2 -> new Vec3(0.0, 1.0, progress);
case 3 -> new Vec3(0.0, 1.0 - progress, 1.0);
case 4 -> new Vec3(progress, 0.0, 1.0);
case 5 -> new Vec3(1.0, 0.0, 1.0 - progress);
default -> throw new IllegalStateException("Unexpected value: " + region);
};
}
private static Vec3 shiftHue(float r, float g, float b, float hs) {
Vec3 rshifted = mixColor(hs).scale(r);
Vec3 gshifted = mixColor((hs + 0.33333334F) % 1.0F).scale(g);
Vec3 bshifted = mixColor((hs + 0.6666667F) % 1.0F).scale(b);
Vec3 combined = rshifted.add(gshifted).add(bshifted);
double max = Math.max(Math.max(1.0, combined.x), Math.max(combined.y, combined.z));
return new Vec3(combined.x / max, combined.y / max, combined.z / max);
}
@OnlyIn(Dist.CLIENT)
public interface SimpleDebugRenderer {
void emitGizmos(double camX, double camY, double camZ, DebugValueAccess debugValues, final Frustum frustum, final float partialTicks);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BeeDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BrainDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BreezeDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ChunkBorderRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ChunkCullingDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ChunkDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CollisionBoxRenderer()
- 引用位置:
-
EntityBlockIntersectionDebugRenderer
- 引用位置:
构造调用 - 关联成员:
EntityBlockIntersectionDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
EntityHitboxDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GameEventListenerRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GoalSelectorDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
HeightMapRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
LightDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
LightSectionDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
NeighborsUpdateRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
OctreeDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PathfindingRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PoiDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
RaidDebugRenderer()
- 引用位置:
-
RedstoneWireOrientationsRenderer
- 引用位置:
构造调用 - 关联成员:
RedstoneWireOrientationsRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SolidFaceRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
StructureRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SupportBlockRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
VillageSectionsDebugRenderer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
WaterDebugRenderer()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.clamp()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ProjectileUtil.getEntityHitResult()
- 引用位置:
-
- 引用位置:
构造调用/返回值 - 关联成员:
Vec3()
- 引用位置: