package net.minecraft.item.crafting; import com.google.common.collect.Lists; import java.util.ArrayList; import net.minecraft.init.Items; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemDye; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; public class RecipeFireworks implements IRecipe { private ItemStack field_92102_a; private static final String __OBFID = "CL_00000083"; /** * Used to check if a recipe matches current crafting inventory */ public boolean matches(InventoryCrafting p_77569_1_, World worldIn) { this.field_92102_a = null; int var3 = 0; int var4 = 0; int var5 = 0; int var6 = 0; int var7 = 0; int var8 = 0; for (int var9 = 0; var9 < p_77569_1_.getSizeInventory(); ++var9) { ItemStack var10 = p_77569_1_.getStackInSlot(var9); if (var10 != null) { if (var10.getItem() == Items.gunpowder) { ++var4; } else if (var10.getItem() == Items.firework_charge) { ++var6; } else if (var10.getItem() == Items.dye) { ++var5; } else if (var10.getItem() == Items.paper) { ++var3; } else if (var10.getItem() == Items.glowstone_dust) { ++var7; } else if (var10.getItem() == Items.diamond) { ++var7; } else if (var10.getItem() == Items.fire_charge) { ++var8; } else if (var10.getItem() == Items.feather) { ++var8; } else if (var10.getItem() == Items.gold_nugget) { ++var8; } else { if (var10.getItem() != Items.skull) { return false; } ++var8; } } } var7 += var5 + var8; if (var4 <= 3 && var3 <= 1) { NBTTagCompound var16; NBTTagCompound var19; if (var4 >= 1 && var3 == 1 && var7 == 0) { this.field_92102_a = new ItemStack(Items.fireworks); if (var6 > 0) { var16 = new NBTTagCompound(); var19 = new NBTTagCompound(); NBTTagList var23 = new NBTTagList(); for (int var24 = 0; var24 < p_77569_1_.getSizeInventory(); ++var24) { ItemStack var26 = p_77569_1_.getStackInSlot(var24); if (var26 != null && var26.getItem() == Items.firework_charge && var26.hasTagCompound() && var26.getTagCompound().hasKey("Explosion", 10)) { var23.appendTag(var26.getTagCompound().getCompoundTag("Explosion")); } } var19.setTag("Explosions", var23); var19.setByte("Flight", (byte)var4); var16.setTag("Fireworks", var19); this.field_92102_a.setTagCompound(var16); } return true; } else if (var4 == 1 && var3 == 0 && var6 == 0 && var5 > 0 && var8 <= 1) { this.field_92102_a = new ItemStack(Items.firework_charge); var16 = new NBTTagCompound(); var19 = new NBTTagCompound(); byte var22 = 0; ArrayList var12 = Lists.newArrayList(); for (int var13 = 0; var13 < p_77569_1_.getSizeInventory(); ++var13) { ItemStack var14 = p_77569_1_.getStackInSlot(var13); if (var14 != null) { if (var14.getItem() == Items.dye) { var12.add(Integer.valueOf(ItemDye.dyeColors[var14.getMetadata() & 15])); } else if (var14.getItem() == Items.glowstone_dust) { var19.setBoolean("Flicker", true); } else if (var14.getItem() == Items.diamond) { var19.setBoolean("Trail", true); } else if (var14.getItem() == Items.fire_charge) { var22 = 1; } else if (var14.getItem() == Items.feather) { var22 = 4; } else if (var14.getItem() == Items.gold_nugget) { var22 = 2; } else if (var14.getItem() == Items.skull) { var22 = 3; } } } int[] var25 = new int[var12.size()]; for (int var27 = 0; var27 < var25.length; ++var27) { var25[var27] = ((Integer)var12.get(var27)).intValue(); } var19.setIntArray("Colors", var25); var19.setByte("Type", var22); var16.setTag("Explosion", var19); this.field_92102_a.setTagCompound(var16); return true; } else if (var4 == 0 && var3 == 0 && var6 == 1 && var5 > 0 && var5 == var7) { ArrayList var15 = Lists.newArrayList(); for (int var17 = 0; var17 < p_77569_1_.getSizeInventory(); ++var17) { ItemStack var11 = p_77569_1_.getStackInSlot(var17); if (var11 != null) { if (var11.getItem() == Items.dye) { var15.add(Integer.valueOf(ItemDye.dyeColors[var11.getMetadata() & 15])); } else if (var11.getItem() == Items.firework_charge) { this.field_92102_a = var11.copy(); this.field_92102_a.stackSize = 1; } } } int[] var18 = new int[var15.size()]; for (int var20 = 0; var20 < var18.length; ++var20) { var18[var20] = ((Integer)var15.get(var20)).intValue(); } if (this.field_92102_a != null && this.field_92102_a.hasTagCompound()) { NBTTagCompound var21 = this.field_92102_a.getTagCompound().getCompoundTag("Explosion"); if (var21 == null) { return false; } else { var21.setIntArray("FadeColors", var18); return true; } } else { return false; } } else { return false; } } else { return false; } } /** * Returns an Item that is the result of this recipe */ public ItemStack getCraftingResult(InventoryCrafting p_77572_1_) { return this.field_92102_a.copy(); } /** * Returns the size of the recipe area */ public int getRecipeSize() { return 10; } public ItemStack getRecipeOutput() { return this.field_92102_a; } public ItemStack[] func_179532_b(InventoryCrafting p_179532_1_) { ItemStack[] var2 = new ItemStack[p_179532_1_.getSizeInventory()]; for (int var3 = 0; var3 < var2.length; ++var3) { ItemStack var4 = p_179532_1_.getStackInSlot(var3); if (var4 != null && var4.getItem().hasContainerItem()) { var2[var3] = new ItemStack(var4.getItem().getContainerItem()); } } return var2; } }