Как добавить худ

Версия Minecraft
1.7.10
516
11
39
Привет форумчане,Можете скинуть гайд или мод в котором объясняется ,как добавить худ(фпс,ника,пинга и изменение худа здоровья и брони)
 
49
3
3
Регистрируешь в клиент-прокси класс с эвентами:
Код:
@Override
public void registerEvents() {
    super.registerEvents();
    MinecraftForge.EVENT_BUS.register(new GuiInGame(Minecraft.getMinecraft()));
}
Далее в создаешь тот самый класс с эвентами и в методе renderGameOverlayEvent делаешь свои дела.
Код:
@SideOnly(Side.CLIENT)
public class GuiInGame extends GuiIngameForge {
    private Minecraft mc;


    public GuiInGame(Minecraft mc) {
        super(mc);
        this.mc = mc;
    }

    @SubscribeEvent()
    public void renderGameOverlayEvent(RenderGameOverlayEvent.Pre event) {


    }
}
 

timaxa007

Модератор
5,831
409
672
Отменить старые элементы и зарендерить свои, у меня пример на 1.6.4 (но не сильно отличия, если знать что писать.).
Код:
package timaxa007.ingame_hud;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.event.ForgeSubscribe;

public class EventClientForge {

    private static final Minecraft mc = Minecraft.getMinecraft();
    private static final RenderItem itemRenderer = new RenderItem();
    private static final ResourceLocation texture = new ResourceLocation(IngameHudMod.MODID, "textures/hud/hud.png");
    private static final int xSize = 1024, ySize = 218;

    @ForgeSubscribe
    public void setCanceled(RenderGameOverlayEvent.Pre event) {
        switch(event.type) {
        case FOOD:
        case HEALTH:
        case ARMOR:
        case HOTBAR:
        case EXPERIENCE:
            event.setCanceled(true);
            break;
        default:
            break;
        }
    }

    @ForgeSubscribe
    public void drawText(RenderGameOverlayEvent.Post event) {
        switch(event.type) {
        case ALL:
            int x = (event.resolution.getScaledWidth() - 512) / 2;
            int y = event.resolution.getScaledHeight() - 109;

            mc.getTextureManager().bindTexture(texture);
            drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
         
            float f = (mc.thePlayer.getHealth() / mc.thePlayer.getMaxHealth()) * 96F;
            drawTexturedModalRect(x + 77, y + 26F + ((96F - f) / 2F), 223, 295F + (96F - f), 96, f);
         
            f = (mc.thePlayer.getFoodStats().getFoodLevel() / 20F) * 96F;
            drawTexturedModalRect(x + 381, y + 26F + ((96F - f) / 2F) + 0.5F, 687, 295F + (96F - f), 96, f);

            renderHotbar(event.resolution.getScaledWidth(), event.resolution.getScaledHeight(), event.partialTicks);
            break;
        case TEXT:
            break;
        default:
            break;
        }
    }

    private static void renderHotbar(int width, int height, float partialTicks) {
        mc.mcProfiler.startSection("actionBar");

        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

        InventoryPlayer inv = mc.thePlayer.inventory;
        drawTexturedModalRect(width / 2 - 139 + inv.currentItem * 29 + 2 + (inv.currentItem / 2), height - 46, 217, 408, 62, 62);

        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL12.GL_RESCALE_NORMAL);
        RenderHelper.enableGUIStandardItemLighting();

        itemRenderer.zLevel += 200;

        int x = width / 2 - 66 + 0 * 25 + 2;
        int z = height - 72;
        renderInventorySlot(inv.mainInventory.length + 3, x, z, partialTicks);
     
        x = width / 2 - 66 + 1 * 25 + 2;
        renderInventorySlot(inv.mainInventory.length + 2, x, z, partialTicks);
     
        x = width / 2 - 38 + 2 * 25 + 2;
        renderInventorySlot(inv.mainInventory.length + 1, x, z, partialTicks);
     
        x = width / 2 - 38 + 3 * 25 + 2;
        renderInventorySlot(inv.mainInventory.length + 0, x, z, partialTicks);

        for (int i = 0; i < inv.getHotbarSize(); ++i) {
            x = width / 2 - 131 + i * 29 + 2 + (i / 2);
            z = height - 38;
            renderInventorySlot(i, x, z, partialTicks);
        }

        itemRenderer.zLevel -= 200;

        RenderHelper.disableStandardItemLighting();
        GL11.glDisable(GL12.GL_RESCALE_NORMAL);

        mc.mcProfiler.endSection();
    }

    private static void drawTexturedModalRect(float x, float y, float xPos, float yPos, float xSize, float ySize) {
        float f = 0.0009765625F;
        float f1 = 0.0009765625F;
        Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV((double)x, (double)(y + (ySize / 2F)), 0D, (double)((float)xPos * f), (double)((float)(yPos + ySize) * f1));
        tessellator.addVertexWithUV((double)(x + (xSize / 2F)), (double)(y + (ySize / 2F)), 0D, (double)((float)(xPos + xSize) * f), (double)((float)(yPos + ySize) * f1));
        tessellator.addVertexWithUV((double)(x + (xSize / 2F)), (double)y, 0D, (double)((float)(xPos + xSize) * f), (double)((float)yPos * f1));
        tessellator.addVertexWithUV((double)x, (double)y, 0D, (double)((float)xPos * f), (double)((float)yPos * f1));
        tessellator.draw();
    }

    private static void renderInventorySlot(int slotID, int x, int y, float par4) {
        ItemStack itemstack = mc.thePlayer.inventory.getStackInSlot(slotID);

        if (itemstack != null) {
            float f1 = (float)itemstack.animationsToGo - par4;

            if (f1 > 0.0F) {
                GL11.glPushMatrix();
                float f2 = 1.0F + f1 / 5.0F;
                GL11.glTranslatef((float)(x + 8), (float)(y + 12), 0.0F);
                GL11.glScalef(1.0F / f2, (f2 + 1.0F) / 2.0F, 1.0F);
                GL11.glTranslatef((float)(-(x + 8)), (float)(-(y + 12)), 0.0F);
            }

            itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemstack, x, y);

            if (f1 > 0.0F) GL11.glPopMatrix();

            itemRenderer.renderItemOverlayIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemstack, x, y);
        }
    }

}
И типа будет выглядеть как тут (пример без waterMark'и нету):
[IMG='width:261px;']https://pp.userapi.com/c851032/v851032161/11f76/BcoGfU5CBwA.jpg[/IMG]
 
Сверху