Hi,
I'm trying to render a single quad in the world.
I'm mixing into the ChestRenderer class. If I understand correctly, BufferSource#getBuffer opens a buffer according to the supplied RenderType (Quads with POSITION_COLOR in my case).
Then, I can supply my vertices (a simple 1-block plane along the Z Axis) and close the buffer using BufferSource#endBatch for rendering.
This is the code I'm using:
@Inject(at = @At("TAIL"),
method = "render(...)V")
public void render(T blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource multiBufferSource, int packedLight, int packedOverlay, CallbackInfo ci) {
BlockPos pos = blockEntity.getBlockPos();
AABB box = new AABB(pos, pos.offset(1, 1, 1));
BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource();
VertexConsumer consumer = buffer.getBuffer(RenderType.guiOverlay());
poseStack.pushPose();
poseStack.translate(-pos.getX(), -pos.getY(), -pos.getZ());
consumer.vertex(box.minX, box.maxY, box.minZ).color(1, 1, 1, 1).endVertex();
consumer.vertex(box.minX, box.maxY, box.maxZ).color(1, 1, 1, 1).endVertex();
consumer.vertex(box.minX, box.minY, box.maxZ).color(1, 1, 1, 1).endVertex();
consumer.vertex(box.minX, box.minY, box.minZ).color(1, 1, 1, 1).endVertex();
buffer.endBatch(RenderType.guiOverlay());
poseStack.popPose();
}
However, the plane does not get rendered. However, if I replace those 4 vertices with a call to LevelRenderer#renderLineBox and set the RenderType to LINES, it works.
Do I need something else to render planes other than the 4 edges of the quad? I used QUADS back in 1.8 where it was still the raw OpenGL type and it worked then. Or am I missing something else entirely?
Thanks!