Из-за рендера строки ломается рендер панели игрока

Версия Minecraft
1.7.10
1,067
36
448
Я не особо силен в премудростях OpenGL и заранее извиняюсь, если вопрос покажется вам дуратским. Я рендерю строку в левом верхнем углу при перегрузе вот таким макаром:

Java:
    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void renderOverloadMessage(RenderGameOverlayEvent event) {
        EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;

        if (WeightRegistry.getActiveWeightProvider() instanceof WeightProvider
                && WeightRegistry.getActiveWeightProvider().isOverloaded(player.inventory, player)) {
            Minecraft.getMinecraft().fontRenderer.drawString("Вы перегружены и не можете двигаться!", 10, 10, 0xDB1818);
        }
    }

Результат явно не соответствует ожиданиям:
2019-06-10_18.11.42.png

Что я делаю не так?
 
1,067
36
448
1,076
22
130
Не так пробуешь наверно. Матрицы оверполезны, почитай материал если не знаешь зачем они
Еще тебе надо сделать проверку на элемент в котором ты отрисовываешь, типа:
if(event.type == ElementType.ALL){код отрисовки текста}
Java:
                    GL11.glPushMatrix();
                    GL11.glScalef(scale, scale, scale);
                    RenderHelper.enableGUIStandardItemLighting();
                    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
                    OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
                    if( stack.getItem() instanceof ItemWeapon){
                    ItemWeapon gunItem = (ItemWeapon)stack.getItem();
                    String s = ("Патрон: " + stack.getTagCompound().getInteger("ammo") + "/" + gunItem.getAmmo());
                    mc.fontRenderer.drawString(s, (int)(w/scale- 100),  (int)(h/scale - 65), 16777215);
                    }
                    //drawSlotInventory(mc.fontRenderer, stack, (int)(w/scale - 125), (int)(h/scale - 45));
                    GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                    RenderHelper.disableStandardItemLighting();
                    GL11.glPopMatrix();
Я так рендерю обычно
 

tox1cozZ

aka Agravaine
Модератор
7,157
456
2,165
Матрицы оверполезны, почитай материал если не знаешь зачем они
О даааа, особенно в ситуации когда он вообще никак не меняет матрицу трансформации.
Как уже сказали товарищи выще - нужно юзать Post ивент.
Для текста вообще лучше юзать if(event.type == TEXT)
 
1,067
36
448
1,067
36
448
Вместо евента RenderGameOverlayEvent.Post я подписался на RenderGameOverlayEvent.Text. Все работает, всем спасибо!
 
Сверху