    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}