98 lines
5.7 KiB
Java
98 lines
5.7 KiB
Java
package net.minecraft.client.renderer.debug;
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
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 net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
import org.joml.Matrix4f;
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
public class SolidFaceRenderer implements DebugRenderer.SimpleDebugRenderer {
|
|
private final Minecraft minecraft;
|
|
|
|
public SolidFaceRenderer(Minecraft p_113668_) {
|
|
this.minecraft = p_113668_;
|
|
}
|
|
|
|
@Override
|
|
public void render(PoseStack p_113670_, MultiBufferSource p_113671_, double p_113672_, double p_113673_, double p_113674_) {
|
|
Matrix4f matrix4f = p_113670_.last().pose();
|
|
BlockGetter blockgetter = this.minecraft.player.level();
|
|
BlockPos blockpos = BlockPos.containing(p_113672_, p_113673_, p_113674_);
|
|
|
|
for (BlockPos blockpos1 : BlockPos.betweenClosed(blockpos.offset(-6, -6, -6), blockpos.offset(6, 6, 6))) {
|
|
BlockState blockstate = blockgetter.getBlockState(blockpos1);
|
|
if (!blockstate.is(Blocks.AIR)) {
|
|
VoxelShape voxelshape = blockstate.getShape(blockgetter, blockpos1);
|
|
|
|
for (AABB aabb : voxelshape.toAabbs()) {
|
|
AABB aabb1 = aabb.move(blockpos1).inflate(0.002);
|
|
float f = (float)(aabb1.minX - p_113672_);
|
|
float f1 = (float)(aabb1.minY - p_113673_);
|
|
float f2 = (float)(aabb1.minZ - p_113674_);
|
|
float f3 = (float)(aabb1.maxX - p_113672_);
|
|
float f4 = (float)(aabb1.maxY - p_113673_);
|
|
float f5 = (float)(aabb1.maxZ - p_113674_);
|
|
int i = -2130771968;
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.WEST)) {
|
|
VertexConsumer vertexconsumer = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer.addVertex(matrix4f, f, f1, f2).setColor(-2130771968);
|
|
vertexconsumer.addVertex(matrix4f, f, f1, f5).setColor(-2130771968);
|
|
vertexconsumer.addVertex(matrix4f, f, f4, f2).setColor(-2130771968);
|
|
vertexconsumer.addVertex(matrix4f, f, f4, f5).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.SOUTH)) {
|
|
VertexConsumer vertexconsumer1 = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer1.addVertex(matrix4f, f, f4, f5).setColor(-2130771968);
|
|
vertexconsumer1.addVertex(matrix4f, f, f1, f5).setColor(-2130771968);
|
|
vertexconsumer1.addVertex(matrix4f, f3, f4, f5).setColor(-2130771968);
|
|
vertexconsumer1.addVertex(matrix4f, f3, f1, f5).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.EAST)) {
|
|
VertexConsumer vertexconsumer2 = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer2.addVertex(matrix4f, f3, f1, f5).setColor(-2130771968);
|
|
vertexconsumer2.addVertex(matrix4f, f3, f1, f2).setColor(-2130771968);
|
|
vertexconsumer2.addVertex(matrix4f, f3, f4, f5).setColor(-2130771968);
|
|
vertexconsumer2.addVertex(matrix4f, f3, f4, f2).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.NORTH)) {
|
|
VertexConsumer vertexconsumer3 = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer3.addVertex(matrix4f, f3, f4, f2).setColor(-2130771968);
|
|
vertexconsumer3.addVertex(matrix4f, f3, f1, f2).setColor(-2130771968);
|
|
vertexconsumer3.addVertex(matrix4f, f, f4, f2).setColor(-2130771968);
|
|
vertexconsumer3.addVertex(matrix4f, f, f1, f2).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.DOWN)) {
|
|
VertexConsumer vertexconsumer4 = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer4.addVertex(matrix4f, f, f1, f2).setColor(-2130771968);
|
|
vertexconsumer4.addVertex(matrix4f, f3, f1, f2).setColor(-2130771968);
|
|
vertexconsumer4.addVertex(matrix4f, f, f1, f5).setColor(-2130771968);
|
|
vertexconsumer4.addVertex(matrix4f, f3, f1, f5).setColor(-2130771968);
|
|
}
|
|
|
|
if (blockstate.isFaceSturdy(blockgetter, blockpos1, Direction.UP)) {
|
|
VertexConsumer vertexconsumer5 = p_113671_.getBuffer(RenderType.debugFilledBox());
|
|
vertexconsumer5.addVertex(matrix4f, f, f4, f2).setColor(-2130771968);
|
|
vertexconsumer5.addVertex(matrix4f, f, f4, f5).setColor(-2130771968);
|
|
vertexconsumer5.addVertex(matrix4f, f3, f4, f2).setColor(-2130771968);
|
|
vertexconsumer5.addVertex(matrix4f, f3, f4, f5).setColor(-2130771968);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |