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 }