001package net.minecraft.item;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.util.List;
006import net.minecraft.entity.player.EntityPlayer;
007import net.minecraft.nbt.NBTBase;
008import net.minecraft.nbt.NBTTagCompound;
009import net.minecraft.nbt.NBTTagIntArray;
010import net.minecraft.util.StatCollector;
011
012public 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}