import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import pcc.chemicraft.ChemiCraftData;
+import pcc.chemicraft.EnumLoggingType;
+import pcc.chemicraft.core.nbt.ChemicalNBTRecipe;
import pcc.chemicraft.core.system.ChemiCraftCraftingManager;
-import pcc.chemicraft.util.ChemicalNBTRecipe;
import pcc.chemicraft.util.Formula;
import pcc.chemicraft.util.ICompoundHandler;
import pcc.chemicraft.util.ListHash;
/**
- * ChemiCraftのAPI
- * 基本的にAddonはこのクラスのインスタンスを使う
+ * ChemiCraftのAPIを提供するクラスです<br>
+ * ChemiCraftのAPIを作成する場合はこのクラスを使用します<br>
* @author mozipi
*
*/
public class ChemiCraftAPI {
/**
- * Instance of the ChemiCraftAPI.
+ * APIのインスタンス
*/
private static ChemiCraftAPI instance = new ChemiCraftAPI();
+ /**
+ * APIのインスタンスを返します
+ * @return APIのインスタンス
+ */
public static ChemiCraftAPI instance(){
return instance;
}
private ArrayList<Integer[]> chemicalCombinationAmounts = new ArrayList<Integer[]>();
-
/**
* 化合台の原子の種類のリスト
*/
private ArrayList<String> compoundHandlerItemNames = new ArrayList<String>();
-
/**
* List of compounds handlers.
*/
private ArrayList<ICompoundHandler> compoundHandlers = new ArrayList<ICompoundHandler>();
-
/**
* 化合物の文字列をダメージ値に変換します。
*/
private ArrayList<ItemStack> toolAndWeaponResult = new ArrayList<ItemStack>();
-
/**
* ツール&武器作成台の不定形であるか
*/
* @param result 結果
*/
public void addChemicalCombinationRecipe(ItemStack result, Formula formula){
+ ChemiCraftCore.logger.write("addChemicalCombinationRecipe:" + "Result-" + result.getItemName() + "/Material-" + formula.getAtoms().toString()
+ , EnumLoggingType.INFO);
chemicalCombinationAtoms.add(formula.getAtoms());
chemicalCombinationAmounts.add(formula.getAmonts());
chemicalCombinationResult.add(result);
/**
- * add compound.
- * @param name compound name.
+ * 化合物を追加します
+ * @param name 化合物の名前
*/
public void addCompound(String name){
+ ChemiCraftCore.logger.write("addCompound:" + name
+ , EnumLoggingType.INFO);
compoundsNameListHash.add("en_US", name);
compoundHash.put(name, compoundHash.size());
}
/**
- * add compound corresponding to the language.
- * @param lang Language to the corresponding
- * @param englishName compound name
- * @param langName compound name(specified language)
+ * 既に登録された化合物に対して別の言語をを追加します
+ * @param lang 別言語名
+ * @param englishName 英語名
+ * @param langName 別言語への名前
*/
public void addCompound(String lang, String englishName, String langName){
+ ChemiCraftCore.logger.write("addCompound(MultiLang):" + "lang-" + lang + "/name-" + englishName + "/langToName-" + langName
+ , EnumLoggingType.INFO);
addCompound(englishName);
addCompoundLanguage(lang, langName);
}
- public void addCompoundLanguage(String lang, String langName){
+ /**
+ * 単体で使用すると異常が発生するため、API以外での使用を固く非推奨する
+ * @param lang 言語名
+ * @param langName 言語への名前
+ */
+ @Deprecated
+ private void addCompoundLanguage(String lang, String langName){
compoundsNameListHash.add(
lang,
langName);
/**
- * 電気分解台の燃料を追加します
- * @param itemstack 燃料のItemStack
- * @param burnTime 燃焼時間(tick * rate)
+ * 電気分解台のレシピを追加します
+ * @param material 素材
+ * @param formula 化学式(結果)
*/
- public void addElectrolysisDecompositionFuel(ItemStack itemstack, int burnTime) {
- this.electrolysisFuelList.put(
- itemstack,
- burnTime);
+ public void addElectrolysisDecompositionRecipe(ItemStack material, Formula formula) {
+ ChemiCraftCore.logger.write("addElectrolysisRecipe:" + "Material-" + material.getItemName() + "/Result-" + formula.getAtoms().toString(),
+ EnumLoggingType.INFO);
+
+ ItemStack[] itemstacks =
+ new ItemStack[formula.getAtoms().length];
+ for (int i = 0; i < itemstacks.length; i++) {
+ itemstacks[i] =
+ new ItemStack(
+ ChemiCraftCore.instance.itemAtoms,
+ formula.getAmonts()[i],
+ ChemiCraftData.toAtoms(formula.getAtoms()[i]));
+ }
+ this.electrolysisRecipeList.put(
+ material,
+ itemstacks);
}
+ /**
+ * 電気分解台のレシピを追加します
+ * @param material 素材 (すべて結果は同じになります)
+ * @param formula 化学式(結果)
+ */
public void addElectrolysisDecompositionRecipe(ArrayList<ItemStack> material, Formula formula) {
- for (ItemStack item : material)
- {
- if (item != null){
+ for (ItemStack item : material) {
+ if (item != null) {
addElectrolysisDecompositionRecipe(item, formula);
}
}
- public void addElectrolysisDecompositionRecipe(ItemStack material, Formula formula) {
+ /**
+ * 熱分解台のレシピを追加します
+ * @param material 素材
+ * @param formula 化学式(結果)
+ */
+ public void addPyrolysisDecompositionRecipe(ItemStack material, Formula formula) {
+ ChemiCraftCore.logger.write("addPyrolysisRecipe:" + "Material-" + material.getItemName() + "/Result-" + formula.getAtoms().toString(),
+ EnumLoggingType.INFO);
+
ItemStack[] itemstacks =
new ItemStack[formula.getAtoms().length];
for (int i = 0; i < itemstacks.length; i++) {
formula.getAmonts()[i],
ChemiCraftData.toAtoms(formula.getAtoms()[i]));
}
- this.electrolysisRecipeList.put(
+ this.pyrolysisRecipeList.put(
material,
itemstacks);
}
/**
- * 素材作成台のレシピを追加します
- * @param materials 素材
- * @param result 結果
- * @param nbtRecipe NBT(Nullの場合はなし)
+ * 熱分解台のレシピを追加します
+ * @param material 素材 (すべて結果は同じになります)
+ * @param formula 化学式(結果)
*/
- public void addMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
- materialRecipe.add(
- new MaterialRecipe(
- result,
- materials,
- nbtRecipe,
- false));
+ public void addPyrolysisDecompositionRecipe(ArrayList<ItemStack> material, Formula formula) {
+ for (ItemStack item : material) {
+ if (item != null) {
+ addPyrolysisDecompositionRecipe(item, formula);
+ return;
+ }
+ }
}
/**
- * 素材作成台の不定形レシピを追加します
- * @param materials 素材
- * @param result 結果
- * @param nbtRecipe NBT(Nullの場合はなし)
+ * 化合,熱分解,電気分解ができるレシピを追加します
+ * @param materialAndResult 素材(分解)と結果(化合)
+ * @param formula 化学式(分解なら結果に。化合なら素材に)
*/
- public void addSharplessMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
- materialRecipe.add(
- new MaterialRecipe(
- result,
- materials,
- nbtRecipe,
- true));
+ public void addReversible(ItemStack materialAndResult, Formula formula){
+ addChemicalCombinationRecipe(materialAndResult, formula);
+ addPyrolysisDecompositionRecipe(materialAndResult, formula);
+ addElectrolysisDecompositionRecipe(materialAndResult, formula);
+ }
+
+
+
+ /**
+ * 化合,電気分解ができるレシピを追加します
+ * @param materialAndResult 素材(分解)と結果(化合)
+ * @param formula 化学式(分解なら結果に。化合なら素材に)
+ */
+ public void addReversibleOfElectrolysis(ItemStack result, Formula formula){
+ addChemicalCombinationRecipe(result, formula);
+ addElectrolysisDecompositionRecipe(result, formula);
+ }
+
+
+
+ /**
+ * 化合,熱分解ができるレシピを追加します
+ * @param materialAndResult 素材(分解)と結果(化合)
+ * @param formula 化学式(分解なら結果に。化合なら素材に)
+ */
+ public void addReversibleOfPyrolysis(ItemStack result, Formula formula){
+ addChemicalCombinationRecipe(result, formula);
+ addPyrolysisDecompositionRecipe(result, formula);
}
* @param itemstack 燃料のItemStack
* @param burnTime 燃焼時間(tick * rate)
*/
- public void addPyrolysisDecompositionFuel(ItemStack itemstack, int burnTime) {
- this.pyrolysisFuelList.put(
+ public void addElectrolysisDecompositionFuel(ItemStack itemstack, int burnTime) {
+ ChemiCraftCore.logger.write("addElectrolysisFuel:" + "Fuel-" + itemstack.getItemName() + "/BurnTime-" + burnTime,
+ EnumLoggingType.INFO);
+
+ this.electrolysisFuelList.put(
itemstack,
burnTime);
}
- public void addPyrolysisDecompositionRecipe(ArrayList<ItemStack> material, Formula formula) {
- for (ItemStack item : material)
- {
- if (item != null){
- addPyrolysisDecompositionRecipe(item, formula);
- return;
- }
- }
+ /**
+ * 熱分解台の燃料を追加します
+ * @param itemstack 燃料のItemStack
+ * @param burnTime 燃焼時間(tick * rate)
+ */
+ public void addPyrolysisDecompositionFuel(ItemStack itemstack, int burnTime) {
+ ChemiCraftCore.logger.write("addPyrolysisFuel:" + "Fuel-" + itemstack.getItemName() + "/BurnTime-" + burnTime,
+ EnumLoggingType.INFO);
+
+ this.pyrolysisFuelList.put(
+ itemstack,
+ burnTime);
}
/**
- * 電気分解台のレシピを追加します
- * @param material 素材
- * @param integers 原子の元素番号の配列
- * @param integers2 原子のできる数の配列
+ * 素材作成台のレシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ * @param nbtRecipe NBT(Nullの場合はなし)
*/
- public void addPyrolysisDecompositionRecipe(ItemStack material, Formula formula) {
- ItemStack[] itemstacks =
- new ItemStack[formula.getAtoms().length];
- for (int i = 0; i < itemstacks.length; i++) {
- itemstacks[i] =
- new ItemStack(
- ChemiCraftCore.instance.itemAtoms,
- formula.getAmonts()[i],
- ChemiCraftData.toAtoms(formula.getAtoms()[i]));
- }
- this.pyrolysisRecipeList.put(
- material,
- itemstacks);
- }
+ public void addMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
+ ChemiCraftCore.logger.write("addMaterialRecipe:" + "Materials-" + materials.toString() + "/Result-" + result.getItemName() + "/NBT-" + nbtRecipe,
+ EnumLoggingType.INFO);
+ materialRecipe.add(
+ new MaterialRecipe(
+ result,
+ materials,
+ nbtRecipe,
+ false));
+ }
- public void addReversible(ItemStack result, Formula formula){
- addChemicalCombinationRecipe(result, formula);
- addPyrolysisDecompositionRecipe(result, formula);
- addElectrolysisDecompositionRecipe(result, formula);
- }
+ /**
+ * 素材作成台の不定形レシピを追加します
+ * @param materials 素材
+ * @param result 結果
+ * @param nbtRecipe NBT(Nullの場合はなし)
+ */
+ public void addSharplessMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
+ ChemiCraftCore.logger.write("addMaterialRecipe:" + "Materials-" + materials.toString() + "/Result-" + result.getItemName() + "/NBT-" + nbtRecipe,
+ EnumLoggingType.INFO);
- public void addReversibleOfElectrolysis(ItemStack result, Formula formula){
- addChemicalCombinationRecipe(result, formula);
- addElectrolysisDecompositionRecipe(result, formula);
+ materialRecipe.add(
+ new MaterialRecipe(
+ result,
+ materials,
+ nbtRecipe,
+ true));
}
- public void addReversibleOfPyrolysis(ItemStack result, Formula formula){
- addChemicalCombinationRecipe(result, formula);
- addPyrolysisDecompositionRecipe(result, formula);
+ /**
+ * 化合物のハンドラーを設定します。<br>
+ * CompoundHandlerを実装したクラスをcompoundHandlerに入れることによってhandlerItemNameで指定した<br>
+ * 化合物にハンドラーをつけることができます。
+ * @param handlerItemName ハンドラーをつける化合物の英語名
+ * @param compoundHandler ハンドラー
+ */
+ public void settingCompoundHandler(String handlerItemName, ICompoundHandler compoundHandler){
+ ChemiCraftCore.logger.write("settingCompoundHandler:" + "Name-" + handlerItemName + "/CompoundHandler-" + compoundHandler,
+ EnumLoggingType.INFO);
+
+ compoundHandlers.add(compoundHandler);
+ compoundHandlerItemNames.add(handlerItemName);
}
/**
- * ツール&武器作成台の不定形レシピを追加します
+ * ツール&武器作成台のレシピを追加します<br>
+ * 未作成であり、動作しません
* @param materials 素材
* @param result 結果
*/
- public void addSharplessToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+ @Deprecated
+ public void addToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
toolAndWeaponMaterials.add(materials);
toolAndWeaponResult.add(result);
- toolAndWeaponSharpless.add(true);
+ toolAndWeaponSharpless.add(false);
}
/**
- * ツール&武器作成台のレシピを追加します
+ * ツール&武器作成台の不定形レシピを追加します<br>
+ * * 未作成であり、動作しません
* @param materials 素材
* @param result 結果
*/
- public void addToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+ @Deprecated
+ public void addSharplessToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
toolAndWeaponMaterials.add(materials);
toolAndWeaponResult.add(result);
- toolAndWeaponSharpless.add(false);
+ toolAndWeaponSharpless.add(true);
}
//以下システム関連//////////////////////////////////////////////////////
- public ArrayList<Integer[]> getChemicalCombinationAmounts(){
+ public ArrayList<Integer[]> getChemicalCombinationAmounts() {
return chemicalCombinationAmounts;
}
- public ArrayList<String[]> getChemicalCombinationAtoms(){
+ public ArrayList<String[]> getChemicalCombinationAtoms() {
return chemicalCombinationAtoms;
}
- public ArrayList<ItemStack> getChemicalCombinationResult(){
+ public ArrayList<ItemStack> getChemicalCombinationResult() {
return chemicalCombinationResult;
}
- public int getCompound(String key){
- if(compoundHash.get(key) != null){
+ public int getCompound(String key) {
+ if (compoundHash.get(key) != null) {
return compoundHash.get(key);
} else {
return -1;
- public ArrayList<ICompoundHandler> getCompoundHandler(){
+ public ArrayList<ICompoundHandler> getCompoundHandler() {
compoundHandlers.trimToSize();
return compoundHandlers;
-
}
- public ArrayList<String> getCompoundHandlerItemName(){
+ public ArrayList<String> getCompoundHandlerItemName() {
compoundHandlerItemNames.trimToSize();
return compoundHandlerItemNames;
}
- public ListHash<String, String> getCompoundsName(){
+ public ListHash<String, String> getCompoundsName() {
return compoundsNameListHash;
}
- public ChemiCraftCraftingManager getCraftingManager(){
+ public ChemiCraftCraftingManager getCraftingManager() {
return chemiCraftCraftingManager;
}
- public HashMap<ItemStack, Integer> getElectrolysisFuelList()
- {
+ public HashMap<ItemStack, Integer> getElectrolysisFuelList() {
return electrolysisFuelList;
}
- public HashMap<ItemStack, ItemStack[]> getElectrolysisRecipeList()
- {
+ public HashMap<ItemStack, ItemStack[]> getElectrolysisRecipeList() {
return electrolysisRecipeList;
}
- public ArrayList<MaterialRecipe> getMaterialRecipe(){
+ public ArrayList<MaterialRecipe> getMaterialRecipe() {
return materialRecipe;
}
- public HashMap<ItemStack, Integer> getPyrolysisFuelList()
- {
+ public HashMap<ItemStack, Integer> getPyrolysisFuelList() {
return pyrolysisFuelList;
}
- public HashMap<ItemStack, ItemStack[]> getPyrolysisRecipeList()
- {
+ public HashMap<ItemStack, ItemStack[]> getPyrolysisRecipeList() {
return pyrolysisRecipeList;
}
return toolAndWeaponSharpless;
}
-
-
- /**
- * setting compound handler.
- * @param handlerItemName
- * @param compoundHandler
- */
- public void settingCompoundHandler(String handlerItemName, ICompoundHandler compoundHandler){
- compoundHandlers.add(compoundHandler);
- compoundHandlerItemNames.add(handlerItemName);
- }
-
}