001    package net.minecraft.item;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.util.List;
006    import net.minecraft.entity.player.EntityPlayer;
007    import net.minecraft.nbt.NBTBase;
008    import net.minecraft.nbt.NBTTagCompound;
009    import net.minecraft.nbt.NBTTagIntArray;
010    import net.minecraft.util.StatCollector;
011    
012    public class ItemFireworkCharge extends Item
013    {
014        public ItemFireworkCharge(int par1)
015        {
016            super(par1);
017        }
018    
019        @SideOnly(Side.CLIENT)
020    
021        /**
022         * Gets an icon index based on an item's damage value and the given render pass
023         */
024        public int getIconFromDamageForRenderPass(int par1, int par2)
025        {
026            return par2 == 1 ? this.iconIndex + 1 : super.getIconFromDamageForRenderPass(par1, par2);
027        }
028    
029        @SideOnly(Side.CLIENT)
030        public int getColorFromItemStack(ItemStack par1ItemStack, int par2)
031        {
032            if (par2 != 1)
033            {
034                return super.getColorFromItemStack(par1ItemStack, par2);
035            }
036            else
037            {
038                NBTBase var3 = func_92108_a(par1ItemStack, "Colors");
039    
040                if (var3 == null)
041                {
042                    return 9079434;
043                }
044                else
045                {
046                    NBTTagIntArray var4 = (NBTTagIntArray)var3;
047    
048                    if (var4.intArray.length == 1)
049                    {
050                        return var4.intArray[0];
051                    }
052                    else
053                    {
054                        int var5 = 0;
055                        int var6 = 0;
056                        int var7 = 0;
057                        int[] var8 = var4.intArray;
058                        int var9 = var8.length;
059    
060                        for (int var10 = 0; var10 < var9; ++var10)
061                        {
062                            int var11 = var8[var10];
063                            var5 += (var11 & 16711680) >> 16;
064                            var6 += (var11 & 65280) >> 8;
065                            var7 += (var11 & 255) >> 0;
066                        }
067    
068                        var5 /= var4.intArray.length;
069                        var6 /= var4.intArray.length;
070                        var7 /= var4.intArray.length;
071                        return var5 << 16 | var6 << 8 | var7;
072                    }
073                }
074            }
075        }
076    
077        @SideOnly(Side.CLIENT)
078        public boolean requiresMultipleRenderPasses()
079        {
080            return true;
081        }
082    
083        @SideOnly(Side.CLIENT)
084        public static NBTBase func_92108_a(ItemStack par0ItemStack, String par1Str)
085        {
086            if (par0ItemStack.hasTagCompound())
087            {
088                NBTTagCompound var2 = par0ItemStack.getTagCompound().getCompoundTag("Explosion");
089    
090                if (var2 != null)
091                {
092                    return var2.getTag(par1Str);
093                }
094            }
095    
096            return null;
097        }
098    
099        @SideOnly(Side.CLIENT)
100    
101        /**
102         * allows items to add custom lines of information to the mouseover description
103         */
104        public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
105        {
106            if (par1ItemStack.hasTagCompound())
107            {
108                NBTTagCompound var5 = par1ItemStack.getTagCompound().getCompoundTag("Explosion");
109    
110                if (var5 != null)
111                {
112                    func_92107_a(var5, par3List);
113                }
114            }
115        }
116    
117        @SideOnly(Side.CLIENT)
118        public static void func_92107_a(NBTTagCompound par0NBTTagCompound, List par1List)
119        {
120            byte var2 = par0NBTTagCompound.getByte("Type");
121    
122            if (var2 >= 0 && var2 <= 4)
123            {
124                par1List.add(StatCollector.translateToLocal("item.fireworksCharge.type." + var2).trim());
125            }
126            else
127            {
128                par1List.add(StatCollector.translateToLocal("item.fireworksCharge.type").trim());
129            }
130    
131            int[] var3 = par0NBTTagCompound.getIntArray("Colors");
132            int var8;
133            int var9;
134    
135            if (var3.length > 0)
136            {
137                boolean var4 = true;
138                String var5 = "";
139                int[] var6 = var3;
140                int var7 = var3.length;
141    
142                for (var8 = 0; var8 < var7; ++var8)
143                {
144                    var9 = var6[var8];
145    
146                    if (!var4)
147                    {
148                        var5 = var5 + ", ";
149                    }
150    
151                    var4 = false;
152                    boolean var10 = false;
153    
154                    for (int var11 = 0; var11 < 16; ++var11)
155                    {
156                        if (var9 == ItemDye.dyeColors[var11])
157                        {
158                            var10 = true;
159                            var5 = var5 + StatCollector.translateToLocal("item.fireworksCharge." + ItemDye.dyeColorNames[var11]);
160                            break;
161                        }
162                    }
163    
164                    if (!var10)
165                    {
166                        var5 = var5 + StatCollector.translateToLocal("item.fireworksCharge.customColor");
167                    }
168                }
169    
170                par1List.add(var5);
171            }
172    
173            int[] var13 = par0NBTTagCompound.getIntArray("FadeColors");
174            boolean var16;
175    
176            if (var13.length > 0)
177            {
178                var16 = true;
179                String var14 = StatCollector.translateToLocal("item.fireworksCharge.fadeTo") + " ";
180                int[] var15 = var13;
181                var8 = var13.length;
182    
183                for (var9 = 0; var9 < var8; ++var9)
184                {
185                    int var18 = var15[var9];
186    
187                    if (!var16)
188                    {
189                        var14 = var14 + ", ";
190                    }
191    
192                    var16 = false;
193                    boolean var19 = false;
194    
195                    for (int var12 = 0; var12 < 16; ++var12)
196                    {
197                        if (var18 == ItemDye.dyeColors[var12])
198                        {
199                            var19 = true;
200                            var14 = var14 + StatCollector.translateToLocal("item.fireworksCharge." + ItemDye.dyeColorNames[var12]);
201                            break;
202                        }
203                    }
204    
205                    if (!var19)
206                    {
207                        var14 = var14 + StatCollector.translateToLocal("item.fireworksCharge.customColor");
208                    }
209                }
210    
211                par1List.add(var14);
212            }
213    
214            var16 = par0NBTTagCompound.getBoolean("Trail");
215    
216            if (var16)
217            {
218                par1List.add(StatCollector.translateToLocal("item.fireworksCharge.trail"));
219            }
220    
221            boolean var17 = par0NBTTagCompound.getBoolean("Flicker");
222    
223            if (var17)
224            {
225                par1List.add(StatCollector.translateToLocal("item.fireworksCharge.flicker"));
226            }
227        }
228    }