import pcc.chemicraft.util.Auxiliary.ArrayAuxiliary;
import pcc.chemicraft.util.Auxiliary.MathAuxiliary;
import pcc.chemicraft.util.Auxiliary.NameAuxiliary;
-import sinVisualizer.SinVisualizer;
-import sinVisualizer.SinVisualizerPanel;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
public int dustID;
public int radiationGunID;
public int radiationBalletID;
+ public int blackSmokeID;
+ public int pearID;
/**
* the BlockID.
public Item itemDust;
public Item itemRadiationGun;
public Item itemRadiationBallet;
+ public Item itemBlackSmoke;
+ public Item itemPear;
/**
* this is Textures Path on ChemiCraft.
public ChemiCraftRegisterCompoundsHandler registerCompoundsHandler;
public ChemiCraftRegisterEntitys registerEntitys;
- /**
- * Sin Visualizer Instance.
- */
- public SinVisualizer sinVisualizer;
-
public ChemiCraft() {
this.registerBlock = new ChemiCraftRegisterBlock(this);
this.registerItem = new ChemiCraftRegisterItem(this);
this.dustID = ccfgItem.additionID();
this.radiationGunID = ccfgItem.additionID();
this.radiationBalletID = ccfgItem.additionID();
+ this.blackSmokeID = ccfgItem.additionID();
Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
}
-
-
- public SinVisualizer getSinVisualizer() {
- return this.sinVisualizer;
- }
-
}
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
import pcc.chemicraft.tileentity.TileEntityPyrolysisTable;
import pcc.chemicraft.util.ChemicalNBTRecipe;
+import pcc.chemicraft.util.Formula;
+import pcc.chemicraft.util.FormulaPart;
import pcc.chemicraft.util.ICompoundHandler;
import pcc.chemicraft.util.ListHash;
import pcc.chemicraft.util.MaterialRecipe;
/**
- * 鉱石を追加します
- * @param par1Name 鉱石名
- * @param par2Atoms 元素
- * @param par3Amounts 元素数
- * @param par4Id ID
- * @param par5Size 量
- * @param par6Frequency 頻度
- * @param par7PosY Y座標
+ * 鉱石を追加します。
+ * @param par1Name
+ * @param par2Formula
+ * @param par3Id
+ * @param par4Size
+ * @param par5Frequency
+ * @param par6PosY
*/
- public void addAtomOres(String par1Name, Integer[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, int par6Frequency, int par7PosY){
+ public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, int par4Size, int par5Frequency, int par6PosY){
atomOresList.add(
new WorldGenAtomsOre(
- par4Id,
+ par3Id,
getAtomOresMetaOfLastIndex(),
- par5Size,
- par6Frequency,
- par7PosY));
- atomOresAtomsHash.put(par1Name, par2Atoms);
- atomOresAmountsHash.put(par1Name, par3Amounts);
+ par4Size,
+ par5Frequency,
+ par6PosY));
+ atomOresAtomsHash.put(par1Name, ChemiCraftData.toAtoms(par2Formula.getAtoms()));
+ atomOresAmountsHash.put(par1Name, par2Formula.getAmonts());
addAtomOresLanguage(par1Name, par1Name, "en_US");
}
- /**
- * 鉱石を追加します
- * @param par1Name 鉱石名
- * @param par2Atoms 元素
- * @param par3Amounts 元素数
- * @param par4Id ID
- * @param par5Size 量
- * @param par6Frequency 頻度
- * @param par7PosY Y座標
- */
- public void addAtomOres(String par1Name, String[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, int par6Frequency, int par7PosY){
- addAtomOres(
- par1Name,
- ChemiCraftData.toAtoms(par2Atoms),
- par3Amounts,
- par4Id,
- par5Size,
- par6Frequency,
- par7PosY);
- }
-
-
-
- /**
- * 鉱石を追加します
- * @param par1Name 鉱石名
- * @param par2Atoms 元素
- * @param par3Amounts 元素数
- * @param par4Id ID
- * @param par5Size 量
- * @param par6Frequency 頻度
- * @param par7PosY Y座標
- */
- public void addAtomOres(String par1Name, String[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, EnumOreSpawnFrequency par6Enum){
- addAtomOres(
- par1Name,
- ChemiCraftData.toAtoms(par2Atoms),
- par3Amounts,
- par4Id,
- par5Size,
- par6Enum.getFrequency(),
- par6Enum.getPosY());
- }
-
-
-
- /**
- * 鉱石を追加します
- * @param par1Name 鉱石名
- * @param par2Atoms 元素
- * @param par3Amounts 元素数
- * @param par4Id ID
- * @param par5Size 量
- * @param par6Frequency 頻度
- * @param par7PosY Y座標
- */
- public void addAtomOres(String par1Name, Integer[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, EnumOreSpawnFrequency par6Enum){
+ public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, EnumOreSpawnFrequency par4Enum){
addAtomOres(
par1Name,
- par2Atoms,
- par3Amounts,
- par4Id,
- par5Size,
- par6Enum.getFrequency(),
- par6Enum.getPosY());
+ par2Formula,
+ par3Id,
+ par4Enum.getSize(),
+ par4Enum.getFrequency(),
+ par4Enum.getPosY()
+ );
}
+ public void addReversibleOfPyrolysis(ItemStack result, Formula formula){
+ addChemicalCombinationRecipe(result, formula);
+ addPyrolysisDecompositionRecipe(result, ChemiCraftData.toAtoms(formula.getAtoms()), formula.getAmonts());
+ }
+
+
+
+ public void addReversibleOfElectrolysis(ItemStack result, Formula formula){
+ addChemicalCombinationRecipe(result, formula);
+ addElectrolysisDecompositionRecipe(result, ChemiCraftData.toAtoms(formula.getAtoms()), formula.getAmonts());
+ }
+
+
+
+ public void addReversible(ItemStack result, Formula formula){
+ addChemicalCombinationRecipe(result, formula);
+ addPyrolysisDecompositionRecipe(result, ChemiCraftData.toAtoms(formula.getAtoms()), formula.getAmonts());
+ addElectrolysisDecompositionRecipe(result, ChemiCraftData.toAtoms(formula.getAtoms()), formula.getAmonts());
+ }
+
+
+
/**
* 化合レシピを追加します。materialの要素数は0<= n <= 16にしてください。
* @param material 素材
* @param result 結果
*/
- public void addChemicalCombinationRecipe(String[] atoms, Integer[] amounts, ItemStack result){
- chemicalCombinationAtoms.add(atoms);
- chemicalCombinationAmounts.add(amounts);
+ public void addChemicalCombinationRecipe(ItemStack result, Formula formula){
+ chemicalCombinationAtoms.add(formula.getAtoms());
+ chemicalCombinationAmounts.add(formula.getAmonts());
chemicalCombinationResult.add(result);
}
+ public void addPyrolysisDecompositionRecipe(ArrayList<ItemStack> material, Integer[] integers, Integer[] integers2) {
+ for (ItemStack item : material)
+ {
+ if (item != null){
+ addPyrolysisDecompositionRecipe(item, integers, integers2);
+ }
+ }
+ }
+
+
+
public void addElectrolysisDecompositionRecipe(ItemStack material, Integer[] integers, Integer[] integers2) {
ItemStack[] itemstacks =
new ItemStack[integers.length];
+ public void addElectrolysisDecompositionRecipe(ArrayList<ItemStack> material, Integer[] integers, Integer[] integers2) {
+ for (ItemStack item : material)
+ {
+ if (item != null){
+ addElectrolysisDecompositionRecipe(item, integers, integers2);
+ }
+ }
+ }
+
+
+
/**
* 素材作成台のレシピを追加します
* @param materials 素材
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.OreDictionary;
import pcc.chemicraft.gen.EnumOreSpawnFrequency;
+import pcc.chemicraft.util.Formula;
-public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister {
+public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister
+{
- public ChemiCraftRegisterChemicalRecipe(ChemiCraft mod) {
+ public ChemiCraftRegisterChemicalRecipe(ChemiCraft mod)
+ {
super(mod);
}
@Override
- public void start() {
+ public void start()
+ {
// 元素入手手段
// 水素
// リチウム
this.mod.api.addAtomOres(
"LithiumOre",
- new String[] { "Li", "Al", "Si", "O" },
- new Integer[] { 1, 1, 4, 10 },
+ new Formula("LiAlSi4O10"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// LiAlSi4O10
this.mod.api.addAtomOresLanguage("LithiumOre", "リチウム鉱石", "ja_JP");
// ベリリウム
this.mod.api.addAtomOres(
"BerylliumOre",
- new String[] { "Be", "Al", "Si", "O" },
- new Integer[] { 3, 2, 6, 18 },
+ new Formula("Be3Al2Si6O18"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// Be3Al2Si6O18
this.mod.api.addAtomOresLanguage("BerylliumOre", "ベリリウム鉱石", "ja_JP");
// ホウ素
this.mod.api.addAtomOres(
"BoronOre",
- new String[] { "Na", "Ca", "B", "O", "H" },
- new Integer[] { 1, 1, 5, 17, 16 },
+ new Formula("NaCaB5O6(OH)6・5H2O"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// NaCaB5O6(OH)6・5H2O
this.mod.api.addAtomOresLanguage("BoronOre", "ホウ素鉱石", "ja_JP");
// フッ素
this.mod.api.addAtomOres(
"FluorineOre",
- new String[] { "Ca", "F" },
- new Integer[] { 1, 2 },
+ new Formula("CaF2"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// CaF2
this.mod.api.addAtomOresLanguage("FluorineOre", "フッ素鉱石", "ja_JP");
// ナトリウム
this.mod.api.addAtomOres(
"SodiumOre",
- new String[] { "Na", "Cl" },
- new Integer[] { 1, 1 },
+ new Formula("NaCl"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// NaCl
this.mod.api.addAtomOresLanguage("SodiumOre", "ナトリウム鉱石", "ja_JP");
// マグネシウム
this.mod.api.addAtomOres(
"MagnesiumOre",
- new String[] { "Ca", "Mg", "C", "O" },
- new Integer[] { 1, 1, 2, 6 },
+ new Formula("CaMg(CO3)2"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// CaMg(CO3)2
this.mod.api.addAtomOresLanguage("MagnesiumOre", "マグネシウム鉱石", "ja_JP");
// アルミニウム
this.mod.api.addAtomOres(
"AluminiumOre",
- new String[] { "Al", "O", "H" },
- new Integer[] { 3, 3, 3 },
+ new Formula("Al(OH)3"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// Al(OH)3
this.mod.api.addAtomOresLanguage("AluminiumOre", "アルミニウム鉱石", "ja_JP");
// リン
this.mod.api.addAtomOres(
"PhosphorusOre",
- new String[] { "Ca", "P", "O", "F" },
- new Integer[] { 5, 3, 12, 1 },
+ new Formula("Ca5(PO4)3F"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// Ca5(PO4)3F
this.mod.api.addAtomOresLanguage("PhosphorusOre", "リン鉱石", "ja_JP");
// 硫黄
this.mod.api.addAtomOres(
"SulfurOre",
- new String[] { "S" },
- new Integer[] { 1 },
+ new Formula("S"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// S
this.mod.api.addAtomOresLanguage("SulfurOre", "硫黄鉱石", "ja_JP");
// カリウム
this.mod.api.addAtomOres(
"PotassiumOre",
- new String[] { "K", "Cl" },
- new Integer[] { 1, 1 },
+ new Formula("KCl"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// KCl
this.mod.api.addAtomOresLanguage("PotassiumOre", "カリウム鉱石", "ja_JP");
// カルシウム
this.mod.api.addAtomOres(
"CalciumOre",
- new String[] { "Ca", "C", "O" },
- new Integer[] { 1, 1, 3 },
+ new Formula("CaCO3"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// CaCO3
this.mod.api.addAtomOresLanguage("CalciumOre", "カルシウム鉱石", "ja_JP");
// スカンジウム
this.mod.api.addAtomOres(
"ScandiumOre",
- new String[] { "Sc", "Y", "Si", "O" },
- new Integer[] { 2, 2, 2, 7 },
+ new Formula("Sc2Si2O7"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// (Sc,Y)2Si2O7
this.mod.api.addAtomOresLanguage("ScandiumOre", "スカンジウム鉱石", "ja_JP");
// チタン
this.mod.api.addAtomOres(
"TitaniumOre",
- new String[] { "Ti", "O" },
- new Integer[] { 1, 2 },
+ new Formula("TiO2"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// TiO2
this.mod.api.addAtomOresLanguage("TitaniumOre", "チタン鉱石", "ja_JP");
// バナジウム
this.mod.api.addAtomOres(
"VanadiumOre",
- new String[] { "K", "U", "O", "V", "H" },
- new Integer[] { 2, 2, 15, 2, 6 },
+ new Formula("K2(UO2)2V2O8・3H2O"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
// K2(UO2)2V2O8・3H2O
this.mod.api.addAtomOresLanguage("VanadiumOre", "バナジウム鉱石", "ja_JP");
// クロム
this.mod.api.addAtomOres(
"Chromium",
- new String[] { "Fe", "Cr", "O" },
- new Integer[] { 1, 2, 4 },
+ new Formula("FeCr2O4"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
this.mod.api.addAtomOresLanguage("Chromium", "クロム鉱石", "ja_JP");
// FeCr2O4
// マンガン
this.mod.api.addAtomOres(
"ManganeseOre",
- new String[] { "Mn", "O" },
- new Integer[] { 1, 2 },
+ new Formula("MnO2"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
- this.mod.api.addAtomOresLanguage("ManganeseOre", "ja_JP", "マンガン鉱石");
+ this.mod.api.addAtomOresLanguage("ManganeseOre", "マンガン鉱石", "ja_JP");
// MnO2
// コバルト
this.mod.api.addAtomOres(
"CobaltOre",
- new String[] { "Co", "As", "S" },
- new Integer[] { 1, 1, 1 },
+ new Formula("CoAsS"),
this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
- 8,
EnumOreSpawnFrequency.NORMAL);
- this.mod.api.addAtomOresLanguage("CobaltOre", "ja_JP", "コバルト鉱石");
+ this.mod.api.addAtomOresLanguage("CobaltOre", "コバルト鉱石", "ja_JP");
// CoAsS
- // this.mod.api.addAtomOres("元素名(英)", new String[]{"元素"}, new Integer[]{<数>}, this.atomOresID[this.mod.api.getAtomOresLastIndex()], 8, EnumOreSpawnFrequency.NORMAL); // 化学式
- // this.mod.api.addAtomOresLanguage("元素名(英)", "元素名(他国語)", "言語");
+ // ニッケル
+ this.mod.api.addAtomOres(
+ "NickelOre",
+ new Formula("Ni3Si2O5(OH)4"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ // (Ni,Mg)3Si2O5(OH)4
+ this.mod.api.addAtomOresLanguage("NickelOre", "ニッケル鉱石", "ja_JP");
+
+ // 銅
+ // IC2で入手
+ this.mod.api.addPyrolysisDecompositionRecipe(
+ OreDictionary.getOres("oreCopper"),
+ new Integer[] { this.mod.chemicalData.COPPER },
+ new Integer[] { 1 });
+
+ // 亜鉛
+ this.mod.api.addAtomOres(
+ "ZincOre",
+ new Formula("ZnS"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ this.mod.api.addAtomOresLanguage("ZincOre", "亜鉛鉱石", "ja_JP");
+ // (Zn,Fe)S
+
+ // ガリウム
+ this.mod.api.addAtomOres(
+ "Gallium",
+ new Formula("Ga"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ this.mod.api.addAtomOresLanguage("Gallium", "ガリウム鉱石", "ja_JP");
+ // Ga
+
+ // ゲルマニウム
+ this.mod.api.addAtomOres(
+ "GermaniumOre",
+ new Formula("Ge"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ this.mod.api.addAtomOresLanguage("GermaniumOre", "ゲルマニウム鉱石", "ja_JP");
+ // Ge
+
+ // ヒ素
+ this.mod.api.addAtomOres(
+ "ArsenicOre",
+ new Formula("As2S3"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ this.mod.api.addAtomOresLanguage("ArsenicOre", "ヒ素鉱石", "ja_JP");
+ // As2S3
+
+ // ルビジウム
+ this.mod.api.addAtomOres(
+ "RubidiumOre",
+ new Formula("Rb"),
+ this.mod.atomOresID[this.mod.api.getAtomOresLastIndex()],
+ EnumOreSpawnFrequency.NORMAL);
+ this.mod.api.addAtomOresLanguage("RubidiumOre", "ルビジウム鉱石", "ja_JP");
+ // Rb
+
}
}
package pcc.chemicraft;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.ItemStack;
import pcc.chemicraft.item.ItemAtoms;
import pcc.chemicraft.item.ItemAtomsGrenade;
+import pcc.chemicraft.item.ItemBlackSmoke;
import pcc.chemicraft.item.ItemChemiCell;
import pcc.chemicraft.item.ItemCompounds;
import pcc.chemicraft.item.ItemDust;
import pcc.chemicraft.item.ItemGasCollectingBottle;
import pcc.chemicraft.item.ItemRadiationBallet;
import pcc.chemicraft.item.ItemRadiationGun;
+import pcc.chemicraft.util.OldItemFood;
public class ChemiCraftRegisterItem extends ChemiCraftRegister {
this.mod.itemGasCollectingBottle = new ItemGasCollectingBottle(this.mod.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
this.mod.itemAtomGrenade = new ItemAtomsGrenade(this.mod.atomGrenadeID).setItemName("grenade").setIconIndex(1);
this.mod.itemChemicalCells = new ItemChemiCell(this.mod.chemicalCellsID).setItemName("chemiCell").setIconIndex(3);
- this.mod.itemDust = new ItemDust(15000).setItemName("dust").setIconIndex(12);
+ this.mod.itemDust = new ItemDust(this.mod.dustID).setItemName("dust").setIconIndex(12);
this.mod.itemRadiationGun = new ItemRadiationGun(this.mod.radiationGunID).setIconIndex(4).setItemName("RadiationGun");
this.mod.itemRadiationBallet = new ItemRadiationBallet(this.mod.radiationBalletID).setIconIndex(5).setItemName("RadiationBallet");
+ this.mod.itemBlackSmoke = new ItemBlackSmoke(this.mod.blackSmokeID).setIconIndex(7).setItemName("BlackSmoke");
+ this.mod.itemPear = new OldItemFood(this.mod.pearID, 4, 0.4F, false){
+ public int getColorFromItemStack(ItemStack par1ItemStack,int par2){
+ return 0x66FF66;
+ }
+ }.setIconIndex(11).setCreativeTab(CreativeTabs.tabFood).setItemName("Pear");
/*
* 名前登録&Minecraftに登録
this.mod.nameAuxiliary.addName(this.mod.itemRadiationGun, "ja_JP", "放射線銃");
this.mod.nameAuxiliary.addName(this.mod.itemRadiationBallet, "RadiationBallet");
this.mod.nameAuxiliary.addName(this.mod.itemRadiationGun, "ja_JP", "放射線弾");
+ this.mod.nameAuxiliary.addName(this.mod.itemBlackSmoke, "BlackSmoke");
+ this.mod.nameAuxiliary.addName(this.mod.itemBlackSmoke, "ja_JP", "黒煙");
+ this.mod.nameAuxiliary.addName(this.mod.itemPear, "Pear");
+ this.mod.nameAuxiliary.addName(this.mod.itemPear, "ja_JP", "梨");
}
}
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import pcc.chemicraft.util.Formula;
import pcc.chemicraft.util.NBTRecipeGrenade;
import cpw.mods.fml.common.registry.GameRegistry;
/*
* 化合物のレシピ
*/
- this.mod.api.addChemicalCombinationRecipe(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}, new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("SodiumChloride")));
- this.mod.api.addChemicalCombinationRecipe(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}, new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("ChlorousAcid")));
- this.mod.api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("Water")));
+ this.mod.api.addChemicalCombinationRecipe(new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("SodiumChloride")), new Formula(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}));
+ this.mod.api.addChemicalCombinationRecipe(new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("ChlorousAcid")), new Formula(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}));
+ this.mod.api.addReversibleOfElectrolysis(new ItemStack(this.mod.itemCompounds, 1, this.mod.api.getCompound("Water")), new Formula(new String[]{"H", "O"}, new Integer[]{2, 1}));
+
+ /*
+ * 既存物のレシピ
+ */
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Block.dirt), new Formula("SiI2O2"));
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Block.sand), new Formula("SiIO"));
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Block.stone), new Formula("SiO2"));
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Block.glass), new Formula("SiCO2"));
+ this.mod.api.addReversibleOfElectrolysis(new ItemStack(Block.wood), new Formula("C6H10O5"));
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Block.tnt), new Formula("C7H5N3O6"));
+ this.mod.api.addReversibleOfPyrolysis(new ItemStack(Item.emerald), new Formula("Be3Al2Si6O18"));
+ this.mod.api.addChemicalCombinationRecipe(new ItemStack(Item.diamond), new Formula("C64Si16"));
/*
* 素材制作代のレシピ
new NBTRecipeGrenade()
);
+ this.mod.api.addMaterialRecipe(new ItemStack[] {
+ new ItemStack(this.mod.itemAtoms, 1, ChemiCraftData.toAtoms("Na")),
+ new ItemStack(this.mod.itemAtoms, 1, ChemiCraftData.toAtoms("C")),
+ new ItemStack(this.mod.itemAtoms, 1, ChemiCraftData.toAtoms("I")),
+ null,
+ new ItemStack(Item.appleRed),
+ null,
+ null,
+ null,
+ null,
+ },
+ new ItemStack(this.mod.itemPear),
+ null
+ );
+
/*
* 熱分解台のレシピ
*/
--- /dev/null
+package pcc.chemicraft.entity;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import pcc.chemicraft.util.Auxiliary.MathAuxiliary;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.monster.EntityMob;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.World;
+
+public class EntityBlackSmoke extends Entity
+{
+
+ private final int TIME = 5 * 20;
+
+ public HashMap<EntityMob, Integer> invisibilityMobsMap = new HashMap<EntityMob, Integer>();
+
+ private int restTime;
+
+ public EntityBlackSmoke(EntityPlayer par1EntityPlayer, World par2World, double par3, double par4, double par5)
+ {
+ super(par2World);
+ this.posX = par3;
+ this.posY = par4;
+ this.posZ = par5;
+
+ this.restTime = TIME;
+ //for (Entity var5:MathAuxiliary.getTriangleEntitys(par2World, par3, par4, par5, Math.atan2(par1EntityPlayer.posZ - this.posZ, par1EntityPlayer.posX - this.posX), 0.0D, 120.0D, 10.0D)){
+ for (Entity var5:(ArrayList<Entity>)par2World.loadedEntityList){
+ if (var5 instanceof EntityMob){
+ this.invisibilityMobsMap.put((EntityMob)var5, TIME);
+ }
+ }
+ }
+
+ @Override
+ protected void entityInit()
+ {
+
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ if (this.restTime < 0){
+ this.setDead();
+ }
+ Iterator<EntityMob> var1 = this.invisibilityMobsMap.keySet().iterator();
+ while (var1.hasNext()) {
+ EntityMob var2 = var1.next();
+ var2.setTarget(this);
+ }
+ for (int i = 0; i < 5; i++){
+ this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, Math.random() * 0.1D - 0.05D, 0.05D, Math.random() * 0.1D - 0.05D);
+ }
+ this.restTime--;
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound var1)
+ {
+
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound var1)
+ {
+
+ }
+
+}
this.deadDelay--;
this.rad += 0.5;
if (this.deadDelay % 4 == 0) {
- this.explode(this.rad);
+ this.explode(this.rad, false);
+ } else if (this.deadDelay % 6 == 0){
+ this.explode(this.rad, true);
}
} else {
this.setDead();
}
- private void explode(double r) {
+ private void explode(double r, boolean b) {
double angle = 0;
double angleY = 0;
for (int i = 0; i < r; i++) {
angle += 360/j;
double x = this.posX - Math.sin(Math.toRadians(angle)) * ry;
double z = this.posZ + Math.cos(Math.toRadians(angle)) * ry;
- this.worldObj.createExplosion(this, x - 6 + Math.random() * 12, y + 3, z - 6 + Math.random() * 12, this.explodeSize, false);
+ if (!this.worldObj.isRemote){
+ this.worldObj.createExplosion(this, x - 6 + Math.random() * 12, y + 3, z - 6 + Math.random() * 12, this.explodeSize, b);
+ }
}
}
}
*/
public enum EnumOreSpawnFrequency {
- HIGH(10, 256),
- NORMAL(5, 64),
- LOW(3, 30),
- RARE(1, 15);
+ HIGH(8, 10, 256),
+ NORMAL(8, 5, 64),
+ LOW(8, 3, 30),
+ RARE(8, 1, 15);
+
+ /**
+ * 鉱石の塊の大きさ
+ */
+ private short size;
/**
* 鉱石の生成頻度
/**
* @param par1 鉱石の生成頻度
*/
- private EnumOreSpawnFrequency(int par1, int par2) {
- this.frequency = (short) par1;
- this.posY = (short) par2;
+ private EnumOreSpawnFrequency(int par1, int par2, int par3) {
+ this.size = (short) par1;
+ this.frequency = (short) par2;
+ this.posY = (short) par3;
+ }
+
+ /**
+ * 鉱石の塊の大きさを返します
+ * @return 鉱石の塊の大きさ
+ */
+ public short getSize() {
+ return this.size;
}
/**
--- /dev/null
+package pcc.chemicraft.item;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import pcc.chemicraft.ChemiCraft;
+import pcc.chemicraft.entity.EntityBlackSmoke;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockHalfSlab;
+import net.minecraft.block.BlockStairs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.monster.EntityMob;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.InventoryEnderChest;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+
+public class ItemBlackSmoke extends Item
+{
+
+ public HashMap<EntityMob, Integer> invisibilityMobsMap = new HashMap<EntityMob, Integer>();
+
+ public ItemBlackSmoke(int par1)
+ {
+ super(par1);
+ this.setCreativeTab(ChemiCraft.creativeTabChemiCraft);
+ }
+
+ @Override
+ public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
+ {
+ double var11 = par4 + 0.5D;
+ double var12 = par5;
+ double var13 = par6 + 0.5D;
+ switch(par7){
+ case 0:
+ var12--;
+ break;
+ case 1:
+ var12++;
+ break;
+ case 2:
+ var13--;
+ break;
+ case 3:
+ var13++;
+ break;
+ case 4:
+ var11--;
+ break;
+ case 5:
+ var11++;
+ break;
+ }
+ par3World.spawnEntityInWorld(new EntityBlackSmoke(par2EntityPlayer, par3World, var11, var12, var13));
+ return true;
+ }
+
+ @Override
+ public String getTextureFile(){
+ return ChemiCraft.instance.ITEM_TEXTURE;
+ }
+
+}
package pcc.chemicraft.util;
-import java.awt.Toolkit;
import java.util.ArrayList;
-import pcc.chemicraft.ChemiCraft;
-import pcc.chemicraft.debug.DebugData;
-import pcc.chemicraft.debug.DebugTick;
-
-import sinVisualizer.SinVisualizerPanel;
-import sinVisualizer.Values;
-
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLiving;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraft.pathfinding.PathEntity;
-import net.minecraft.util.DamageSource;
-import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import cpw.mods.fml.common.registry.LanguageRegistry;
--- /dev/null
+package pcc.chemicraft.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import pcc.chemicraft.ChemiCraftData;
+
+public class Formula
+{
+
+ private ArrayList<String> atoms = new ArrayList<String>();
+ private ArrayList<Integer> amonts = new ArrayList<Integer>();
+
+ public Formula(String par1)
+ {
+ this.run(par1);
+ }
+
+ public Formula(String[] par1, Integer[] par2)
+ {
+ this.setAtoms(par1, par2);
+ }
+
+ public Formula(ArrayList<String> par1, ArrayList<Integer> par2)
+ {
+ this.atoms = par1;
+ this.amonts = par2;
+ }
+
+ public void run(String par1)
+ {
+ char[] var2 = par1.toCharArray();
+ String var3 = null;
+ int var4 = 1;
+ Formula var5 = null;
+
+ for (int i = 0; i < var2.length; i++)
+ {
+ if (Character.isLetter(var2[i])){
+ if (Character.isUpperCase(var2[i])){
+ if (var3 != null)
+ {
+ this.setAtom(var3, var4);
+ } else if (var5 != null) {
+ this.setAtoms(var5.getAtoms(), var5.getAmonts(), var4);
+ var5 = null;
+ }
+ var3 = Character.toString(var2[i]);
+ } else {
+ var3 = var3.concat(Character.toString(var2[i]));
+ }
+ } else if (Character.isDigit(var2[i])) {
+ if (var3 != null)
+ {
+ this.setAtom(var3, var4 * Integer.valueOf(Character.toString(var2[i])));
+ } else if (var5 != null) {
+ this.setAtoms(var5.getAtoms(), var5.getAmonts(), Integer.valueOf(Character.toString(var2[i])));
+ var5 = null;
+ } else {
+ var4 = Integer.valueOf(Character.toString(var2[i]));
+ }
+ var3 = null;
+ } else if (var2[i] == '・') {
+ if (var3 != null)
+ {
+ this.setAtom(var3, var4);
+ } else if (var5 != null) {
+ this.setAtoms(var5.getAtoms(), var5.getAmonts(), var4);
+ }
+ var3 = null;
+ var4 = 1;
+ var5 = null;
+ } else if (var2[i] == '(') {
+ if (var3 != null)
+ {
+ this.setAtom(var3, var4);
+ var3 = null;
+ }
+ int var6 = par1.indexOf(')');
+ String var7 = par1.substring(i + 1, var6);
+ var5 = new Formula(var7);
+ i = var6;
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+ if (var3 != null)
+ {
+ this.setAtom(var3, var4);
+ }
+ }
+
+ public boolean isAtom(String par1)
+ {
+ for (String var2:ChemiCraftData.ATOMSLIST){
+ if (par1.equalsIgnoreCase(var2)){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void setAtom(String par1, int par2)
+ {
+ if (isAtom(par1)){
+ int var3 = this.atoms.indexOf(par1);
+ if (var3 == -1){
+ this.atoms.add(par1);
+ this.amonts.add(par2);
+ } else {
+ this.amonts.set(var3, this.amonts.get(var3) + par2);
+ }
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public void setAtom(String par1, char par2)
+ {
+ setAtom(par1, Integer.valueOf(Character.toString(par2)));
+ }
+
+ public void setAtoms(String[] par1, Integer[] par2)
+ {
+ setAtoms(par1, par2, 1);
+ }
+ public void setAtoms(String[] par1, Integer[] par2, int par3)
+ {
+ if (par1.length != par2.length)
+ {
+ throw new IndexOutOfBoundsException();
+ }
+ for (int i = 0; i < par1.length; i++)
+ {
+ this.setAtom(par1[i], par2[i] * par3);
+ }
+ }
+
+ public String[] getAtoms()
+ {
+ return atoms.toArray(new String[atoms.size()]);
+ }
+
+ public Integer[] getAmonts()
+ {
+ return amonts.toArray(new Integer[amonts.size()]);
+ }
+
+}
--- /dev/null
+package pcc.chemicraft.util;
+
+import net.minecraft.item.Item;
+
+public class OldItem extends Item
+{
+
+ public OldItem(int par1)
+ {
+ super(par1);
+ }
+
+}
--- /dev/null
+package pcc.chemicraft.util;
+
+import net.minecraft.item.ItemFood;
+
+public class OldItemFood extends ItemFood
+{
+
+ public OldItemFood(int par1, int par2, float par3, boolean par4)
+ {
+ super(par1, par2, par3, par4);
+ }
+
+ public OldItemFood(int par1, int par2, boolean par3)
+ {
+ super(par1, par2, par3);
+ }
+
+}