OSDN Git Service

a8aba13fef029f97c18d7d2344c00e5dcb7d5057
[chemicraft/chemicraft.git] / common / pcc / chemicraft / util / MaterialRecipe.java
1 package pcc.chemicraft.util;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5
6 import pcc.chemicraft.ChemiCraft;
7 import pcc.chemicraft.inventory.InventoryChemicalCraftingMaterial;
8
9 import net.minecraft.item.ItemStack;
10 <<<<<<< HEAD:common/pcc/chemicraft/util/MaterialRecipe.java
11 =======
12 import pcc.chemicraft.ChemiCraft;
13 import pcc.chemicraft.inventory.InventoryChemicalCraftingMaterial;
14 >>>>>>> a5e4a5c40b9001657f1e36ece533651f63183fbe:common/pcc/chemicraft/util/MaterialRecipe.java
15
16 public class MaterialRecipe {
17
18         private ChemicalNBTRecipe nbtRecipe;
19         private ItemStack result;
20         private ItemStack[] material;
21         private boolean isSharpless = true;
22
23         public MaterialRecipe(ItemStack par1ItemStack, ItemStack[] par2ItemStacks, ChemicalNBTRecipe par3NBTRecipe, boolean par4){
24                 this.result = par1ItemStack;
25                 this.material = par2ItemStacks.clone();
26                 this.nbtRecipe = par3NBTRecipe;
27                 this.isSharpless = par4;
28         }
29
30         @SuppressWarnings("unchecked")
31         public ItemStack match(InventoryChemicalCraftingMaterial par1IInventory){
32                 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
33                 ItemStack[] invItems;
34                 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
35                         invItemsArray.add(par1IInventory.getStackInSlot(i));
36                 }
37                 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
38
39                 if(isSharpless){
40                         Arrays.sort(invItems, new ComparatorItemStack());
41                         Arrays.sort(this.material, new ComparatorItemStack());
42                         invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
43                         if(invItems.length != this.material.length) return null;
44                         for(int i = 0;i < this.material.length;i++){
45                                 if(this.material[i].itemID != invItems[i].itemID) return null;
46                                 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
47                         }
48                         return this.result;
49                 }else{
50                         if(this.material.length != invItems.length) return null;
51                         for(int i = 0;i < this.material.length;i++){
52                                 if(this.material[i] == null && invItems[i] != null) return null;
53                                 if(this.material[i] != null && invItems[i] == null) return null;
54                                 if(this.material[i] != null && invItems[i] != null){
55                                         if(this.material[i].itemID != invItems[i].itemID) return null;
56                                         if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
57                                 }
58                         }
59                         return this.result;
60                 }
61         }
62
63         @SuppressWarnings("unchecked")
64         public ChemicalNBTRecipe nbtMatch(InventoryChemicalCraftingMaterial par1IInventory){
65                 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
66                 ItemStack[] invItems;
67                 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
68                         invItemsArray.add(par1IInventory.getStackInSlot(i));
69                 }
70                 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
71
72                 if(isSharpless){
73                         Arrays.sort(invItems, new ComparatorItemStack());
74                         Arrays.sort(this.material, new ComparatorItemStack());
75                         invItems = (ItemStack[]) ChemiCraft.instance.arrayAuxiliary.deleteNull(invItems);
76                         if(invItems.length != this.material.length) return null;
77                         for(int i = 0;i < this.material.length;i++){
78                                 if(this.material[i].itemID != invItems[i].itemID) return null;
79                                 if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
80                         }
81                         System.out.println(this.nbtRecipe);
82                         return this.nbtRecipe;
83                 }else{
84                         if(this.material.length != invItems.length) return null;
85                         for(int i = 0;i < this.material.length;i++){
86                                 if(this.material[i] == null && invItems[i] != null) return null;
87                                 if(this.material[i] != null && invItems[i] == null) return null;
88                                 if(this.material[i] != null && invItems[i] != null){
89                                         if(this.material[i].itemID != invItems[i].itemID) return null;
90                                         if(this.material[i].getItemDamage() != invItems[i].getItemDamage()) return null;
91                                 }
92                         }
93                         return this.nbtRecipe;
94                 }
95         }
96
97 }