1 package pcc.chemicraft.util;
3 import java.util.ArrayList;
4 import java.util.Arrays;
6 import net.minecraft.item.ItemStack;
7 import pcc.chemicraft.ChemiCraft;
8 import pcc.chemicraft.inventory.InventoryChemicalCraftingMaterial;
10 public class MaterialRecipe {
12 private ChemicalNBTRecipe nbtRecipe;
13 private ItemStack result;
14 private ItemStack[] material;
15 private boolean isSharpless = true;
17 public MaterialRecipe(ItemStack par1ItemStack, ItemStack[] par2ItemStacks, ChemicalNBTRecipe par3NBTRecipe, boolean par4){
18 this.result = par1ItemStack;
19 this.material = par2ItemStacks.clone();
20 this.nbtRecipe = par3NBTRecipe;
21 this.isSharpless = par4;
24 @SuppressWarnings("unchecked")
25 public ItemStack match(InventoryChemicalCraftingMaterial par1IInventory){
26 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
28 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
29 invItemsArray.add(par1IInventory.getStackInSlot(i));
31 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
34 Arrays.sort(invItems, new ComparatorItemStack());
35 Arrays.sort(this.material, new ComparatorItemStack());
36 invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
37 if(invItems.length != this.material.length) return null;
38 for(int i = 0;i < this.material.length;i++){
39 if(this.material[i].itemID != invItems[i].itemID) return null;
40 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
44 if(this.material.length != invItems.length) return null;
45 for(int i = 0;i < this.material.length;i++){
46 if(this.material[i] == null && invItems[i] != null) return null;
47 if(this.material[i] != null && invItems[i] == null) return null;
48 if(this.material[i] != null && invItems[i] != null){
49 if(this.material[i].itemID != invItems[i].itemID) return null;
50 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
57 @SuppressWarnings("unchecked")
58 public ChemicalNBTRecipe nbtMatch(InventoryChemicalCraftingMaterial par1IInventory){
59 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
61 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
62 invItemsArray.add(par1IInventory.getStackInSlot(i));
64 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
67 Arrays.sort(invItems, new ComparatorItemStack());
68 Arrays.sort(this.material, new ComparatorItemStack());
69 invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
70 if(invItems.length != this.material.length) return null;
71 for(int i = 0;i < this.material.length;i++){
72 if(this.material[i].itemID != invItems[i].itemID) return null;
73 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
75 System.out.println(this.nbtRecipe);
76 return this.nbtRecipe;
78 if(this.material.length != invItems.length) return null;
79 for(int i = 0;i < this.material.length;i++){
80 if(this.material[i] == null && invItems[i] != null) return null;
81 if(this.material[i] != null && invItems[i] == null) return null;
82 if(this.material[i] != null && invItems[i] != null){
83 if(this.material[i].itemID != invItems[i].itemID) return null;
84 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
87 return this.nbtRecipe;