diff --git a/src/main/java/cam72cam/mod/render/opengl/VBO.java b/src/main/java/cam72cam/mod/render/opengl/VBO.java index d80456b4..6f852b5b 100644 --- a/src/main/java/cam72cam/mod/render/opengl/VBO.java +++ b/src/main/java/cam72cam/mod/render/opengl/VBO.java @@ -10,8 +10,10 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormatElement; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.InventoryMenu; import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL32; @@ -175,6 +177,8 @@ protected Binding(RenderState state, boolean wait) { } else { GL32.glDisableClientState(GL32.GL_NORMAL_ARRAY); }*/ + + RenderType renderType; ShaderInstance shader; if (state.stage != null) { shader = switch (state.stage) { @@ -185,10 +189,22 @@ protected Binding(RenderState state, boolean wait) { ? GameRenderer.getRendertypeEntityCutoutShader() : RenderContext.UMC_CORE; }; + + renderType = switch (state.stage) { + case GUI -> null; + default -> RenderType.entityCutout(InventoryMenu.BLOCK_ATLAS); + }; } else { shader = GameRenderer.getRendertypeEntityCutoutShader(); + renderType = RenderType.entityCutout(InventoryMenu.BLOCK_ATLAS); + } + + if (renderType != null) { + renderType.setupRenderState(); } + RenderSystem.setShader(() -> shader); + GL32.glBindVertexArray(vao); GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, vbo); @@ -247,6 +263,11 @@ protected Binding(RenderState state, boolean wait) { this.restore = RenderContext.apply(state, true).and(() -> { RenderContext.checkError(); + + if (renderType != null) { + renderType.clearRenderState(); + } + shader.getVertexFormat().clearBufferState(); RenderContext.checkError();