Рендер второй демейдж-полоски на предмете.

Версия Minecraft
1.12.2
5,018
47
783
Каким эвентом отрисовывать мою damage-полоску на предмете?
Java:
public class NewDamageItemBarEvent {
    
    @SubscribeEvent
    public void renderDamage(GuiScreenEvent e) {
        Minecraft mc = Minecraft.getMinecraft();
        FontRenderer fr = mc.fontRenderer;
        ItemStack stack = mc.player.inventory.getItemStack();
        if (!stack.isEmpty())
        {
            if (stack.getItem() instanceof BasicFood)
            {
            
                GlStateManager.disableLighting();
                GlStateManager.disableDepth();
                GlStateManager.disableTexture2D();
                GlStateManager.disableAlpha();
                GlStateManager.disableBlend();
                Tessellator tessellator = Tessellator.getInstance();
                BufferBuilder bufferbuilder = tessellator.getBuffer();
                double health = stack.getItem().getDurabilityForDisplay(stack);
                int rgbfordisplay = stack.getItem().getRGBDurabilityForDisplay(stack);
                int i = Math.round(13.0F - (float)health * 13.0F);
                int j = rgbfordisplay;
                int xPos = e.getGui().width / 2 + 10;
                int yPos = e.getGui().height - 49;
                draw(bufferbuilder, xPos + 2, yPos + 14, 13, 2, 0, 0, 0, 255);
                draw(bufferbuilder, xPos + 2, yPos + 13, i, 1, j >> 16 & 255, j >> 8 & 255, j & 255, 255);
                GlStateManager.enableBlend();
                GlStateManager.enableAlpha();
                GlStateManager.enableTexture2D();
                GlStateManager.enableLighting();
                GlStateManager.enableDepth();
            }
        }
    }
Мне нужно именно на предмете в инвентаре, а не абы где на экране.
 
Решение
У меня пока что через хук только получилось, но почему то нету зеленой полоски.
Посмотреть вложение 1147
P.S Тебе в дискорд писать можно неделю ответа ждать.
Ваобщета нет! То что у тебя полоска не отображается это из-за того что ты её не заполнил, не указал значения или твоё значение пустое

Icosider

Kotliner
Администратор
3,603
99
664
Мог бы в дискорд отписать -_-. Проверяй на свой инвентарь(если тот текущий), дальше рендеришь полоску над предметом, полоску нужно по Z "поднять", чтобы она не была под иконкой. Судя по коду, копипаст, но может быть я ошибаюсь.
 
5,018
47
783
Не цитируйте предыдущее сообщение, если отвечаете на него целиком!
У меня пока что через хук только получилось, но почему то нету зеленой полоски.
2018-02-01_20.26.48.png
P.S Тебе в дискорд писать можно неделю ответа ждать.
 

Icosider

Kotliner
Администратор
3,603
99
664
У меня пока что через хук только получилось, но почему то нету зеленой полоски.
Посмотреть вложение 1147
P.S Тебе в дискорд писать можно неделю ответа ждать.
Ваобщета нет! То что у тебя полоска не отображается это из-за того что ты её не заполнил, не указал значения или твоё значение пустое
 

Icosider

Kotliner
Администратор
3,603
99
664
5,018
47
783
Через хук, вроде решил проблему.
Ивасику спасибо.2018-02-01_21.50.12.png
 
5,018
47
783
Хук в ваниллу. В RenderItem#renderItemOverlayIntoGUI

Java:
    if (stack.getItem() instanceof BasicFood)
            {
                GlStateManager.disableLighting();
                GlStateManager.disableDepth();
                GlStateManager.disableTexture2D();
                GlStateManager.disableAlpha();
                GlStateManager.disableBlend();
                Tessellator tessellator = Tessellator.getInstance();
                BufferBuilder bufferbuilder = tessellator.getBuffer();
  
                BasicDamageFood bf = (BasicDamageFood)stack.getItem();
              
                int health = bf.shelflife;
                int rgbfordisplay = MathHelper.hsvToRGB((float) ((((double)2)) / 1F), 1.0F, 1.0F);
                int i = Math.round(13.0F - (float)health * 13.0F);
                int j = rgbfordisplay;
              
                draw(bufferbuilder, xPosition + 2, yPosition + 13, health, 1,
                        j >> 16 & 255,
                        j >> 8 & 255,
                        j & 255, 255
                        );
                GlStateManager.enableBlend();
                GlStateManager.enableAlpha();
                GlStateManager.enableTexture2D();
                GlStateManager.enableLighting();
                GlStateManager.enableDepth();
            }
 
7,099
324
1,510
А че не полностью? Даже не видно, куда хук вставляется
 
5,018
47
783
7,099
324
1,510
Сверху