import java.util.ArrayList;
import java.util.HashMap;
+import net.minecraft.item.ItemStack;
import pcc.chemicraft.system.ChemiCraftCraftingManager;
import pcc.chemicraft.tileentity.TileEntityPyrolysisTable;
import pcc.chemicraft.util.ChemicalNBTRecipe;
import pcc.chemicraft.util.ICompoundHandler;
import pcc.chemicraft.util.MaterialRecipe;
-import net.minecraft.item.ItemStack;
/**
* ChemiCraftのAPI
/**
- * 分解台の素材のリスト
- */
- private ArrayList<ItemStack> decompositionMaterial = new ArrayList<ItemStack>();
-
-
- /**
- * 分解台の結果のリスト
- */
- private ArrayList<ItemStack[]> decompositionResults = new ArrayList<ItemStack[]>();
-
-
- /**
* 化合台の原子の種類のリスト
*/
private ArrayList<String[]> chemicalCombinationAtoms = new ArrayList<String[]>();
private ChemiCraftCraftingManager chemiCraftCraftingManager = new ChemiCraftCraftingManager();
+
+ /**
+ * 鉱石名リスト
+ */
+ private ArrayList<String> atomsOreNameList = new ArrayList<String>();
+
+
+ /**
+ * 鉱石IDリスト
+ */
private ArrayList<Integer> atomsOreIDList = new ArrayList<Integer>();
+ /**
+ * 鉱石メタデータリスト
+ */
private ArrayList<Integer> atomsOreMetaList = new ArrayList<Integer>();
+ /**
+ * 鉱石量リスト
+ */
private ArrayList<Integer> atomsOreSizeList = new ArrayList<Integer>();
+ /**
+ * 鉱石頻度リスト
+ */
private ArrayList<Integer> atomsOreFrequencyList = new ArrayList<Integer>();
+ /**
+ * 鉱石Y座標リスト
+ */
private ArrayList<Integer> atomsOrePosYList = new ArrayList<Integer>();
/**
+ * ツール&武器作成台の素材一覧のリスト
+ */
+ private ArrayList<ItemStack[]> toolAndWeaponMaterials = new ArrayList<ItemStack[]>();
+
+
+ /**
+ * ツール&武器作成台の結果のリスト
+ */
+ private ArrayList<ItemStack> toolAndWeaponResult = new ArrayList<ItemStack>();
+
+
+ /**
+ * ツール&武器作成台の不定形であるか
+ */
+ private ArrayList<Boolean> toolAndWeaponSharpless = new ArrayList<Boolean>();
+
+
+
+ /**
* add compound.
* @param name compound name.
*/
/**
- * 分解レシピを追加します。resultの要素数は0<= n <= 16にしてください。
- * @param material 素材
- * @param result 結果
- */
- public void addDecompositionRecipe(ItemStack material, ItemStack[] result){
- if(result.length <= 16){
- decompositionMaterial.add(material);
- decompositionResults.add(result);
- }else{
- System.err.println("ChemiCraft内でエラー:addDecompositionRecipeの引数resultの要素数が16を超えています。" + "Material:" + material + " Result:" + result);
- }
- }
-
-
-
- /**
* 化合レシピを追加します。materialの要素数は0<= n <= 16にしてください。
* @param material 素材
* @param result 結果
+ /**
+ * 分解台のレシピを追加します
+ * @param material 素材
+ * @param results 原子の元素番号の配列
+ * @param stacks 原子のできる数の配列
+ */
public void addDecompositionRecipe(ItemStack material, int[] results, int[] stacks) {
ItemStack[] itemstacks = new ItemStack[results.length];
for (int i = 0; i < itemstacks.length; i++) {
- itemstacks[i] = new ItemStack(ChemiCraft.instance.atomsID,stacks[i], results[i]);
+ itemstacks[i] = new ItemStack(ChemiCraft.instance.itemAtoms,stacks[i], results[i]);
}
TileEntityPyrolysisTable.addRecipe(material, itemstacks);
}
- public void addDecompositionRecipe(ItemStack itemstack, int burnTime) {
+ /**
+ * 分解台の燃料を追加します
+ * @param itemstack 燃料のItemStack
+ * @param burnTime 燃焼時間(tick * rate)
+ */
+ public void addDecompositionFuel(ItemStack itemstack, int burnTime) {
TileEntityPyrolysisTable.addFuel(itemstack, burnTime);
}
+ /**
+ * ツール&武器作成台のレシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ */
+ public void addToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+ toolAndWeaponMaterials.add(materials);
+ toolAndWeaponResult.add(result);
+ toolAndWeaponSharpless.add(false);
+ }
+
+
+ /**
+ * ツール&武器作成台の不定形レシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ */
+ public void addSharplessToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+ toolAndWeaponMaterials.add(materials);
+ toolAndWeaponResult.add(result);
+ toolAndWeaponSharpless.add(true);
+ }
+
+
+
+ /**
+ * 素材作成台の不定形レシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ * @param nbtRecipe NBT(Nullの場合はなし)
+ */
public void addSharplessMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
materialRecipe.add(new MaterialRecipe(result, materials, nbtRecipe, true));
}
+ /**
+ * 素材作成台のレシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ * @param nbtRecipe NBT(Nullの場合はなし)
+ */
public void addMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
materialRecipe.add(new MaterialRecipe(result, materials, nbtRecipe, false));
}
- public void addAtomsOre(int id, int size, int frequency, int posY){
- addAtomsOre(id, 0, size, frequency, posY);
+ /**
+ * 鉱石を追加します
+ * @param name 鉱石名
+ * @param id 鉱石ID
+ * @param meta 鉱石メタデータ
+ * @param size 一度に生成される量
+ * @param frequency 生成頻度
+ * @param posY Y座標
+ */
+ public void addAtomsOre(String name, int id, int size, int frequency, int posY){
+ addAtomsOre(name, id, 0, size, frequency, posY);
}
- public void addAtomsOre(int id, int meta, int size, int frequency, int posY){
+ public void addAtomsOre(String name, int id, int meta, int size, int frequency, int posY){
+ atomsOreNameList.add(name);
atomsOreIDList.add(id);
atomsOreMetaList.add(meta);
atomsOreSizeList.add(size);
atomsOreFrequencyList.add(frequency);
atomsOrePosYList.add(posY);
}
+
+
+
//以下システム関連//////////////////////////////////////////////////////
public ArrayList<ICompoundHandler> getCompoundHandler(){
- public ArrayList<ItemStack> getDecompositionMaterial(){
- return decompositionMaterial;
- }
-
-
-
- public ArrayList<ItemStack[]> getDecompositionResult(){
- return decompositionResults;
- }
-
-
-
public ArrayList<String[]> getChemicalCombinationAtoms(){
return chemicalCombinationAtoms;
}
+ public ArrayList<ItemStack[]> getToolAndWeaponMaterials() {
+ return toolAndWeaponMaterials;
+ }
+
+
+
+ public ArrayList<ItemStack> getToolAndWeaponResult() {
+ return toolAndWeaponResult;
+ }
+
+
+
+ public ArrayList<Boolean> getToolAndWeaponSharpless() {
+ return toolAndWeaponSharpless;
+ }
+
+
+
public ChemiCraftCraftingManager getCraftingManager(){
return chemiCraftCraftingManager;
}
+ public ArrayList<String> getAtomsOreNameList(){
+ return atomsOreNameList;
+ }
+
+
+
public ArrayList<Integer> getAtomsOreIDList(){
return atomsOreIDList;
}