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(); } } }