98 lines
4.6 KiB
Java
98 lines
4.6 KiB
Java
package net.minecraft.client.renderer.debug;
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.renderer.MultiBufferSource;
|
|
import net.minecraft.client.renderer.RenderType;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.Direction;
|
|
import net.minecraft.world.level.BlockGetter;
|
|
import net.minecraft.world.level.block.Blocks;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraft.world.phys.AABB;
|
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
|
import org.joml.Matrix4f;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class SolidFaceRenderer implements DebugRenderer.SimpleDebugRenderer {
|
|
private final Minecraft minecraft;
|
|
|
|
public SolidFaceRenderer(Minecraft minecraft) {
|
|
this.minecraft = minecraft;
|
|
}
|
|
|
|
@Override
|
|
public void render(PoseStack poseStack, MultiBufferSource bufferSource, double camX, double camY, double camZ) {
|
|
Matrix4f matrix4f = poseStack.last().pose();
|
|
BlockGetter blockGetter = this.minecraft.player.level();
|
|
BlockPos blockPos = BlockPos.containing(camX, camY, camZ);
|
|
|
|
for (BlockPos blockPos2 : BlockPos.betweenClosed(blockPos.offset(-6, -6, -6), blockPos.offset(6, 6, 6))) {
|
|
BlockState blockState = blockGetter.getBlockState(blockPos2);
|
|
if (!blockState.is(Blocks.AIR)) {
|
|
VoxelShape voxelShape = blockState.getShape(blockGetter, blockPos2);
|
|
|
|
for (AABB aABB : voxelShape.toAabbs()) {
|
|
AABB aABB2 = aABB.move(blockPos2).inflate(0.002);
|
|
float f = (float)(aABB2.minX - camX);
|
|
float g = (float)(aABB2.minY - camY);
|
|
float h = (float)(aABB2.minZ - camZ);
|
|
float i = (float)(aABB2.maxX - camX);
|
|
float j = (float)(aABB2.maxY - camY);
|
|
float k = (float)(aABB2.maxZ - camZ);
|
|
int l = -2130771968;
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.WEST)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, f, g, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, g, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, j, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, j, k).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.SOUTH)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, f, j, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, g, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, j, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, g, k).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.EAST)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, i, g, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, g, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, j, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, j, h).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.NORTH)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, i, j, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, g, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, j, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, g, h).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.DOWN)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, f, g, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, g, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, g, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, g, k).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockState.isFaceSturdy(blockGetter, blockPos2, Direction.UP)) {
|
|
VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugFilledBox());
|
|
vertexConsumer.addVertex(matrix4f, f, j, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, f, j, k).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, j, h).setColor(-2130771968);
|
|
vertexConsumer.addVertex(matrix4f, i, j, k).setColor(-2130771968);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|