package uk.co.wehavecookies56.kk.client.gui; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import uk.co.wehavecookies56.kk.common.capability.ModCapabilities; import uk.co.wehavecookies56.kk.common.core.handler.ConfigHandler; import uk.co.wehavecookies56.kk.common.lib.Constants; import uk.co.wehavecookies56.kk.common.lib.Reference; public class GuiHP extends GuiScreen { int guiWidth = 173; int hpBarWidth; int guiHeight = 10; int noborderguiwidth = 171; public void drawHPBarBack (int posX, int posY, int width, float scale) { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Reference.MODID, "textures/gui/hpbar.png")); GL11.glPushMatrix(); { GL11.glPushMatrix(); { GL11.glTranslatef(scale * posX, scale * posY, 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 0, 0, 2, 10); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 2) * scale, posY * scale, 0); GL11.glScalef(width, scale, 0); drawTexturedModalRect(0, 0, 2, 0, 1, 10); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 2) * scale + width, scale * posY, 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 3, 0, 2, 10); } GL11.glPopMatrix(); } GL11.glPopMatrix(); } public void drawHPBarTop (int posX, int posY, int width, float scale) { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Reference.MODID, "textures/gui/hpbar.png")); GL11.glPushMatrix(); { GL11.glPushMatrix(); { GL11.glTranslatef(scale * (posX + 2), scale * (posY + 2), 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 2, 12, 2, 6); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 4) * scale, (posY + 2) * scale, 0); GL11.glScalef(width, scale, 0); drawTexturedModalRect(0, 0, 3, 12, 1, 6); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 4) * scale + width, scale * (posY + 2), 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 4, 12, 2, 6); } GL11.glPopMatrix(); } GL11.glPopMatrix(); } public void drawHPBarTopRed (int posX, int posY, int width, float scale) { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Reference.MODID, "textures/gui/hpbar.png")); GL11.glPushMatrix(); { GL11.glPushMatrix(); { GL11.glTranslatef(scale * (posX + 2), scale * (posY + 2), 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 2, 22, 2, 6); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 4) * scale, (posY + 2) * scale, 0); GL11.glScalef(width, scale, 0); drawTexturedModalRect(0, 0, 3, 22, 1, 6); } GL11.glPopMatrix(); GL11.glPushMatrix(); { GL11.glTranslatef((posX + 4) * scale + width, scale * (posY + 2), 0); GL11.glScalef(scale, scale, 0); drawTexturedModalRect(0, 0, 4, 22, 2, 6); } GL11.glPopMatrix(); } GL11.glPopMatrix(); } @SubscribeEvent public void onRenderOverlayPost (RenderGameOverlayEvent event) { if (!ConfigHandler.displayGUI()) return; if(!Minecraft.getMinecraft().player.getCapability(ModCapabilities.PLAYER_STATS, null).getHudMode()) return; if (event.getType().equals(ElementType.HEALTH) && event.isCancelable()) if (!ConfigHandler.EnableHeartsOnHUD) event.setCanceled(true); if (event.getType() == RenderGameOverlayEvent.ElementType.TEXT) { Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.player; mc.renderEngine.bindTexture(new ResourceLocation(Reference.MODID, "textures/gui/hpbar.png")); int screenWidth = event.getResolution().getScaledWidth(); int screenHeight = event.getResolution().getScaledHeight(); float oneHeart = (noborderguiwidth / player.getMaxHealth()); int currHealth = noborderguiwidth - (int) (oneHeart * player.getHealth()); float scale = 0.65f; hpBarWidth = (int) ((int) player.getHealth() * 1.5); int hpBarMaxWidth = (int) ((int) player.getMaxHealth() * 1.5); switch (mc.gameSettings.guiScale) { case Constants.SCALE_AUTO: scale = 0.85f; break; case Constants.SCALE_NORMAL: scale = 0.85f; break; default: scale = 0.65f; break; } int posX = 190 - hpBarWidth; GL11.glPushMatrix(); GL11.glTranslatef((screenWidth - hpBarMaxWidth * scale) - 10 * scale, (screenHeight - guiHeight * scale) + 3 * scale, 0); GL11.glScalef(scale, scale, scale); drawHPBarBack(0, 0, hpBarMaxWidth, scale); GL11.glPopMatrix(); if (player.getHealth() >= player.getMaxHealth()/5) { GL11.glPushMatrix(); GL11.glTranslatef((screenWidth - (hpBarWidth) * scale) - 10 * scale, (screenHeight - (guiHeight) * scale) + 3 * scale, 0); GL11.glScalef(scale, scale, scale); drawHPBarTop(0, 0, (int) ((hpBarWidth - (4 * scale))), scale); GL11.glPopMatrix(); } else { GL11.glPushMatrix(); GL11.glTranslatef((screenWidth - (hpBarWidth) * scale) - 10 * scale, (screenHeight - (guiHeight) * scale) + 3 * scale, 0); GL11.glScalef(scale, scale, scale); drawHPBarTopRed(0, 0, (int) ((hpBarWidth - (4 * scale))), scale); GL11.glPopMatrix(); } } } }