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 }