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.core.ChemiCraftCore;
8 import pcc.chemicraft.core.inventory.InventoryChemicalCraftingMaterial;
9 import pcc.chemicraft.util.Auxiliary.ArrayAuxiliary;
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.clone();
21 this.nbtRecipe = par3NBTRecipe;
22 this.isSharpless = par4;
25 @SuppressWarnings("unchecked")
26 public ItemStack match(InventoryChemicalCraftingMaterial par1IInventory){
27 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
29 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
30 invItemsArray.add(par1IInventory.getStackInSlot(i));
32 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
35 Arrays.sort(invItems, new ComparatorItemStack());
36 Arrays.sort(this.material, new ComparatorItemStack());
37 invItems = (ItemStack[]) ArrayAuxiliary.deleteNull(invItems);
38 if(invItems.length != this.material.length) return null;
39 for(int i = 0;i < this.material.length;i++){
40 if(this.material[i].itemID != invItems[i].itemID) return null;
41 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
45 if(this.material.length != invItems.length) return null;
46 for(int i = 0;i < this.material.length;i++){
47 if(this.material[i] == null && invItems[i] != null) return null;
48 if(this.material[i] != null && invItems[i] == null) return null;
49 if(this.material[i] != null && invItems[i] != null){
50 if(this.material[i].itemID != invItems[i].itemID) return null;
51 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
58 @SuppressWarnings("unchecked")
59 public ChemicalNBTRecipe nbtMatch(InventoryChemicalCraftingMaterial par1IInventory){
60 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
62 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
63 invItemsArray.add(par1IInventory.getStackInSlot(i));
65 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
68 Arrays.sort(invItems, new ComparatorItemStack());
69 Arrays.sort(this.material, new ComparatorItemStack());
70 invItems = (ItemStack[]) ArrayAuxiliary.deleteNull(invItems);
71 if(invItems.length != this.material.length) return null;
72 for(int i = 0;i < this.material.length;i++){
73 if(this.material[i].itemID != invItems[i].itemID) return null;
74 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
76 System.out.println(this.nbtRecipe);
77 return this.nbtRecipe;
79 if(this.material.length != invItems.length) return null;
80 for(int i = 0;i < this.material.length;i++){
81 if(this.material[i] == null && invItems[i] != null) return null;
82 if(this.material[i] != null && invItems[i] == null) return null;
83 if(this.material[i] != null && invItems[i] != null){
84 if(this.material[i].itemID != invItems[i].itemID) return null;
85 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
88 return this.nbtRecipe;