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);
}
}
}