OSDN Git Service

Merge branch 'master' of https://scm.sourceforge.jp/gitroot/chemicraft/chemicraft
[chemicraft/chemicraft.git] / src / chemicraft / util / MaterialRecipe.java
1 package chemicraft.util;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5
6 import net.minecraft.item.ItemStack;
7 import chemicraft.ChemiCraft;
8 import chemicraft.inventory.InventoryChemicalCraftingMaterial;
9
10 public class MaterialRecipe {
11
12         private ChemicalNBTRecipe nbtRecipe;
13         private ItemStack result;
14         private ItemStack[] material;
15         private boolean isSharpless = true;
16
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;
22         }
23
24         @SuppressWarnings("unchecked")
25         public ItemStack match(InventoryChemicalCraftingMaterial par1IInventory){
26                 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
27                 ItemStack[] invItems;
28                 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
29                         invItemsArray.add(par1IInventory.getStackInSlot(i));
30                 }
31                 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
32
33                 if(isSharpless){
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;
41                         }
42                         return this.result;
43                 }else{
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;
51                                 }
52                         }
53                         return this.result;
54                 }
55         }
56
57         @SuppressWarnings("unchecked")
58         public ChemicalNBTRecipe nbtMatch(InventoryChemicalCraftingMaterial par1IInventory){
59                 ArrayList<ItemStack> invItemsArray = new ArrayList<ItemStack>();
60                 ItemStack[] invItems;
61                 for(int i = 0;i < par1IInventory.getSizeInventory();i++){
62                         invItemsArray.add(par1IInventory.getStackInSlot(i));
63                 }
64                 invItems = invItemsArray.toArray(new ItemStack[invItemsArray.size()]);
65
66                 if(isSharpless){
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;
74                         }
75                         System.out.println(this.nbtRecipe);
76                         return this.nbtRecipe;
77                 }else{
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;
85                                 }
86                         }
87                         return this.nbtRecipe;
88                 }
89         }
90
91 }