OSDN Git Service

8111626e92b97852cd4c7aff44027034f86dc0af
[chemicraft/chemicraft.git] / common / chemicraft / ChemiCraftAPI.java
1 package chemicraft;
2
3 import java.util.ArrayList;
4
5 import net.minecraft.src.ItemStack;
6
7 /**
8  * ChemiCraftのAPI
9  * 基本的にAddonはこのクラスのインスタンスを使う
10  * @author mozipi
11  *
12  */
13 public class ChemiCraftAPI {
14
15         /**
16          * Instance of the ChemiCraftAPI.
17          */
18         public static ChemiCraftAPI instance = new ChemiCraftAPI();
19
20
21         /**
22          * List of compounds names.
23          */
24         private ArrayList<String> compoundsNameList = new ArrayList();
25
26
27         /**
28          * List of compounds names(Some kind of language).
29          */
30         private ArrayList<String> compoundsLangNameList = new ArrayList();
31
32
33         /**
34          * List of compounds the language names.
35          */
36         private ArrayList<String> compoundsLangList = new ArrayList();
37
38
39         /**
40          * List of compounds handlers.
41          */
42         private ArrayList<ICompoundHandler> compoundHandlers = new ArrayList<ICompoundHandler>();
43
44
45         /**
46          * List of item name of handler to compounds.
47          */
48         private ArrayList<String> compoundHandlerItemNames = new ArrayList<String>();
49
50
51         /**
52          * 分解台の素材のリスト
53          */
54         private ArrayList<ItemStack> decompositionMaterial = new ArrayList<ItemStack>();
55
56
57         /**
58          * 分解台の結果のリスト
59          */
60         private ArrayList<ItemStack[]> decompositionResults = new ArrayList<ItemStack[]>();
61
62
63         /**
64          * 化合台の素材のリスト
65          */
66         private ArrayList<ItemStack[]> chemicalCombinationMaterials = new ArrayList<ItemStack[]>();
67
68
69         /**
70          * 化合台の結果のリスト
71          */
72         private ArrayList<ItemStack> chemicalCombinationResult = new ArrayList<ItemStack>();
73
74
75
76         /**
77          * 素材製作台の効果添付素材のリスト
78          */
79         private ArrayList<ItemStack[]> materialEffectMaterials = new ArrayList<ItemStack[]>();
80
81
82
83         /**
84          * 素材製作台の素材のリスト
85          */
86         private ArrayList<ItemStack[]> materialMaterials = new ArrayList<ItemStack[]>();
87
88
89
90         /**
91          * 素材製作台の結果のリスト
92          */
93         private ArrayList<ItemStack> materialResult = new ArrayList<ItemStack>();
94
95
96
97         /**
98          * 素材製作台の効果のキーリスト
99          */
100         private ArrayList<String[]> materialEffectKey = new ArrayList<String[]>();
101
102
103
104         /**
105          * 素材製作台の効果のリスト
106          */
107         private ArrayList<Object[]> materialEffectValue = new ArrayList<Object[]>();
108
109
110
111         /**
112          * ChemiCraftの化学作業台類のレシピのマネージャー
113          */
114         private ChemiCraftCraftingManager chemiCraftCraftingManager = new ChemiCraftCraftingManager();
115
116
117
118         /**
119          * add compound.
120          * @param name compound name.
121          */
122         public void addCompound(String name){
123                 compoundsNameList.add(name);
124                 compoundsLangNameList.add("");
125                 compoundsLangList.add("");
126         }
127
128
129
130         /**
131          * add compound corresponding to the language.
132          * @param lang Language to the corresponding
133          * @param englishName compound name
134          * @param langName compound name(specified language)
135          */
136         public void addLangCompound(String lang, String englishName, String langName){
137                 compoundsNameList.add(englishName);
138                 compoundsLangNameList.add(langName);
139                 compoundsLangList.add(lang);
140         }
141
142
143
144         /**
145          * setting compound handler.
146          * @param handlerItemName
147          * @param compoundHandler
148          */
149         public void settingCompoundHandler(String handlerItemName, ICompoundHandler compoundHandler){
150                 compoundHandlers.add(compoundHandler);
151                 compoundHandlerItemNames.add(handlerItemName);
152         }
153
154
155
156         /**
157          * 分解レシピを追加します。resultの要素数は0<= n <= 16にしてください。
158          * @param material 素材
159          * @param result 結果
160          */
161         public void addDecompositionRecipe(ItemStack material, ItemStack[] result){
162                 if(result.length <= 16){
163                         decompositionMaterial.add(material);
164                         decompositionResults.add(result);
165                 }else{
166                         System.err.println("ChemiCraft内でエラー:addDecompositionRecipeの引数resultの要素数が16を超えています。" + "Material:" + material + "  Result:" + result);
167                 }
168         }
169
170
171
172         /**
173          * 化合レシピを追加します。materialの要素数は0<= n <= 16にしてください。
174          * @param material 素材
175          * @param result 結果
176          */
177         public void addChemicalCombinationRecipe(ItemStack[] material, ItemStack result){
178                 if(material.length <= 16){
179                         chemicalCombinationMaterials.add(material);
180                         chemicalCombinationResult.add(result);
181                 }else{
182                         System.err.println("ChemiCraft内でエラー:addChemicalCombinationRecipeの引数materialの要素数が16を超えています。" + "Material:" + material + "  Result:" + result);
183                 }
184         }
185
186
187
188         public void addMaterialRecipe(ItemStack[] materials, ItemStack[] effectMaterials,ItemStack result, String[] key, Object[] value){
189                 if(materials.length <= 9){
190                         if(effectMaterials.length <= 3){
191                                 materialMaterials.add(materials);
192                                 materialResult.add(result);
193                                 materialEffectKey.add(key);
194                                 materialEffectValue.add(value);
195                         }else{
196                                 System.err.println("ChemiCraft内でエラー:addMaterialRecipeの引数effectMaterialsの要素数が3を超えています。" + "Material:" + materials + " Result:" + result + " key" + key + " value:" + value);
197                         }
198                 }else{
199                         System.err.println("ChemiCraft内でエラー:addMaterialRecipeの引数materialsの要素数が9を超えています。" + "Material:" + materials + " Result:" + result + " key" + key + " value:" + value);
200                 }
201         }
202         //以下システム関連//////////////////////////////////////////////////////
203
204         public ArrayList<ICompoundHandler> getCompoundHandler(){
205                 compoundHandlers.trimToSize();
206                 return compoundHandlers;
207
208         }
209
210
211
212         public ArrayList<String> getCompoundHandlerItemName(){
213                 compoundHandlerItemNames.trimToSize();
214                 return compoundHandlerItemNames;
215         }
216
217
218
219         public ArrayList<String> getCompoundsName(){
220                 compoundsNameList.trimToSize();
221                 return compoundsNameList;
222         }
223
224
225
226         public ArrayList<String> getCompoundsLangName(){
227                 compoundsLangNameList.trimToSize();
228                 return compoundsLangNameList;
229         }
230
231
232
233         public ArrayList<String> getCompoundsLang(){
234                 compoundsLangList.trimToSize();
235                 return compoundsLangList;
236         }
237
238
239
240         public ArrayList<ItemStack> getDecompositionMaterial(){
241                 return decompositionMaterial;
242         }
243
244
245
246         public ArrayList<ItemStack[]> getDecompositionResult(){
247                 return decompositionResults;
248         }
249
250
251
252         public ArrayList<ItemStack[]> getChemicalCombinationMaterial(){
253                 return chemicalCombinationMaterials;
254         }
255
256
257
258         public ArrayList<ItemStack> getChemicalCombinationResult(){
259                 return chemicalCombinationResult;
260         }
261
262
263
264         public ChemiCraftCraftingManager getCraftingManager(){
265                 return chemiCraftCraftingManager;
266         }
267
268 }