[1.6.4] Добавление элементов на оверлей

183
1
4
Доброе время суток, нужно добавить часы на игровой экран.
Сейчас я это делаю вот таким ивентом:
Код:
public class GuiModify extends Gui{
    public Minecraft mc;
    public RenderItem ri = new RenderItem();
    public GuiModify(Minecraft minecraft)
    {
        this.mc = minecraft;
    }

    @ForgeSubscribe
    public void onGuiRendering(RenderGameOverlayEvent.Post event)
    {
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glDepthMask(false);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(GL11.GL_ALPHA_TEST);
         if(!(event.type == ElementType.ARMOR || event.type == ElementType.AIR || event.type == ElementType.EXPERIENCE || event.type == ElementType.FOOD || event.type == ElementType.HEALTH || event.type == ElementType.HEALTHMOUNT || event.type == ElementType.HOTBAR || event.type == ElementType.JUMPBAR || event.type == ElementType.TEXT || event.type == ElementType.CHAT)) {
            GL11.glPushMatrix();
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            ri.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(Item.pocketSundial), 200, 200);
            GL11.glPopMatrix();
          }
    }    
}
Однако в результате это искажает картинку и цвета, скриншоты: http://prntscr.com/5ktzxehttp://prntscr.com/5ku019http://prntscr.com/5ku058

Как видите, результата добился, но в добавок получил проблем, как правильно делать?
 
905
5
1) Пушай выше
2) Вырубай что врубил/врубай что вырубил
 
183
1
4
Сделал так
Код:
    @ForgeSubscribe
    public void onGuiRendering(RenderGameOverlayEvent.Post event)
    {
         if(event.type == ElementType.ALL) {
             GL11.glPushMatrix();
             GL11.glEnable(GL11.GL_BLEND);
             GL11.glDisable(GL11.GL_DEPTH_TEST);
             GL11.glDepthMask(false);
             GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
             GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
             GL11.glDisable(GL11.GL_ALPHA_TEST);
             ri.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(Item.pocketSundial), 200, 200);
             GL11.glDisable(GL11.GL_BLEND);
             GL11.glEnable(GL11.GL_ALPHA_TEST);
             GL11.glDepthMask(true);
             GL11.glEnable(GL11.GL_DEPTH_TEST);
             GL11.glPopMatrix();
          }
    }
Игровой оверлей теперь выглядит нормально, однако прочие интерфейсы остались серыми
 
183
1
4
Agravaine написал(а):
Код:
GL11.glPushMatrix();
      GL11.glPushAttrib(GL11.GL_ENABLE_BIT);

        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);

// do your rendering here

      GL11.glPopAttrib();
      GL11.glPopMatrix();
Спасибо за помощь, все работает.
P.S. Что делает GL11.glPushAttrib(GL11.GL_ENABLE_BIT)?
 
Сверху