001    package net.minecraft.client.renderer;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.util.Collection;
006    import java.util.Iterator;
007    import net.minecraft.client.gui.inventory.GuiContainer;
008    import net.minecraft.inventory.Container;
009    import net.minecraft.potion.Potion;
010    import net.minecraft.potion.PotionEffect;
011    import net.minecraft.util.StatCollector;
012    import org.lwjgl.opengl.GL11;
013    
014    @SideOnly(Side.CLIENT)
015    public abstract class InventoryEffectRenderer extends GuiContainer
016    {
017        private boolean field_74222_o;
018    
019        public InventoryEffectRenderer(Container par1Container)
020        {
021            super(par1Container);
022        }
023    
024        /**
025         * Adds the buttons (and other controls) to the screen in question.
026         */
027        public void initGui()
028        {
029            super.initGui();
030    
031            if (!this.mc.thePlayer.getActivePotionEffects().isEmpty())
032            {
033                this.guiLeft = 160 + (this.width - this.xSize - 200) / 2;
034                this.field_74222_o = true;
035            }
036        }
037    
038        /**
039         * Draws the screen and all the components in it.
040         */
041        public void drawScreen(int par1, int par2, float par3)
042        {
043            super.drawScreen(par1, par2, par3);
044    
045            if (this.field_74222_o)
046            {
047                this.displayDebuffEffects();
048            }
049        }
050    
051        /**
052         * Displays debuff/potion effects that are currently being applied to the player
053         */
054        private void displayDebuffEffects()
055        {
056            int var1 = this.guiLeft - 124;
057            int var2 = this.guiTop;
058            Collection var4 = this.mc.thePlayer.getActivePotionEffects();
059    
060            if (!var4.isEmpty())
061            {
062                int var5 = this.mc.renderEngine.getTexture("/gui/inventory.png");
063                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
064                GL11.glDisable(GL11.GL_LIGHTING);
065                int var6 = 33;
066    
067                if (var4.size() > 5)
068                {
069                    var6 = 132 / (var4.size() - 1);
070                }
071    
072                for (Iterator var7 = this.mc.thePlayer.getActivePotionEffects().iterator(); var7.hasNext(); var2 += var6)
073                {
074                    PotionEffect var8 = (PotionEffect)var7.next();
075                    Potion var9 = Potion.potionTypes[var8.getPotionID()];
076                    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
077                    this.mc.renderEngine.bindTexture(var5);
078                    this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32);
079    
080                    if (var9.hasStatusIcon())
081                    {
082                        int var10 = var9.getStatusIconIndex();
083                        this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + var10 % 8 * 18, 198 + var10 / 8 * 18, 18, 18);
084                    }
085    
086                    String var12 = StatCollector.translateToLocal(var9.getName());
087    
088                    if (var8.getAmplifier() == 1)
089                    {
090                        var12 = var12 + " II";
091                    }
092                    else if (var8.getAmplifier() == 2)
093                    {
094                        var12 = var12 + " III";
095                    }
096                    else if (var8.getAmplifier() == 3)
097                    {
098                        var12 = var12 + " IV";
099                    }
100    
101                    this.fontRenderer.drawStringWithShadow(var12, var1 + 10 + 18, var2 + 6, 16777215);
102                    String var11 = Potion.getDurationString(var8);
103                    this.fontRenderer.drawStringWithShadow(var11, var1 + 10 + 18, var2 + 6 + 10, 8355711);
104                }
105            }
106        }
107    }