    001package net.minecraft.client.renderer;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.Collection;
    006import java.util.Iterator;
    007import net.minecraft.client.gui.inventory.GuiContainer;
    008import net.minecraft.inventory.Container;
    009import net.minecraft.potion.Potion;
    010import net.minecraft.potion.PotionEffect;
    011import net.minecraft.util.StatCollector;
    012import org.lwjgl.opengl.GL11;
    013
    014@SideOnly(Side.CLIENT)
    015public 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}