    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 i = this.guiLeft - 124;
    057        int j = this.guiTop;
    058        Collection collection = this.mc.thePlayer.getActivePotionEffects();
    059
    060        if (!collection.isEmpty())
    061        {
    062            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    063            GL11.glDisable(GL11.GL_LIGHTING);
    064            int k = 33;
    065
    066            if (collection.size() > 5)
    067            {
    068                k = 132 / (collection.size() - 1);
    069            }
    070
    071            for (Iterator iterator = this.mc.thePlayer.getActivePotionEffects().iterator(); iterator.hasNext(); j += k)
    072            {
    073                PotionEffect potioneffect = (PotionEffect)iterator.next();
    074                Potion potion = Potion.potionTypes[potioneffect.getPotionID()];
    075                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    076                this.mc.renderEngine.bindTexture("/gui/inventory.png");
    077                this.drawTexturedModalRect(i, j, 0, 166, 140, 32);
    078
    079                if (potion.hasStatusIcon())
    080                {
    081                    int l = potion.getStatusIconIndex();
    082                    this.drawTexturedModalRect(i + 6, j + 7, 0 + l % 8 * 18, 198 + l / 8 * 18, 18, 18);
    083                }
    084
    085                String s = StatCollector.translateToLocal(potion.getName());
    086
    087                if (potioneffect.getAmplifier() == 1)
    088                {
    089                    s = s + " II";
    090                }
    091                else if (potioneffect.getAmplifier() == 2)
    092                {
    093                    s = s + " III";
    094                }
    095                else if (potioneffect.getAmplifier() == 3)
    096                {
    097                    s = s + " IV";
    098                }
    099
    100                this.fontRenderer.drawStringWithShadow(s, i + 10 + 18, j + 6, 16777215);
    101                String s1 = Potion.getDurationString(potioneffect);
    102                this.fontRenderer.drawStringWithShadow(s1, i + 10 + 18, j + 6 + 10, 8355711);
    103            }
    104        }
    105    }
    106}