I'm trying to draw a line between several coordinates in Minecraft, but the line is not displayed in the game, no matter what I do.
package net.fabricmc.example;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.util.math.Vec3d;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.text.LiteralText;
import java.util.List;
public class LineManager {
public static void createLines( List<Vec3d> points, ServerCommandSource source) {
MinecraftClient.getInstance().execute(() -> renderLines(points, source));
}
private static void renderLines(List<Vec3d> points, ServerCommandSource source) {
MinecraftClient client = MinecraftClient.getInstance();
if (client.player == null || client.world == null) {
return;
}
MatrixStack matrixStack = new MatrixStack();
matrixStack.translate(-client.player.getX(), -client.player.getY(), -client.player.getZ());
VertexConsumerProvider.Immediate vertexConsumers = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers();
for (int i = 0; i < points.size() - 1; i++) {
Vec3d start = points.get(i);
Vec3d end = points.get(i + 1);
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getLines());
matrixStack.push();
WorldRenderer.drawBox(matrixStack, vertexConsumer, (float) start.x, (float) start.y, (float) start.z, (float) end.x, (float) end.y, (float) end.z, 1.0f, 0.0f, 0.0f, 1.0f);
matrixStack.pop();
source.sendFeedback(new LiteralText(String.format("Point %d: X=%.3f, Y=%.3f, Z=%.3f", i + 1, start.x, start.y, start.z)), false);
}
vertexConsumers.draw();
}
}
I've already spent many hours, but I still can't get the line to render. I'm using fabric 1.18.2. Of course, I have the display of all particles turned on. I tried running the game with Optifine. Someone tell me in which direction to move or point out my error in the code and misunderstanding of any processes