Example usage for org.lwjgl.opengl GL11 glPushMatrix

List of usage examples for org.lwjgl.opengl GL11 glPushMatrix

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL11 glPushMatrix.

Prototype

public static native void glPushMatrix();

Source Link

Document

Pushes the current matrix stack down by one, duplicating the current matrix in both the top of the stack and the entry below it.

Usage

From source file:com.itszuvalex.femtocraft.power.render.RenderNullEqualizer.java

License:Open Source License

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) {
    GL11.glPushMatrix();
    GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
    Minecraft.getMinecraft().renderEngine.bindTexture(
            new ResourceLocation(Femtocraft.ID().toLowerCase(), "textures/blocks/blockNullEqualizer.png"));
    GL11.glPushMatrix();/*from ww  w  . j a va  2 s .  co m*/
    GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
    model.render();
    GL11.glPopMatrix();
    GL11.glPopMatrix();
}

From source file:com.itszuvalex.femtocraft.power.render.RenderOrbitalEqualizer.java

License:Open Source License

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) {
    GL11.glPushMatrix();
    GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
    Minecraft.getMinecraft().renderEngine.bindTexture(
            new ResourceLocation(Femtocraft.ID().toLowerCase(), "textures/blocks/blockOrbitalEqualizer.png"));
    GL11.glPushMatrix();/*  w w  w  .  jav a 2 s .co m*/
    GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
    model.render();
    GL11.glPopMatrix();
    GL11.glPopMatrix();
}

From source file:com.itszuvalex.femtocraft.research.gui.GuiResearch.java

License:Open Source License

protected void genAchievementBackground(int par1, int par2, float par3) {
    int k = MathHelper.floor_double(field_74117_m + (guiMapX - field_74117_m) * (double) par3);
    int l = MathHelper.floor_double(field_74115_n + (guiMapY - field_74115_n) * (double) par3);

    if (k < guiMapTop) {
        k = guiMapTop;//from  w w w  .  j av  a2 s.co m
    }

    if (l < guiMapLeft) {
        l = guiMapLeft;
    }

    if (k >= guiMapBottom) {
        k = guiMapBottom - 1;
    }

    if (l >= guiMapRight) {
        l = guiMapRight - 1;
    }

    int i1 = (this.width - this.researchPaneWidth) / 2;
    int j1 = (this.height - this.researchPaneHeight) / 2;
    int k1 = i1 + 16;
    int l1 = j1 + 17;
    this.zLevel = 0.0F;
    GL11.glDepthFunc(GL11.GL_GEQUAL);
    GL11.glPushMatrix();
    GL11.glTranslatef(0.0F, 0.0F, -200.0F);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glDisable(GL11.GL_LIGHTING);
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
    GL11.glEnable(GL11.GL_COLOR_MATERIAL);
    int i2 = k + 288 >> 4;
    int j2 = l + 288 >> 4;
    int k2 = (k + 288) % 16;
    int l2 = (l + 288) % 16;
    Random random = new Random();
    int i3;
    int j3;
    int k3;

    // Make background

    for (i3 = 0; i3 * 16 - l2 < 155; ++i3) {
        float f1 = 0.6F - (float) (j2 + i3) / 25.0F * 0.3F;
        GL11.glColor4f(f1, f1, f1, 1.0F);

        for (k3 = 0; k3 * 16 - k2 < 224; ++k3) {
            random.setSeed((long) (1234 + i2 + k3));
            random.nextInt();
            j3 = random.nextInt(1 + j2 + i3) + (j2 + i3) / 2;
            IIcon icon = Blocks.sand.getIcon(0, 0);

            if (j3 <= 37 && j2 + i3 != 35) {
                if (j3 == 22) {
                    if (random.nextInt(2) == 0) {
                        icon = Femtocraft.blockOrePlatinum().getIcon(0, 0);
                    } else {
                        icon = Femtocraft.blockOreFarenite().getIcon(0, 0);
                    }
                } else if (j3 == 10) {
                    icon = Femtocraft.blockOreTitanium().getIcon(0, 0);
                } else if (j3 == 8) {
                    icon = Femtocraft.blockOreThorium().getIcon(0, 0);
                } else if (j3 > 4) {
                    icon = Blocks.stone.getIcon(0, 0);
                } else if (j3 > 0) {
                    icon = Blocks.dirt.getIcon(0, 0);
                }
            } else {
                icon = Blocks.bedrock.getIcon(0, 0);
            }

            Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
            this.drawTexturedModelRectFromIcon(k1 + k3 * 16 - k2, l1 + i3 * 16 - l2, icon, 16, 16);
        }
    }

    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glDepthFunc(GL11.GL_LEQUAL);
    //        GL11.glDisable(GL11.GL_TEXTURE_2D);
    int l3;
    int i4;
    int j4;

    for (ITechnology tech : Femtocraft.researchManager().getTechnologies()) {
        ResearchStatus rs = researchStatus.getTechnology(tech.getName());
        if (rs == null) {
            continue;
        }
        if (tech.getPrerequisites() != null) {
            for (String cr : tech.getPrerequisites()) {
                TechNode node = Femtocraft.researchManager().getNode(tech);

                for (IGraphNode parent : node.getParents()) {
                    IGraphNode next = parent;
                    IGraphNode prev = node;
                    while (next instanceof DummyTechNode) {
                        k3 = prev.getDisplayX() * 24 - k + 11 + k1;
                        j3 = prev.getDisplayY() * 24 - l + 11 + l1 - 11;
                        j4 = next.getDisplayX() * 24 - k + 11 + k1;
                        l3 = next.getDisplayY() * 24 - l + 11 + l1 + 11;
                        boolean flag6 = !rs.researched();
                        i4 = Math.sin(
                                (double) (Minecraft.getSystemTime() % 600L) / 600.0D * Math.PI * 2.0D) > 0.6D
                                        ? 255
                                        : 130;
                        int color = tech.getLevel().getColor();
                        if (flag6) {
                            color += (i4 << 24);
                        } else {
                            color += (255 << 24);
                        }

                        // this.drawHorizontalLine(k3, j4, j3, color);
                        // this.drawVerticalLine(j4, j3, l3, color);
                        RenderUtils.drawLine(k3, j4, j3, l3, 1, color);
                        RenderUtils.drawLine(j4, j4, l3 - 22, l3, 1, color);

                        // Dummy nodes should only have 1 parent
                        prev = next;
                        next = next.getParents().get(0);
                    }

                    k3 = prev.getDisplayX() * 24 - k + 11 + k1;
                    j3 = prev.getDisplayY() * 24 - l + 11 + l1 - 11;
                    j4 = next.getDisplayX() * 24 - k + 11 + k1;
                    l3 = next.getDisplayY() * 24 - l + 11 + l1 + 11;
                    boolean flag6 = !rs.researched();
                    i4 = Math.sin((double) (Minecraft.getSystemTime() % 600L) / 600.0D * Math.PI * 2.0D) > 0.6D
                            ? 255
                            : 130;
                    int color = tech.getLevel().getColor();
                    if (flag6) {
                        color += (i4 << 24);
                    } else {
                        color += (255 << 24);
                    }

                    // this.drawHorizontalLine(k3, j4, j3, color);
                    // this.drawVerticalLine(j4, j3, l3, color);
                    RenderUtils.drawLine(k3, j4, j3, l3, 1, color);
                }
            }
        }
    }

    ITechnology tooltipTech = null;
    RenderItem renderitem = new RenderItem();
    RenderHelper.enableGUIStandardItemLighting();
    GL11.glDisable(GL11.GL_LIGHTING);
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
    GL11.glEnable(GL11.GL_COLOR_MATERIAL);
    int l4;
    int i5;

    for (ITechnology tech : Femtocraft.researchManager().getTechnologies()) {
        ResearchStatus ts = researchStatus.getTechnology(tech.getName());
        if (ts == null) {
            continue;
        }
        TechNode node = Femtocraft.researchManager().getNode(tech);
        j4 = node.getDisplayX() * 24 - k;
        l3 = node.getDisplayY() * 24 - l;

        if (j4 >= -24 && l3 >= -24 && j4 <= 224 && l3 <= 155) {
            float f2;

            if (ts.researched()) {
                f2 = 1.0F;
                GL11.glColor4f(f2, f2, f2, 1.0F);
            } else {
                f2 = Math.sin((double) (Minecraft.getSystemTime() % 600L) / 600.0D * Math.PI * 2.0D) < 0.6D
                        ? 0.6F
                        : 0.8F;
                GL11.glColor4f(f2, f2, f2, 1.0F);
            }
            // else {
            // f2 = 0.3F;
            // GL11.glColor4f(f2, f2, f2, 1.0F);
            // }

            Minecraft.getMinecraft().getTextureManager().bindTexture(achievementTextures);
            i5 = k1 + j4;
            l4 = l1 + l3;

            GL11.glEnable(GL11.GL_BLEND);// Forge: Specifically enable blend because it is needed here. And we
            // fix Generic RenderItem's leakage of it.
            if (tech.isKeystone()) {
                this.drawTexturedModalRect(i5 - 2, l4 - 2, 26, 202, 26, 26);
            } else {
                this.drawTexturedModalRect(i5 - 2, l4 - 2, 0, 202, 26, 26);
            }
            GL11.glDisable(GL11.GL_BLEND); //Forge: Cleanup states we set.
            //
            // if (!this.statFileWriter.canUnlockAchievement(achievement2))
            // {
            // float f3 = 0.1F;
            // GL11.glColor4f(f3, f3, f3, 1.0F);
            // renderitem.renderWithColor = false;
            // }

            GL11.glDisable(GL11.GL_LIGHTING); //Forge: Make sure Lighting is disabled. Fixes MC-33065
            GL11.glEnable(GL11.GL_CULL_FACE);

            RenderHelper.enableGUIStandardItemLighting();
            //                GL11.glDisable(GL11.GL_LIGHTING);
            //                GL11.glBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            //                GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            //                GL11.glEnable(GL11.GL_COLOR_MATERIAL);
            //                GL11.glEnable(GL11.GL_LIGHTING);
            //                GL11.glEnable(GL11.GL_CULL_FACE);
            renderitem.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer,
                    Minecraft.getMinecraft().getTextureManager(), tech.getDisplayItem(), i5 + 3, l4 + 3);
            RenderHelper.disableStandardItemLighting();
            //                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            //                GL11.glDisable(GL11.GL_LIGHTING);
            //                GL11.glDisable(GL12.GL_RESCALE_NORMAL);

            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            GL11.glDisable(GL11.GL_LIGHTING);

            // if (!this.statFileWriter.canUnlockAchievement(achievement2))
            // {
            // renderitem.renderWithColor = true;
            // }

            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

            if (par1 >= k1 && par2 >= l1 && par1 < k1 + 224 && par2 < l1 + 155 && par1 >= i5 && par1 <= i5 + 22
                    && par2 >= l4 && par2 <= l4 + 22) {
                tooltipTech = tech;
            }
        }
    }

    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glPopMatrix();
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    Minecraft.getMinecraft().getTextureManager().bindTexture(achievementTextures);
    this.drawTexturedModalRect(i1, j1, 0, 0, this.researchPaneWidth, this.researchPaneHeight);
    //        GL11.glPopMatrix();
    this.zLevel = 0.0F;
    GL11.glDepthFunc(GL11.GL_LEQUAL);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    super.drawScreen(par1, par2, par3);

    if (tooltipTech != null) {

        ResearchStatus status = researchStatus.getTechnology(tooltipTech.getName());
        String s = tooltipTech.getName();
        String s1 = tooltipTech.getShortDescription();
        j4 = par1 + 12;
        l3 = par2 - 4;

        i5 = Math.max(this.fontRendererObj.getStringWidth(s), 120);
        l4 = this.fontRendererObj.splitStringWidth(s1, i5);

        if (status.researched()) {
            l4 += 12;
        }

        this.drawGradientRect(j4 - 3, l3 - 3, j4 + i5 + 3, l3 + l4 + 3 + 12, -1073741824, -1073741824);
        this.fontRendererObj.drawSplitString(s1, j4, l3 + 12, i5, -6250336);

        if (status.researched()) {
            this.fontRendererObj.drawStringWithShadow("Researched!", j4, l3 + l4 + 4, -7302913);
        }

        // Keep Commented

        // else {
        // i5 = Math.max(this.fontRenderer.getStringWidth(s), 120);
        // String s2 = I18n.getStringParams("achievement.requires",
        // new Object[] { I18n
        // .getString(tooltipTech.parentAchievement
        // .getName()) });
        // i4 = this.fontRenderer.splitStringWidth(s2, i5);
        // this.drawGradientRect(j4 - 3, l3 - 3, j4 + i5 + 3, l3 + i4 + 12
        // + 3, -1073741824, -1073741824);
        // this.fontRenderer
        // .drawSplitString(s2, j4, l3 + 12, i5, -9416624);
        // }

        this.fontRendererObj.drawStringWithShadow(s, j4, l3,
                status.researched() ? (tooltipTech.isKeystone() ? -128 : -1)
                        : (tooltipTech.isKeystone() ? -8355776 : -8355712));
    }

    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_LIGHTING);
    RenderHelper.disableStandardItemLighting();
}

From source file:com.jadarstudios.rankcapes.forge.gui.GuiCapeSelect.java

License:MIT License

@Override
public void drawScreen(int mouseX, int mouseY, float delta) {
    // draws the black background
    this.drawDefaultBackground();

    // reset color
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

    // set GUI texture
    mc.getTextureManager().bindTexture(background);

    // draw GUI texture
    this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 166);

    // new GL matrix
    GL11.glPushMatrix();
    {/*from  w ww  .  j a v  a 2  s.  com*/
        // move matrix into position
        GL11.glTranslatef(this.guiLeft + 51, this.guiTop + 114, 130);

        // rotate matrix
        GL11.glRotatef(180, 0, 1, 0);

        // draw player
        GuiInventory.func_147046_a(-77, -5, 50, mouseX - (this.guiLeft + 127), this.guiTop + 32 - mouseY,
                mc.thePlayer);
    }
    // end
    GL11.glPopMatrix();

    // draws buttons.
    if (this.buttonPages != null && this.buttonPages.size() > 0) {
        GuiButton[] buttonPage = this.buttonPages.get(this.currentPage);

        for (GuiButton bttn : buttonPage) {
            if (bttn != null) {
                bttn.drawButton(mc, mouseX, mouseY);
            }
        }
    }

    // super call.
    super.drawScreen(mouseX, mouseY, delta);
}

From source file:com.jmanpenilla.carbonmod.client.render.item.RenderCompressionChamberItem.java

License:LGPL

private static void renderCompressionChamber(float x, float y, float z, float scale) {
    GL11.glPushMatrix();

    // Disable Lighting Calculations
    GL11.glDisable(GL11.GL_LIGHTING);//w  w w  .jav  a2 s  .  co m

    GL11.glTranslatef(x, y, z);

    FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);

    GL11.glScalef(scale, scale, scale);
    GL11.glRotatef(180f, 0f, 0f, 1f);

    RenderCompressionChamber.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);

    // Re-enable Lighting Calculations
    GL11.glEnable(GL11.GL_LIGHTING);
    GL11.glPopMatrix();
}

From source file:com.jmex.bui.BGlComponent.java

License:Open Source License

@Override
public void renderComponent(final Renderer renderer) {
    super.renderComponent(renderer);

    GL11.glPushMatrix();

    BComponent.applyDefaultStates();/*from w w  w .  j  a v  a2  s.  c o m*/

    GL11.glScalef(_width, _height, 0);

    renderGl();

    GL11.glPopMatrix();
}

From source file:com.kanbekotori.keycraft.renderer.RenderJavelin.java

License:Open Source License

public void doRender(EntityJavelin entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) {
    this.bindEntityTexture(entity);
    GL11.glPushMatrix();
    GL11.glTranslated(x, y, z);//from w  w  w  .java 2s  .c  o  m
    //
    GL11.glTranslatef(0.0F, entity.height / 2.0F, 0.0F);
    GL11.glRotatef(entity.prevRotationYaw - 90.0F, 0.0F, 1.0F, 0.0F);
    GL11.glRotatef(entity.prevRotationPitch, 0.0F, 0.0F, 1.0F);

    Tessellator tessellator = Tessellator.instance;
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);

    float f10 = 0.05625F;
    GL11.glScalef(f10, f10, f10);
    for (int i = 0; i < 4; ++i) {
        GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
        GL11.glNormal3f(0.0F, 0.0F, f10);
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(-3.25D, -0.5D, 0.0D, 1.0D / 16.0D, 14.0D / 16.0D); // 
        tessellator.addVertexWithUV(3.25D, -0.5D, 0.0D, 14.0D / 16.0D, 1.0D / 16.0D); // 
        tessellator.addVertexWithUV(3.25D, 0.5D, 0.0D, 16.0D / 16.0D, 3.0D / 16.0D); // 
        tessellator.addVertexWithUV(-3.25D, 0.5D, 0.0D, 3.0D / 16.0D, 16.0D / 16.0D); // 
        tessellator.draw();
    }

    GL11.glDisable(GL12.GL_RESCALE_NORMAL);
    GL11.glPopMatrix();
}

From source file:com.kegare.caveworld.client.gui.GuiListSlot.java

License:Minecraft Mod Public

private void drawPanorama(float ticks) {
    Tessellator tessellator = Tessellator.instance;
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPushMatrix();
    GL11.glLoadIdentity();// w  ww  . j  ava2s. co m
    Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPushMatrix();
    GL11.glLoadIdentity();
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
    GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDisable(GL11.GL_ALPHA_TEST);
    GL11.glDisable(GL11.GL_CULL_FACE);
    GL11.glDepthMask(false);
    OpenGlHelper.glBlendFunc(770, 771, 1, 0);
    byte b0 = 8;

    for (int k = 0; k < b0 * b0; ++k) {
        GL11.glPushMatrix();
        float f1 = ((float) (k % b0) / (float) b0 - 0.5F) / 64.0F;
        float f2 = ((float) (k / b0) / (float) b0 - 0.5F) / 64.0F;
        float f3 = 0.0F;
        GL11.glTranslatef(f1, f2, f3);
        GL11.glRotatef(MathHelper.sin((panoramaTimer + ticks) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F);
        GL11.glRotatef(-(panoramaTimer + ticks) * 0.1F, 0.0F, 1.0F, 0.0F);

        for (int l = 0; l < 6; ++l) {
            GL11.glPushMatrix();

            if (l == 1) {
                GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
            }

            if (l == 2) {
                GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
            }

            if (l == 3) {
                GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
            }

            if (l == 4) {
                GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
            }

            if (l == 5) {
                GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
            }

            mc.getTextureManager().bindTexture(getPanoramaPaths().getPath(l));
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA_I(16777215, 255 / (k + 1));
            float f4 = 0.0F;
            tessellator.addVertexWithUV(-1.0D, -1.0D, 1.0D, 0.0F + f4, 0.0F + f4);
            tessellator.addVertexWithUV(1.0D, -1.0D, 1.0D, 1.0F - f4, 0.0F + f4);
            tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, 1.0F - f4, 1.0F - f4);
            tessellator.addVertexWithUV(-1.0D, 1.0D, 1.0D, 0.0F + f4, 1.0F - f4);
            tessellator.draw();
            GL11.glPopMatrix();
        }

        GL11.glPopMatrix();
        GL11.glColorMask(true, true, true, false);
    }

    tessellator.setTranslation(0.0D, 0.0D, 0.0D);
    GL11.glColorMask(true, true, true, true);
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPopMatrix();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPopMatrix();
    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
}

From source file:com.kegare.caveworld.client.gui.GuiRegeneration.java

License:Minecraft Mod Public

@Override
public void drawScreen(int mouseX, int mouseY, float ticks) {
    drawGradientRect(0, 0, width, height, Integer.MIN_VALUE, Integer.MAX_VALUE);

    GL11.glPushMatrix();
    GL11.glScalef(1.5F, 1.5F, 1.5F);//  w w  w . ja  va2  s.  co m
    drawCenteredString(fontRendererObj, I18n.format("caveworld.regenerate.gui.title"), width / 3, 30, 0xFFFFFF);
    GL11.glPopMatrix();

    drawCenteredString(fontRendererObj, I18n.format("caveworld.regenerate.gui.info"), width / 2, 90, 0xEEEEEE);

    super.drawScreen(mouseX, mouseY, ticks);

    if (backupHoverChecker.checkHover(mouseX, mouseY)) {
        func_146283_a(fontRendererObj.listFormattedStringToWidth(
                I18n.format("caveworld.regenerate.gui.backup.tooltip"), 300), mouseX, mouseY);
    }
}

From source file:com.kegare.caveworld.client.renderer.RenderCaveman.java

License:Minecraft Mod Public

@Override
public void doRender(Entity entity, double par2, double par3, double par4, float par5, float par6) {
    super.doRender(entity, par2, par3, par4, par5, par6);

    if (Config.cavemanShowHealthBar && entity instanceof EntityCaveman) {
        Minecraft mc = FMLClientHandler.instance().getClient();
        EntityPlayer player = mc.thePlayer;
        EntityCaveman living = (EntityCaveman) entity;

        if (living.isTamed()
                && player.getGameProfile().getId().toString()
                        .equals(Strings.nullToEmpty(living.func_152113_b()))
                && living.getEntitySenses().canSee(player) && living.getDistanceToEntity(player) <= 3.5F
                && mc.objectMouseOver.typeOfHit == MovingObjectType.ENTITY
                && mc.objectMouseOver.entityHit == living) {
            float scale = 0.01666667F * 1.5F;
            int width = 15;
            double top = 5.0D;
            double under = top + 2.0D;

            GL11.glPushMatrix();
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            GL11.glTranslatef((float) par2, (float) par3 + 2.3F, (float) par4);
            GL11.glNormal3f(0.0F, 1.0F, 0.0F);
            GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F);
            GL11.glScalef(-scale, -scale, scale);
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glTranslatef(0.0F, (living.isSittingAndStopped() ? 0.6F : 0.12F) / scale, 0.0F);
            GL11.glDepthMask(false);//from w ww.  ja  v  a2 s  . co  m
            GL11.glEnable(GL11.GL_BLEND);
            GL11.glBlendFunc(770, 771);

            int x = living.getBrightnessForRender((float) par2);
            int y = x % 65536;
            int z = x / 65536;

            OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, y / 1.0F, z / 1.0F);
            Tessellator tessellator = Tessellator.instance;
            GL11.glDisable(GL11.GL_TEXTURE_2D);
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA_I(0, 115);
            tessellator.addVertex(-width - 1, top - 0.5D, 0.0D);
            tessellator.addVertex(-width - 1, under + 0.5D, 0.0D);
            tessellator.addVertex(width + 1, under + 0.5D, 0.0D);
            tessellator.addVertex(width + 1, top - 0.5D, 0.0D);
            tessellator.draw();
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            GL11.glDisable(GL11.GL_BLEND);
            GL11.glDepthMask(true);

            Tessellator tessellator1 = Tessellator.instance;
            GL11.glDisable(GL11.GL_TEXTURE_2D);
            float max = living.getMaxHealth();
            int health = (int) (2.0D * width * living.getHealth() / max);

            if (renderHealth < 0.0D) {
                renderHealth = health;
            } else {
                double dh = renderHealth - health;
                double distance = Math.abs(Math.sqrt(dh * dh));

                if ((int) renderHealth < health) {
                    if (distance > 10.0D) {
                        renderHealth += 0.35D;
                    } else if (distance < 1.5D) {
                        renderHealth += 0.01D;
                    } else {
                        renderHealth += 0.1D;
                    }
                } else if ((int) renderHealth > health) {
                    if (distance > 10.0D) {
                        renderHealth -= 0.35D;
                    } else if (distance < 1.5D) {
                        renderHealth -= 0.01D;
                    } else {
                        renderHealth -= 0.1D;
                    }
                }
            }

            int color = Color.GREEN.getRGB();

            if (renderHealth < max / 4) {
                color = Color.RED.getRGB();
            } else if (renderHealth < max / 2) {
                color = Color.YELLOW.getRGB();
            }

            tessellator1.startDrawingQuads();
            tessellator1.setColorRGBA_I(color, 145);
            tessellator1.addVertex(-width, top, 0.0D);
            tessellator1.addVertex(-width, under, 0.0D);
            tessellator1.addVertex(-width + renderHealth, under, 0.0D);
            tessellator1.addVertex(-width + renderHealth, top, 0.0D);
            tessellator1.draw();
            GL11.glEnable(GL11.GL_TEXTURE_2D);

            GL11.glDisable(GL11.GL_BLEND);
            GL11.glEnable(GL11.GL_LIGHTING);
            GL11.glPopMatrix();
        } else {
            renderHealth = -1.0D;
        }
    }
}