Рисовать объект через облака

Версия Minecraft
1.12.2
API
Forge
7,147
329
1,534
Рисую квад на расстоянии 100 от игрока.
На скрине видно, что через полупрозрачные облака просвечивают звезды. Мой квад не просвечивает. Как сделать, чтобы просвечивал?
Java:
@SubscribeEvent
public static void render(RenderWorldLastEvent event) {
    GlStateManager.enableAlpha();
    GlStateManager.enableBlend();
    GlStateManager.disableLighting();

    GlStateManager.pushMatrix();

    mc.getTextureManager().bindTexture(new ResourceLocation(...));

    BufferBuilder buffer = Tessellator.getInstance().getBuffer();
    buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);

    pos(buffer, p1).tex(0, 0).color(255, 0, 255, 255).endVertex();
    pos(buffer, p2).tex(1, 0).color(255, 0, 255, 255).endVertex();
    pos(buffer, p3).tex(1, 1).color(255, 0, 255, 255).endVertex();
    pos(buffer, p4).tex(0, 1).color(255, 0, 255, 255).endVertex();

    Tessellator.getInstance().draw();

    GlStateManager.popMatrix();
}
1685650146724.png
 
Дело не в прозрачности, а в z-буфере и последовательности отрисовки.
RenderWorldLastEvent рисуется последним и работает уже с финальной глубиной.
Прозрачности в канале глубины нет и быть не может, как ты понимаешь. Поэтому твой квад тупо обрубается.
Единственный выход, рисовать его перед облаками, чтобы они уже накладывались на него со своей прозрачностью.
Зайди в класс глобального рендера (или рендера мира) и найди нужный эвент.
Это либо эвент отрисовки облаков, либо неба, либо вообще фигач его в эвент отрисовки выделения блоков.
В общем, прояви фантазию )
Я не помню, какие события там есть, но их точно несколько.
 
Назад
Сверху