package net.minecraft.item.crafting;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntityBanner;
import net.minecraft.world.World;
public class RecipesBanners
{
private static final String __OBFID = "CL_00002160";
void func_179534_a(CraftingManager p_179534_1_)
{
EnumDyeColor[] var2 = EnumDyeColor.values();
int var3 = var2.length;
for (int var4 = 0; var4 < var3; ++var4)
{
EnumDyeColor var5 = var2[var4];
p_179534_1_.addRecipe(new ItemStack(Items.banner, 1, var5.getDyeColorDamage()), new Object[] {"###", "###", " | ", '#', new ItemStack(Blocks.wool, 1, var5.func_176765_a()), '|', Items.stick});
}
p_179534_1_.func_180302_a(new RecipesBanners.RecipeDuplicatePattern(null));
p_179534_1_.func_180302_a(new RecipesBanners.RecipeAddPattern(null));
}
static class RecipeAddPattern implements IRecipe
{
private static final String __OBFID = "CL_00002158";
private RecipeAddPattern() {}
public boolean matches(InventoryCrafting p_77569_1_, World worldIn)
{
boolean var3 = false;
for (int var4 = 0; var4 < p_77569_1_.getSizeInventory(); ++var4)
{
ItemStack var5 = p_77569_1_.getStackInSlot(var4);
if (var5 != null && var5.getItem() == Items.banner)
{
if (var3)
{
return false;
}
if (TileEntityBanner.func_175113_c(var5) >= 6)
{
return false;
}
var3 = true;
}
}
if (!var3)
{
return false;
}
else
{
return this.func_179533_c(p_77569_1_) != null;
}
}
public ItemStack getCraftingResult(InventoryCrafting p_77572_1_)
{
ItemStack var2 = null;
for (int var3 = 0; var3 < p_77572_1_.getSizeInventory(); ++var3)
{
ItemStack var4 = p_77572_1_.getStackInSlot(var3);
if (var4 != null && var4.getItem() == Items.banner)
{
var2 = var4.copy();
var2.stackSize = 1;
break;
}
}
TileEntityBanner.EnumBannerPattern var8 = this.func_179533_c(p_77572_1_);
if (var8 != null)
{
int var9 = 0;
ItemStack var6;
for (int var5 = 0; var5 < p_77572_1_.getSizeInventory(); ++var5)
{
var6 = p_77572_1_.getStackInSlot(var5);
if (var6 != null && var6.getItem() == Items.dye)
{
var9 = var6.getMetadata();
break;
}
}
NBTTagCompound var10 = var2.getSubCompound("BlockEntityTag", true);
var6 = null;
NBTTagList var11;
if (var10.hasKey("Patterns", 9))
{
var11 = var10.getTagList("Patterns", 10);
}
else
{
var11 = new NBTTagList();
var10.setTag("Patterns", var11);
}
NBTTagCompound var7 = new NBTTagCompound();
var7.setString("Pattern", var8.func_177273_b());
var7.setInteger("Color", var9);
var11.appendTag(var7);
}
return var2;
}
public int getRecipeSize()
{
return 10;
}
public ItemStack getRecipeOutput()
{
return null;
}
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;
}
private TileEntityBanner.EnumBannerPattern func_179533_c(InventoryCrafting p_179533_1_)
{
TileEntityBanner.EnumBannerPattern[] var2 = TileEntityBanner.EnumBannerPattern.values();
int var3 = var2.length;
for (int var4 = 0; var4 < var3; ++var4)
{
TileEntityBanner.EnumBannerPattern var5 = var2[var4];
if (var5.func_177270_d())
{
boolean var6 = true;
int var9;
if (var5.func_177269_e())
{
boolean var12 = false;
boolean var13 = false;
for (var9 = 0; var9 < p_179533_1_.getSizeInventory() && var6; ++var9)
{
ItemStack var14 = p_179533_1_.getStackInSlot(var9);
if (var14 != null && var14.getItem() != Items.banner)
{
if (var14.getItem() == Items.dye)
{
if (var13)
{
var6 = false;
break;
}
var13 = true;
}
else
{
if (var12 || !var14.isItemEqual(var5.func_177272_f()))
{
var6 = false;
break;
}
var12 = true;
}
}
}
if (!var12)
{
var6 = false;
}
}
else if (p_179533_1_.getSizeInventory() != var5.func_177267_c().length * var5.func_177267_c()[0].length())
{
var6 = false;
}
else
{
int var7 = -1;
for (int var8 = 0; var8 < p_179533_1_.getSizeInventory() && var6; ++var8)
{
var9 = var8 / 3;
int var10 = var8 % 3;
ItemStack var11 = p_179533_1_.getStackInSlot(var8);
if (var11 != null && var11.getItem() != Items.banner)
{
if (var11.getItem() != Items.dye)
{
var6 = false;
break;
}
if (var7 != -1 && var7 != var11.getMetadata())
{
var6 = false;
break;
}
if (var5.func_177267_c()[var9].charAt(var10) == 32)
{
var6 = false;
break;
}
var7 = var11.getMetadata();
}
else if (var5.func_177267_c()[var9].charAt(var10) != 32)
{
var6 = false;
break;
}
}
}
if (var6)
{
return var5;
}
}
}
return null;
}
RecipeAddPattern(Object p_i45780_1_)
{
this();
}
}
static class RecipeDuplicatePattern implements IRecipe
{
private static final String __OBFID = "CL_00002157";
private RecipeDuplicatePattern() {}
public boolean matches(InventoryCrafting p_77569_1_, World worldIn)
{
ItemStack var3 = null;
ItemStack var4 = null;
for (int var5 = 0; var5 < p_77569_1_.getSizeInventory(); ++var5)
{
ItemStack var6 = p_77569_1_.getStackInSlot(var5);
if (var6 != null)
{
if (var6.getItem() != Items.banner)
{
return false;
}
if (var3 != null && var4 != null)
{
return false;
}
int var7 = TileEntityBanner.getBaseColor(var6);
boolean var8 = TileEntityBanner.func_175113_c(var6) > 0;
if (var3 != null)
{
if (var8)
{
return false;
}
if (var7 != TileEntityBanner.getBaseColor(var3))
{
return false;
}
var4 = var6;
}
else if (var4 != null)
{
if (!var8)
{
return false;
}
if (var7 != TileEntityBanner.getBaseColor(var4))
{
return false;
}
var3 = var6;
}
else if (var8)
{
var3 = var6;
}
else
{
var4 = var6;
}
}
}
return var3 != null && var4 != null;
}
public ItemStack getCraftingResult(InventoryCrafting p_77572_1_)
{
for (int var2 = 0; var2 < p_77572_1_.getSizeInventory(); ++var2)
{
ItemStack var3 = p_77572_1_.getStackInSlot(var2);
if (var3 != null && TileEntityBanner.func_175113_c(var3) > 0)
{
ItemStack var4 = var3.copy();
var4.stackSize = 1;
return var4;
}
}
return null;
}
public int getRecipeSize()
{
return 2;
}
public ItemStack getRecipeOutput()
{
return null;
}
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)
{
if (var4.getItem().hasContainerItem())
{
var2[var3] = new ItemStack(var4.getItem().getContainerItem());
}
else if (var4.hasTagCompound() && TileEntityBanner.func_175113_c(var4) > 0)
{
var2[var3] = var4.copy();
var2[var3].stackSize = 1;
}
}
}
return var2;
}
RecipeDuplicatePattern(Object p_i45779_1_)
{
this();
}
}
}