package net.minecraft.server;
import javax.annotation.Nullable;
public class RecipesBanner {
public RecipesBanner() {}
void a(CraftingManager craftingmanager) {
EnumColor[] aenumcolor = EnumColor.values();
int i = aenumcolor.length;
for (int j = 0; j < i; ++j) {
EnumColor enumcolor = aenumcolor[j];
craftingmanager.registerShapedRecipe(ItemBanner.a(enumcolor, (NBTTagList) null), new Object[] { "###", "###", " | ", Character.valueOf('#'), new ItemStack(Blocks.WOOL, 1, enumcolor.getColorIndex()), Character.valueOf('|'), Items.STICK});
}
craftingmanager.a(new RecipesBanner.DuplicateRecipe(null));
craftingmanager.a(new RecipesBanner.AddRecipe(null));
}
static class AddRecipe extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends
// CraftBukkit start - Delegate to new parent class with bogus info
private AddRecipe() {
super(new ItemStack(Items.BANNER, 0, 0), java.util.Arrays.asList(new ItemStack(Items.BANNER)));
}
// CraftBukkit end
public boolean a(InventoryCrafting inventorycrafting, World world) {
boolean flag = false;
for (int i = 0; i < inventorycrafting.getSize(); ++i) {
ItemStack itemstack = inventorycrafting.getItem(i);
if (itemstack.getItem() == Items.BANNER) {
if (flag) {
return false;
}
if (TileEntityBanner.b(itemstack) >= 6) {
return false;
}
flag = true;
}
}
if (!flag) {
return false;
} else {
return this.c(inventorycrafting) != null;
}
}
public ItemStack craftItem(InventoryCrafting inventorycrafting) {
ItemStack itemstack = ItemStack.a;
for (int i = 0; i < inventorycrafting.getSize(); ++i) {
ItemStack itemstack1 = inventorycrafting.getItem(i);
if (!itemstack1.isEmpty() && itemstack1.getItem() == Items.BANNER) {
itemstack = itemstack1.cloneItemStack();
itemstack.setCount(1);
break;
}
}
EnumBannerPatternType enumbannerpatterntype = this.c(inventorycrafting);
if (enumbannerpatterntype != null) {
int j = 0;
for (int k = 0; k < inventorycrafting.getSize(); ++k) {
ItemStack itemstack2 = inventorycrafting.getItem(k);
if (itemstack2.getItem() == Items.DYE) {
j = itemstack2.getData();
break;
}
}
NBTTagCompound nbttagcompound = itemstack.c("BlockEntityTag");
NBTTagList nbttaglist;
if (nbttagcompound.hasKeyOfType("Patterns", 9)) {
nbttaglist = nbttagcompound.getList("Patterns", 10);
} else {
nbttaglist = new NBTTagList();
nbttagcompound.set("Patterns", nbttaglist);
}
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.setString("Pattern", enumbannerpatterntype.b());
nbttagcompound1.setInt("Color", j);
nbttaglist.add(nbttagcompound1);
}
return itemstack;
}
public int a() {
return 10;
}
public ItemStack b() {
return ItemStack.a;
}
public NonNullList<ItemStack> b(InventoryCrafting inventorycrafting) {
NonNullList nonnulllist = NonNullList.a(inventorycrafting.getSize(), ItemStack.a);
for (int i = 0; i < nonnulllist.size(); ++i) {
ItemStack itemstack = inventorycrafting.getItem(i);
if (itemstack.getItem().s()) {
nonnulllist.set(i, new ItemStack(itemstack.getItem().r()));
}
}
return nonnulllist;
}
@Nullable
private EnumBannerPatternType c(InventoryCrafting inventorycrafting) {
EnumBannerPatternType[] aenumbannerpatterntype = EnumBannerPatternType.values();
int i = aenumbannerpatterntype.length;
for (int j = 0; j < i; ++j) {
EnumBannerPatternType enumbannerpatterntype = aenumbannerpatterntype[j];
if (enumbannerpatterntype.d()) {
boolean flag = true;
int k;
if (enumbannerpatterntype.e()) {
boolean flag1 = false;
boolean flag2 = false;
for (k = 0; k < inventorycrafting.getSize() && flag; ++k) {
ItemStack itemstack = inventorycrafting.getItem(k);
if (!itemstack.isEmpty() && itemstack.getItem() != Items.BANNER) {
if (itemstack.getItem() == Items.DYE) {
if (flag2) {
flag = false;
break;
}
flag2 = true;
} else {
if (flag1 || !itemstack.doMaterialsMatch(enumbannerpatterntype.f())) {
flag = false;
break;
}
flag1 = true;
}
}
}
if (!flag1 || !flag2) {
flag = false;
}
} else if (inventorycrafting.getSize() != enumbannerpatterntype.c().length * enumbannerpatterntype.c()[0].length()) {
flag = false;
} else {
int l = -1;
for (int i1 = 0; i1 < inventorycrafting.getSize() && flag; ++i1) {
k = i1 / 3;
int j1 = i1 % 3;
ItemStack itemstack1 = inventorycrafting.getItem(i1);
if (!itemstack1.isEmpty() && itemstack1.getItem() != Items.BANNER) {
if (itemstack1.getItem() != Items.DYE) {
flag = false;
break;
}
if (l != -1 && l != itemstack1.getData()) {
flag = false;
break;
}
if (enumbannerpatterntype.c()[k].charAt(j1) == 32) {
flag = false;
break;
}
l = itemstack1.getData();
} else if (enumbannerpatterntype.c()[k].charAt(j1) != 32) {
flag = false;
break;
}
}
}
if (flag) {
return enumbannerpatterntype;
}
}
}
return null;
}
AddRecipe(Object object) {
this();
}
}
static class DuplicateRecipe extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends
// CraftBukkit start - Delegate to new parent class with bogus info
private DuplicateRecipe() {
super(new ItemStack(Items.BANNER, 0, 0), java.util.Arrays.asList(new ItemStack(Items.DYE, 0, 5)));
}
// CraftBukkit end
public boolean a(InventoryCrafting inventorycrafting, World world) {
ItemStack itemstack = ItemStack.a;
ItemStack itemstack1 = ItemStack.a;
for (int i = 0; i < inventorycrafting.getSize(); ++i) {
ItemStack itemstack2 = inventorycrafting.getItem(i);
if (!itemstack2.isEmpty()) {
if (itemstack2.getItem() != Items.BANNER) {
return false;
}
if (!itemstack.isEmpty() && !itemstack1.isEmpty()) {
return false;
}
EnumColor enumcolor = ItemBanner.c(itemstack2);
boolean flag = TileEntityBanner.b(itemstack2) > 0;
if (!itemstack.isEmpty()) {
if (flag) {
return false;
}
if (enumcolor != ItemBanner.c(itemstack)) {
return false;
}
itemstack1 = itemstack2;
} else if (!itemstack1.isEmpty()) {
if (!flag) {
return false;
}
if (enumcolor != ItemBanner.c(itemstack1)) {
return false;
}
itemstack = itemstack2;
} else if (flag) {
itemstack = itemstack2;
} else {
itemstack1 = itemstack2;
}
}
}
return !itemstack.isEmpty() && !itemstack1.isEmpty();
}
public ItemStack craftItem(InventoryCrafting inventorycrafting) {
for (int i = 0; i < inventorycrafting.getSize(); ++i) {
ItemStack itemstack = inventorycrafting.getItem(i);
if (!itemstack.isEmpty() && TileEntityBanner.b(itemstack) > 0) {
ItemStack itemstack1 = itemstack.cloneItemStack();
itemstack1.setCount(1);
return itemstack1;
}
}
return ItemStack.a;
}
public int a() {
return 2;
}
public ItemStack b() {
return ItemStack.a;
}
public NonNullList<ItemStack> b(InventoryCrafting inventorycrafting) {
NonNullList nonnulllist = NonNullList.a(inventorycrafting.getSize(), ItemStack.a);
for (int i = 0; i < nonnulllist.size(); ++i) {
ItemStack itemstack = inventorycrafting.getItem(i);
if (!itemstack.isEmpty()) {
if (itemstack.getItem().s()) {
nonnulllist.set(i, new ItemStack(itemstack.getItem().r()));
} else if (itemstack.hasTag() && TileEntityBanner.b(itemstack) > 0) {
ItemStack itemstack1 = itemstack.cloneItemStack();
itemstack1.setCount(1);
nonnulllist.set(i, itemstack1);
}
}
}
return nonnulllist;
}
DuplicateRecipe(Object object) {
this();
}
}
}