Spaces:
Build error
Build error
File size: 15,925 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 |
package net.minecraft.client.renderer.debug;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.ShapeRenderer;
import net.minecraft.client.renderer.culling.Frustum;
import net.minecraft.core.BlockPos;
import net.minecraft.util.ARGB;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntitySelector;
import net.minecraft.world.entity.projectile.ProjectileUtil;
import net.minecraft.world.level.LightLayer;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class DebugRenderer {
public final PathfindingRenderer pathfindingRenderer = new PathfindingRenderer();
public final DebugRenderer.SimpleDebugRenderer waterDebugRenderer;
public final DebugRenderer.SimpleDebugRenderer chunkBorderRenderer;
public final DebugRenderer.SimpleDebugRenderer heightMapRenderer;
public final DebugRenderer.SimpleDebugRenderer collisionBoxRenderer;
public final DebugRenderer.SimpleDebugRenderer supportBlockRenderer;
public final NeighborsUpdateRenderer neighborsUpdateRenderer;
public final RedstoneWireOrientationsRenderer redstoneWireOrientationsRenderer;
public final StructureRenderer structureRenderer;
public final DebugRenderer.SimpleDebugRenderer lightDebugRenderer;
public final DebugRenderer.SimpleDebugRenderer worldGenAttemptRenderer;
public final DebugRenderer.SimpleDebugRenderer solidFaceRenderer;
public final DebugRenderer.SimpleDebugRenderer chunkRenderer;
public final BrainDebugRenderer brainDebugRenderer;
public final VillageSectionsDebugRenderer villageSectionsDebugRenderer;
public final BeeDebugRenderer beeDebugRenderer;
public final RaidDebugRenderer raidDebugRenderer;
public final GoalSelectorDebugRenderer goalSelectorRenderer;
public final GameTestDebugRenderer gameTestDebugRenderer;
public final GameEventListenerRenderer gameEventListenerRenderer;
public final LightSectionDebugRenderer skyLightSectionDebugRenderer;
public final BreezeDebugRenderer breezeDebugRenderer;
public final ChunkCullingDebugRenderer chunkCullingDebugRenderer;
public final OctreeDebugRenderer octreeDebugRenderer;
private boolean renderChunkborder;
private boolean renderOctree;
public DebugRenderer(Minecraft p_113433_) {
this.waterDebugRenderer = new WaterDebugRenderer(p_113433_);
this.chunkBorderRenderer = new ChunkBorderRenderer(p_113433_);
this.heightMapRenderer = new HeightMapRenderer(p_113433_);
this.collisionBoxRenderer = new CollisionBoxRenderer(p_113433_);
this.supportBlockRenderer = new SupportBlockRenderer(p_113433_);
this.neighborsUpdateRenderer = new NeighborsUpdateRenderer(p_113433_);
this.redstoneWireOrientationsRenderer = new RedstoneWireOrientationsRenderer(p_113433_);
this.structureRenderer = new StructureRenderer(p_113433_);
this.lightDebugRenderer = new LightDebugRenderer(p_113433_);
this.worldGenAttemptRenderer = new WorldGenAttemptRenderer();
this.solidFaceRenderer = new SolidFaceRenderer(p_113433_);
this.chunkRenderer = new ChunkDebugRenderer(p_113433_);
this.brainDebugRenderer = new BrainDebugRenderer(p_113433_);
this.villageSectionsDebugRenderer = new VillageSectionsDebugRenderer();
this.beeDebugRenderer = new BeeDebugRenderer(p_113433_);
this.raidDebugRenderer = new RaidDebugRenderer(p_113433_);
this.goalSelectorRenderer = new GoalSelectorDebugRenderer(p_113433_);
this.gameTestDebugRenderer = new GameTestDebugRenderer();
this.gameEventListenerRenderer = new GameEventListenerRenderer(p_113433_);
this.skyLightSectionDebugRenderer = new LightSectionDebugRenderer(p_113433_, LightLayer.SKY);
this.breezeDebugRenderer = new BreezeDebugRenderer(p_113433_);
this.chunkCullingDebugRenderer = new ChunkCullingDebugRenderer(p_113433_);
this.octreeDebugRenderer = new OctreeDebugRenderer(p_113433_);
}
public void clear() {
this.pathfindingRenderer.clear();
this.waterDebugRenderer.clear();
this.chunkBorderRenderer.clear();
this.heightMapRenderer.clear();
this.collisionBoxRenderer.clear();
this.supportBlockRenderer.clear();
this.neighborsUpdateRenderer.clear();
this.structureRenderer.clear();
this.lightDebugRenderer.clear();
this.worldGenAttemptRenderer.clear();
this.solidFaceRenderer.clear();
this.chunkRenderer.clear();
this.brainDebugRenderer.clear();
this.villageSectionsDebugRenderer.clear();
this.beeDebugRenderer.clear();
this.raidDebugRenderer.clear();
this.goalSelectorRenderer.clear();
this.gameTestDebugRenderer.clear();
this.gameEventListenerRenderer.clear();
this.skyLightSectionDebugRenderer.clear();
this.breezeDebugRenderer.clear();
this.chunkCullingDebugRenderer.clear();
}
public boolean switchRenderChunkborder() {
this.renderChunkborder = !this.renderChunkborder;
return this.renderChunkborder;
}
public boolean toggleRenderOctree() {
return this.renderOctree = !this.renderOctree;
}
public void render(
PoseStack p_113458_, Frustum p_369349_, MultiBufferSource.BufferSource p_113459_, double p_113460_, double p_113461_, double p_113462_
) {
if (this.renderChunkborder && !Minecraft.getInstance().showOnlyReducedInfo()) {
this.chunkBorderRenderer.render(p_113458_, p_113459_, p_113460_, p_113461_, p_113462_);
}
if (this.renderOctree) {
this.octreeDebugRenderer.render(p_113458_, p_369349_, p_113459_, p_113460_, p_113461_, p_113462_);
}
this.gameTestDebugRenderer.render(p_113458_, p_113459_, p_113460_, p_113461_, p_113462_);
}
public void renderAfterTranslucents(PoseStack p_363582_, MultiBufferSource.BufferSource p_362258_, double p_361433_, double p_365222_, double p_365666_) {
this.chunkCullingDebugRenderer.render(p_363582_, p_362258_, p_361433_, p_365222_, p_365666_);
}
public static Optional<Entity> getTargetedEntity(@Nullable Entity p_113449_, int p_113450_) {
if (p_113449_ == null) {
return Optional.empty();
} else {
Vec3 vec3 = p_113449_.getEyePosition();
Vec3 vec31 = p_113449_.getViewVector(1.0F).scale((double)p_113450_);
Vec3 vec32 = vec3.add(vec31);
AABB aabb = p_113449_.getBoundingBox().expandTowards(vec31).inflate(1.0);
int i = p_113450_ * p_113450_;
EntityHitResult entityhitresult = ProjectileUtil.getEntityHitResult(p_113449_, vec3, vec32, aabb, EntitySelector.CAN_BE_PICKED, (double)i);
if (entityhitresult == null) {
return Optional.empty();
} else {
return vec3.distanceToSqr(entityhitresult.getLocation()) > (double)i ? Optional.empty() : Optional.of(entityhitresult.getEntity());
}
}
}
public static void renderFilledUnitCube(
PoseStack p_312607_, MultiBufferSource p_311178_, BlockPos p_311097_, float p_312295_, float p_312800_, float p_309393_, float p_312684_
) {
renderFilledBox(p_312607_, p_311178_, p_311097_, p_311097_.offset(1, 1, 1), p_312295_, p_312800_, p_309393_, p_312684_);
}
public static void renderFilledBox(
PoseStack p_270169_,
MultiBufferSource p_270417_,
BlockPos p_270790_,
BlockPos p_270610_,
float p_270515_,
float p_270494_,
float p_270869_,
float p_270844_
) {
Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera();
if (camera.isInitialized()) {
Vec3 vec3 = camera.getPosition().reverse();
AABB aabb = AABB.encapsulatingFullBlocks(p_270790_, p_270610_).move(vec3);
renderFilledBox(p_270169_, p_270417_, aabb, p_270515_, p_270494_, p_270869_, p_270844_);
}
}
public static void renderFilledBox(
PoseStack p_270877_,
MultiBufferSource p_270925_,
BlockPos p_270480_,
float p_270569_,
float p_270315_,
float p_270182_,
float p_270862_,
float p_270973_
) {
Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera();
if (camera.isInitialized()) {
Vec3 vec3 = camera.getPosition().reverse();
AABB aabb = new AABB(p_270480_).move(vec3).inflate((double)p_270569_);
renderFilledBox(p_270877_, p_270925_, aabb, p_270315_, p_270182_, p_270862_, p_270973_);
}
}
public static void renderFilledBox(
PoseStack p_271017_, MultiBufferSource p_270356_, AABB p_270833_, float p_270850_, float p_270249_, float p_270654_, float p_270476_
) {
renderFilledBox(
p_271017_,
p_270356_,
p_270833_.minX,
p_270833_.minY,
p_270833_.minZ,
p_270833_.maxX,
p_270833_.maxY,
p_270833_.maxZ,
p_270850_,
p_270249_,
p_270654_,
p_270476_
);
}
public static void renderFilledBox(
PoseStack p_270616_,
MultiBufferSource p_270769_,
double p_270653_,
double p_270967_,
double p_270556_,
double p_270724_,
double p_270427_,
double p_270138_,
float p_270391_,
float p_270093_,
float p_270312_,
float p_270567_
) {
VertexConsumer vertexconsumer = p_270769_.getBuffer(RenderType.debugFilledBox());
ShapeRenderer.addChainedFilledBoxVertices(
p_270616_, vertexconsumer, p_270653_, p_270967_, p_270556_, p_270724_, p_270427_, p_270138_, p_270391_, p_270093_, p_270312_, p_270567_
);
}
public static void renderFloatingText(PoseStack p_270671_, MultiBufferSource p_271023_, String p_270521_, int p_270729_, int p_270562_, int p_270828_, int p_270164_) {
renderFloatingText(p_270671_, p_271023_, p_270521_, (double)p_270729_ + 0.5, (double)p_270562_ + 0.5, (double)p_270828_ + 0.5, p_270164_);
}
public static void renderFloatingText(
PoseStack p_270905_, MultiBufferSource p_270581_, String p_270305_, double p_270645_, double p_270746_, double p_270364_, int p_270977_
) {
renderFloatingText(p_270905_, p_270581_, p_270305_, p_270645_, p_270746_, p_270364_, p_270977_, 0.02F);
}
public static void renderFloatingText(
PoseStack p_270216_,
MultiBufferSource p_270684_,
String p_270564_,
double p_270935_,
double p_270856_,
double p_270908_,
int p_270180_,
float p_270685_
) {
renderFloatingText(p_270216_, p_270684_, p_270564_, p_270935_, p_270856_, p_270908_, p_270180_, p_270685_, true, 0.0F, false);
}
public static void renderFloatingText(
PoseStack p_270649_,
MultiBufferSource p_270695_,
String p_270703_,
double p_270942_,
double p_270292_,
double p_270885_,
int p_270956_,
float p_270657_,
boolean p_270731_,
float p_270825_,
boolean p_270222_
) {
Minecraft minecraft = Minecraft.getInstance();
Camera camera = minecraft.gameRenderer.getMainCamera();
if (camera.isInitialized() && minecraft.getEntityRenderDispatcher().options != null) {
Font font = minecraft.font;
double d0 = camera.getPosition().x;
double d1 = camera.getPosition().y;
double d2 = camera.getPosition().z;
p_270649_.pushPose();
p_270649_.translate((float)(p_270942_ - d0), (float)(p_270292_ - d1) + 0.07F, (float)(p_270885_ - d2));
p_270649_.mulPose(camera.rotation());
p_270649_.scale(p_270657_, -p_270657_, p_270657_);
float f = p_270731_ ? (float)(-font.width(p_270703_)) / 2.0F : 0.0F;
f -= p_270825_ / p_270657_;
font.drawInBatch(
p_270703_,
f,
0.0F,
p_270956_,
false,
p_270649_.last().pose(),
p_270695_,
p_270222_ ? Font.DisplayMode.SEE_THROUGH : Font.DisplayMode.NORMAL,
0,
15728880
);
p_270649_.popPose();
}
}
private static Vec3 mixColor(float p_362317_) {
float f = 5.99999F;
int i = (int)(Mth.clamp(p_362317_, 0.0F, 1.0F) * 5.99999F);
float f1 = p_362317_ * 5.99999F - (float)i;
return switch (i) {
case 0 -> new Vec3(1.0, (double)f1, 0.0);
case 1 -> new Vec3((double)(1.0F - f1), 1.0, 0.0);
case 2 -> new Vec3(0.0, 1.0, (double)f1);
case 3 -> new Vec3(0.0, 1.0 - (double)f1, 1.0);
case 4 -> new Vec3((double)f1, 0.0, 1.0);
case 5 -> new Vec3(1.0, 0.0, 1.0 - (double)f1);
default -> throw new IllegalStateException("Unexpected value: " + i);
};
}
private static Vec3 shiftHue(float p_366349_, float p_365255_, float p_365397_, float p_365478_) {
Vec3 vec3 = mixColor(p_365478_).scale((double)p_366349_);
Vec3 vec31 = mixColor((p_365478_ + 0.33333334F) % 1.0F).scale((double)p_365255_);
Vec3 vec32 = mixColor((p_365478_ + 0.6666667F) % 1.0F).scale((double)p_365397_);
Vec3 vec33 = vec3.add(vec31).add(vec32);
double d0 = Math.max(Math.max(1.0, vec33.x), Math.max(vec33.y, vec33.z));
return new Vec3(vec33.x / d0, vec33.y / d0, vec33.z / d0);
}
public static void renderVoxelShape(
PoseStack p_360817_,
VertexConsumer p_363492_,
VoxelShape p_363714_,
double p_364187_,
double p_365344_,
double p_366898_,
float p_369234_,
float p_367922_,
float p_367674_,
float p_361835_,
boolean p_364311_
) {
List<AABB> list = p_363714_.toAabbs();
if (!list.isEmpty()) {
int i = p_364311_ ? list.size() : list.size() * 8;
ShapeRenderer.renderShape(
p_360817_, p_363492_, Shapes.create(list.get(0)), p_364187_, p_365344_, p_366898_, ARGB.colorFromFloat(p_361835_, p_369234_, p_367922_, p_367674_)
);
for (int j = 1; j < list.size(); j++) {
AABB aabb = list.get(j);
float f = (float)j / (float)i;
Vec3 vec3 = shiftHue(p_369234_, p_367922_, p_367674_, f);
ShapeRenderer.renderShape(
p_360817_,
p_363492_,
Shapes.create(aabb),
p_364187_,
p_365344_,
p_366898_,
ARGB.colorFromFloat(p_361835_, (float)vec3.x, (float)vec3.y, (float)vec3.z)
);
}
}
}
@OnlyIn(Dist.CLIENT)
public interface SimpleDebugRenderer {
void render(PoseStack p_113507_, MultiBufferSource p_113508_, double p_113509_, double p_113510_, double p_113511_);
default void clear() {
}
}
} |