103 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			5.2 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.util.ARGB;
 | |
| import net.minecraft.world.entity.Entity;
 | |
| import net.minecraft.world.level.ChunkPos;
 | |
| import org.joml.Matrix4f;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class ChunkBorderRenderer implements DebugRenderer.SimpleDebugRenderer {
 | |
| 	private final Minecraft minecraft;
 | |
| 	private static final int CELL_BORDER = ARGB.color(255, 0, 155, 155);
 | |
| 	private static final int YELLOW = ARGB.color(255, 255, 255, 0);
 | |
| 
 | |
| 	public ChunkBorderRenderer(Minecraft minecraft) {
 | |
| 		this.minecraft = minecraft;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void render(PoseStack poseStack, MultiBufferSource bufferSource, double camX, double camY, double camZ) {
 | |
| 		Entity entity = this.minecraft.gameRenderer.getMainCamera().getEntity();
 | |
| 		float f = (float)(this.minecraft.level.getMinY() - camY);
 | |
| 		float g = (float)(this.minecraft.level.getMaxY() + 1 - camY);
 | |
| 		ChunkPos chunkPos = entity.chunkPosition();
 | |
| 		float h = (float)(chunkPos.getMinBlockX() - camX);
 | |
| 		float i = (float)(chunkPos.getMinBlockZ() - camZ);
 | |
| 		VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.debugLineStrip(1.0));
 | |
| 		Matrix4f matrix4f = poseStack.last().pose();
 | |
| 
 | |
| 		for (int j = -16; j <= 32; j += 16) {
 | |
| 			for (int k = -16; k <= 32; k += 16) {
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, f, i + k).setColor(1.0F, 0.0F, 0.0F, 0.0F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, f, i + k).setColor(1.0F, 0.0F, 0.0F, 0.5F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, g, i + k).setColor(1.0F, 0.0F, 0.0F, 0.5F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, g, i + k).setColor(1.0F, 0.0F, 0.0F, 0.0F);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		for (int j = 2; j < 16; j += 2) {
 | |
| 			int k = j % 4 == 0 ? CELL_BORDER : YELLOW;
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, f, i).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, f, i).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, g, i).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, g, i).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, f, i + 16.0F).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, f, i + 16.0F).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, g, i + 16.0F).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + j, g, i + 16.0F).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 		}
 | |
| 
 | |
| 		for (int j = 2; j < 16; j += 2) {
 | |
| 			int k = j % 4 == 0 ? CELL_BORDER : YELLOW;
 | |
| 			vertexConsumer.addVertex(matrix4f, h, f, i + j).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, f, i + j).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, g, i + j).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, g, i + j).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, f, i + j).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, f, i + j).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, g, i + j).setColor(k);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, g, i + j).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 		}
 | |
| 
 | |
| 		for (int j = this.minecraft.level.getMinY(); j <= this.minecraft.level.getMaxY() + 1; j += 2) {
 | |
| 			float l = (float)(j - camY);
 | |
| 			int m = j % 8 == 0 ? CELL_BORDER : YELLOW;
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(m);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i + 16.0F).setColor(m);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, l, i + 16.0F).setColor(m);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, l, i).setColor(m);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(m);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(1.0F, 1.0F, 0.0F, 0.0F);
 | |
| 		}
 | |
| 
 | |
| 		vertexConsumer = bufferSource.getBuffer(RenderType.debugLineStrip(2.0));
 | |
| 
 | |
| 		for (int j = 0; j <= 16; j += 16) {
 | |
| 			for (int k = 0; k <= 16; k += 16) {
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, f, i + k).setColor(0.25F, 0.25F, 1.0F, 0.0F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, f, i + k).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, g, i + k).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 				vertexConsumer.addVertex(matrix4f, h + j, g, i + k).setColor(0.25F, 0.25F, 1.0F, 0.0F);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		for (int j = this.minecraft.level.getMinY(); j <= this.minecraft.level.getMaxY() + 1; j += 16) {
 | |
| 			float l = (float)(j - camY);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(0.25F, 0.25F, 1.0F, 0.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i + 16.0F).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, l, i + 16.0F).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h + 16.0F, l, i).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(0.25F, 0.25F, 1.0F, 1.0F);
 | |
| 			vertexConsumer.addVertex(matrix4f, h, l, i).setColor(0.25F, 0.25F, 1.0F, 0.0F);
 | |
| 		}
 | |
| 	}
 | |
| }
 |