package net.minecraft.item.crafting;
import java.util.ArrayList;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
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;
/**
* Used to check if a recipe matches current crafting inventory
*/
public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World)
{
this.field_92102_a = null;
int i = 0;
int j = 0;
int k = 0;
int l = 0;
int i1 = 0;
int j1 = 0;
for (int k1 = 0; k1 < par1InventoryCrafting.getSizeInventory(); ++k1)
{
ItemStack itemstack = par1InventoryCrafting.getStackInSlot(k1);
if (itemstack != null)
{
if (itemstack.itemID == Item.gunpowder.itemID)
{
++j;
}
else if (itemstack.itemID == Item.fireworkCharge.itemID)
{
++l;
}
else if (itemstack.itemID == Item.dyePowder.itemID)
{
++k;
}
else if (itemstack.itemID == Item.paper.itemID)
{
++i;
}
else if (itemstack.itemID == Item.lightStoneDust.itemID)
{
++i1;
}
else if (itemstack.itemID == Item.diamond.itemID)
{
++i1;
}
else if (itemstack.itemID == Item.fireballCharge.itemID)
{
++j1;
}
else if (itemstack.itemID == Item.feather.itemID)
{
++j1;
}
else if (itemstack.itemID == Item.goldNugget.itemID)
{
++j1;
}
else
{
if (itemstack.itemID != Item.skull.itemID)
{
return false;
}
++j1;
}
}
}
i1 += k + j1;
if (j <= 3 && i <= 1)
{
NBTTagCompound nbttagcompound;
NBTTagCompound nbttagcompound1;
if (j >= 1 && i == 1 && i1 == 0)
{
this.field_92102_a = new ItemStack(Item.firework);
nbttagcompound = new NBTTagCompound();
if (l > 0)
{
nbttagcompound1 = new NBTTagCompound("Fireworks");
NBTTagList nbttaglist = new NBTTagList("Explosions");
for (int l1 = 0; l1 < par1InventoryCrafting.getSizeInventory(); ++l1)
{
ItemStack itemstack1 = par1InventoryCrafting.getStackInSlot(l1);
if (itemstack1 != null && itemstack1.itemID == Item.fireworkCharge.itemID && itemstack1.hasTagCompound() && itemstack1.getTagCompound().hasKey("Explosion"))
{
nbttaglist.appendTag(itemstack1.getTagCompound().getCompoundTag("Explosion"));
}
}
nbttagcompound1.setTag("Explosions", nbttaglist);
nbttagcompound1.setByte("Flight", (byte)j);
nbttagcompound.setTag("Fireworks", nbttagcompound1);
}
this.field_92102_a.setTagCompound(nbttagcompound);
return true;
}
else if (j == 1 && i == 0 && l == 0 && k > 0 && j1 <= 1)
{
this.field_92102_a = new ItemStack(Item.fireworkCharge);
nbttagcompound = new NBTTagCompound();
nbttagcompound1 = new NBTTagCompound("Explosion");
byte b0 = 0;
ArrayList arraylist = new ArrayList();
for (int i2 = 0; i2 < par1InventoryCrafting.getSizeInventory(); ++i2)
{
ItemStack itemstack2 = par1InventoryCrafting.getStackInSlot(i2);
if (itemstack2 != null)
{
if (itemstack2.itemID == Item.dyePowder.itemID)
{
arraylist.add(Integer.valueOf(ItemDye.dyeColors[itemstack2.getItemDamage()]));
}
else if (itemstack2.itemID == Item.lightStoneDust.itemID)
{
nbttagcompound1.setBoolean("Flicker", true);
}
else if (itemstack2.itemID == Item.diamond.itemID)
{
nbttagcompound1.setBoolean("Trail", true);
}
else if (itemstack2.itemID == Item.fireballCharge.itemID)
{
b0 = 1;
}
else if (itemstack2.itemID == Item.feather.itemID)
{
b0 = 4;
}
else if (itemstack2.itemID == Item.goldNugget.itemID)
{
b0 = 2;
}
else if (itemstack2.itemID == Item.skull.itemID)
{
b0 = 3;
}
}
}
int[] aint = new int[arraylist.size()];
for (int j2 = 0; j2 < aint.length; ++j2)
{
aint[j2] = ((Integer)arraylist.get(j2)).intValue();
}
nbttagcompound1.setIntArray("Colors", aint);
nbttagcompound1.setByte("Type", b0);
nbttagcompound.setTag("Explosion", nbttagcompound1);
this.field_92102_a.setTagCompound(nbttagcompound);
return true;
}
else if (j == 0 && i == 0 && l == 1 && k > 0 && k == i1)
{
ArrayList arraylist1 = new ArrayList();
for (int k2 = 0; k2 < par1InventoryCrafting.getSizeInventory(); ++k2)
{
ItemStack itemstack3 = par1InventoryCrafting.getStackInSlot(k2);
if (itemstack3 != null)
{
if (itemstack3.itemID == Item.dyePowder.itemID)
{
arraylist1.add(Integer.valueOf(ItemDye.dyeColors[itemstack3.getItemDamage()]));
}
else if (itemstack3.itemID == Item.fireworkCharge.itemID)
{
this.field_92102_a = itemstack3.copy();
this.field_92102_a.stackSize = 1;
}
}
}
int[] aint1 = new int[arraylist1.size()];
for (int l2 = 0; l2 < aint1.length; ++l2)
{
aint1[l2] = ((Integer)arraylist1.get(l2)).intValue();
}
if (this.field_92102_a != null && this.field_92102_a.hasTagCompound())
{
NBTTagCompound nbttagcompound2 = this.field_92102_a.getTagCompound().getCompoundTag("Explosion");
if (nbttagcompound2 == null)
{
return false;
}
else
{
nbttagcompound2.setIntArray("FadeColors", aint1);
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 par1InventoryCrafting)
{
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;
}
}