1 package chemicraft.util;
3 import java.util.ArrayList;
4 import java.util.Arrays;
6 import net.minecraft.src.ItemStack;
7 import chemicraft.ChemiCraft;
8 import chemicraft.inventory.InventoryChemicalCraftingMaterial;
9 import chemicraft.inventory.InventoryChemicalCraftingNBT;
11 public class MaterialRecipe {
13 private ChemicalNBTRecipe nbtRecipe;
14 private ItemStack result;
15 private ItemStack[] material;
16 private boolean isSharpless = true;
18 public MaterialRecipe(ItemStack par1ItemStack, ItemStack[] par2ItemStacks, ChemicalNBTRecipe par3NBTRecipe, boolean par4){
19 this.result = par1ItemStack;
20 this.material = par2ItemStacks;
21 this.nbtRecipe = par3NBTRecipe;
22 this.isSharpless = par4;
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()]);
32 invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
35 Arrays.sort(invItems, new ComparatorItemStack());
36 Arrays.sort(this.material, new ComparatorItemStack());
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 public ChemicalNBTRecipe nbtMatch(InventoryChemicalCraftingMaterial par1IInventory){
58 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
60 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
61 invItemsArray.add(par1IInventory.getStackInSlot(i));
63 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
64 invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
67 Arrays.sort(invItems, new ComparatorItemStack());
68 Arrays.sort(this.material, new ComparatorItemStack());
69 if(invItems.length != this.material.length) return null;
70 for(int i = 0;i < this.material.length;i++){
71 if(this.material[i].itemID != invItems[i].itemID) return null;
72 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
74 return this.nbtRecipe;
76 if(this.material.length != invItems.length) return null;
77 for(int i = 0;i < this.material.length;i++){
78 if(this.material[i] != null && invItems[i] != null){
79 if(this.material[i].itemID != invItems[i].itemID) return null;
80 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
83 return this.nbtRecipe;