I'm currently working on a Minecraft mod and trying to implement a client-only block render. I've checked this topic on the Forge forums where someone shared code using the RenderHighlightEvent.Block event. However, the block only renders when I'm looking at it, but I need it to be rendered at all times.
I've attempted to modify the code using TickEvent.RenderTickEvent instead, and I can successfully render the block on the screen, but it's not in the correct position. Here are the parts of the code I've changed:
var player = Minecraft.getInstance().player;
Block block = Blocks.GRASS_BLOCK;
var previewPosition = new BlockPos(0, -56, 0);
var poseStack = new PoseStack(); //this poseStack
var renderer = Minecraft.getInstance().getBlockRenderer();
var buffer = Minecraft.getInstance().renderBuffers().bufferSource()
.getBuffer(RenderType.translucent());
When I use event.getPoseStack() from RenderHighlightEvent.Block, it works as intended, but if I change it to RenderSystem.getModelViewStack() or new PoseStack(), using the exact same code, only changing the event and the poseStack.The block is not in the correct place.
Could anyone provide guidance on how to achieve consistent rendering of the block at all times, using TickEvent.RenderTickEvent or an alternative approach?
Thank you in advance for your help!