From: ponkotate Date: Tue, 26 Mar 2013 04:43:05 +0000 (+0900) Subject: 修正・変更 X-Git-Url: http://git.sourceforge.jp/view?p=chemicraft%2Fchemicraft.git;a=commitdiff_plain;h=ba6d39ec00e47503863833ea41920bb7d0484089 修正・変更 ・鉱石の仕様変更 ・Formulaクラスを作成 ・1.5移行用クラスOldItem,OldItemFoodを作成 --- diff --git a/common/pcc/chemicraft/ChemiCraft.java b/common/pcc/chemicraft/ChemiCraft.java index c682bc3..520bf80 100644 --- a/common/pcc/chemicraft/ChemiCraft.java +++ b/common/pcc/chemicraft/ChemiCraft.java @@ -19,8 +19,6 @@ import pcc.chemicraft.util.Auxiliary; 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; @@ -95,6 +93,8 @@ public class ChemiCraft implements Runnable { public int dustID; public int radiationGunID; public int radiationBalletID; + public int blackSmokeID; + public int pearID; /** * the BlockID. @@ -138,6 +138,8 @@ public class ChemiCraft implements Runnable { public Item itemDust; public Item itemRadiationGun; public Item itemRadiationBallet; + public Item itemBlackSmoke; + public Item itemPear; /** * this is Textures Path on ChemiCraft. @@ -192,11 +194,6 @@ public class ChemiCraft implements Runnable { public ChemiCraftRegisterCompoundsHandler registerCompoundsHandler; public ChemiCraftRegisterEntitys registerEntitys; - /** - * Sin Visualizer Instance. - */ - public SinVisualizer sinVisualizer; - public ChemiCraft() { this.registerBlock = new ChemiCraftRegisterBlock(this); this.registerItem = new ChemiCraftRegisterItem(this); @@ -243,6 +240,7 @@ public class ChemiCraft implements Runnable { 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); @@ -426,10 +424,4 @@ public class ChemiCraft implements Runnable { } - - - public SinVisualizer getSinVisualizer() { - return this.sinVisualizer; - } - } diff --git a/common/pcc/chemicraft/ChemiCraftAPI.java b/common/pcc/chemicraft/ChemiCraftAPI.java index 53ece56..cdc08e7 100644 --- a/common/pcc/chemicraft/ChemiCraftAPI.java +++ b/common/pcc/chemicraft/ChemiCraftAPI.java @@ -2,6 +2,7 @@ package pcc.chemicraft; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -11,6 +12,8 @@ import pcc.chemicraft.system.ChemiCraftCraftingManager; 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; @@ -167,95 +170,38 @@ public class ChemiCraftAPI { /** - * 鉱石を追加します - * @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() + ); } @@ -306,14 +252,36 @@ public class ChemiCraftAPI { + 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); } @@ -390,6 +358,17 @@ public class ChemiCraftAPI { + public void addPyrolysisDecompositionRecipe(ArrayList 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]; @@ -407,6 +386,17 @@ public class ChemiCraftAPI { + public void addElectrolysisDecompositionRecipe(ArrayList material, Integer[] integers, Integer[] integers2) { + for (ItemStack item : material) + { + if (item != null){ + addElectrolysisDecompositionRecipe(item, integers, integers2); + } + } + } + + + /** * 素材作成台のレシピを追加します * @param materials 素材 diff --git a/common/pcc/chemicraft/ChemiCraftRegisterChemicalRecipe.java b/common/pcc/chemicraft/ChemiCraftRegisterChemicalRecipe.java index 9ccaab2..dd6c9a2 100644 --- a/common/pcc/chemicraft/ChemiCraftRegisterChemicalRecipe.java +++ b/common/pcc/chemicraft/ChemiCraftRegisterChemicalRecipe.java @@ -2,16 +2,21 @@ package pcc.chemicraft; 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() + { // 元素入手手段 // æ°´ç´  @@ -23,10 +28,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // リチウム 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"); @@ -34,10 +37,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // ベリリウム 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"); @@ -45,10 +46,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // ホウ素 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"); @@ -62,10 +61,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // フッ素 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"); @@ -73,10 +70,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // ナトリウム 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"); @@ -84,10 +79,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // マグネシウム 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"); @@ -95,10 +88,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // アルミニウム 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"); @@ -109,10 +100,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // リン 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"); @@ -120,10 +109,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // 硫黄 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"); @@ -131,10 +118,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // カリウム 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"); @@ -142,10 +127,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // カルシウム 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"); @@ -153,10 +136,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // スカンジウム 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"); @@ -164,10 +145,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // チタン 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"); @@ -175,10 +154,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // バナジウム 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"); @@ -186,10 +163,8 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // クロム 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 @@ -197,27 +172,82 @@ public class ChemiCraftRegisterChemicalRecipe extends ChemiCraftRegister { // マンガン 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 + } } diff --git a/common/pcc/chemicraft/ChemiCraftRegisterItem.java b/common/pcc/chemicraft/ChemiCraftRegisterItem.java index 427b7ea..7fda75c 100644 --- a/common/pcc/chemicraft/ChemiCraftRegisterItem.java +++ b/common/pcc/chemicraft/ChemiCraftRegisterItem.java @@ -1,13 +1,17 @@ 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 { @@ -25,9 +29,15 @@ 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に登録 @@ -44,6 +54,10 @@ public class ChemiCraftRegisterItem extends ChemiCraftRegister { 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", "梨"); } } diff --git a/common/pcc/chemicraft/ChemiCraftRegisterRecipe.java b/common/pcc/chemicraft/ChemiCraftRegisterRecipe.java index fbe4d65..5f27d44 100644 --- a/common/pcc/chemicraft/ChemiCraftRegisterRecipe.java +++ b/common/pcc/chemicraft/ChemiCraftRegisterRecipe.java @@ -3,6 +3,7 @@ package pcc.chemicraft; 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; @@ -57,9 +58,21 @@ public class ChemiCraftRegisterRecipe extends ChemiCraftRegister { /* * 化合物のレシピ */ - 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")); /* * 素材制作代のレシピ @@ -96,6 +109,21 @@ public class ChemiCraftRegisterRecipe extends ChemiCraftRegister { 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 + ); + /* * 熱分解台のレシピ */ diff --git a/common/pcc/chemicraft/entity/EntityBlackSmoke.java b/common/pcc/chemicraft/entity/EntityBlackSmoke.java new file mode 100644 index 0000000..131bec8 --- /dev/null +++ b/common/pcc/chemicraft/entity/EntityBlackSmoke.java @@ -0,0 +1,79 @@ +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 invisibilityMobsMap = new HashMap(); + + 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)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 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) + { + + } + +} diff --git a/common/pcc/chemicraft/entity/EntityDust.java b/common/pcc/chemicraft/entity/EntityDust.java index b92c7c5..2a05e0c 100644 --- a/common/pcc/chemicraft/entity/EntityDust.java +++ b/common/pcc/chemicraft/entity/EntityDust.java @@ -35,7 +35,9 @@ public class EntityDust extends Entity { 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(); @@ -85,7 +87,7 @@ public class EntityDust extends Entity { } - 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++) { @@ -96,7 +98,9 @@ public class EntityDust extends Entity { 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); + } } } } diff --git a/common/pcc/chemicraft/gen/EnumOreSpawnFrequency.java b/common/pcc/chemicraft/gen/EnumOreSpawnFrequency.java index ae99dbd..12a4ae7 100644 --- a/common/pcc/chemicraft/gen/EnumOreSpawnFrequency.java +++ b/common/pcc/chemicraft/gen/EnumOreSpawnFrequency.java @@ -6,10 +6,15 @@ package pcc.chemicraft.gen; */ 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; /** * 鉱石の生成頻度 @@ -24,9 +29,18 @@ public enum EnumOreSpawnFrequency { /** * @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; } /** diff --git a/common/pcc/chemicraft/item/ItemBlackSmoke.java b/common/pcc/chemicraft/item/ItemBlackSmoke.java new file mode 100644 index 0000000..941b746 --- /dev/null +++ b/common/pcc/chemicraft/item/ItemBlackSmoke.java @@ -0,0 +1,68 @@ +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 invisibilityMobsMap = new HashMap(); + + 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; + } + +} diff --git a/common/pcc/chemicraft/item/ItemRadiationGun.java b/common/pcc/chemicraft/item/ItemRadiationGun.java index 887fd5a..f328093 100644 --- a/common/pcc/chemicraft/item/ItemRadiationGun.java +++ b/common/pcc/chemicraft/item/ItemRadiationGun.java @@ -92,7 +92,7 @@ public class ItemRadiationGun extends Item { private void field_00001(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { - ArrayList collisions = ChemiCraft.instance.mathAuxiliary.getTriangleEntitys(par2World, + ArrayList collisions = ChemiCraft.instance.mathAuxiliary.getTriangleEntitysByPlayer(par2World, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, diff --git a/common/pcc/chemicraft/util/Auxiliary.java b/common/pcc/chemicraft/util/Auxiliary.java index 8e42b4f..d064185 100644 --- a/common/pcc/chemicraft/util/Auxiliary.java +++ b/common/pcc/chemicraft/util/Auxiliary.java @@ -1,24 +1,11 @@ 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; @@ -245,6 +232,43 @@ public class Auxiliary { public static class MathAuxiliary { public static ArrayList getTriangleEntitys(World par1World, + double par2, double par3, double par4, + double yaw, + double pitch, + double angle, + double rad) { + + ArrayList entitys = (ArrayList) par1World.loadedEntityList; + ArrayList result = new ArrayList(); + for (int i = 0; i < entitys.size(); i++) { + String a = ""; + Entity entity = entitys.get(i); + double x = entity.posX; + double y = entity.posY; + double z = entity.posZ; + double bx = par2; + double by = par3; + double bz = par4; + double playerToEntityAngleXZ = Math.sin(Math.atan2(bx - x, bz - z)) * 180; + double playerToEntityAngleY = Math.toDegrees(Math.atan(y - by)); + double length = + Math.sqrt( + Math.pow(Math.abs(bx - x), 2) + + Math.pow(Math.abs(by - y), 2) + + Math.pow(Math.abs(bz - z), 2)); + + if (playerToEntityAngleXZ + angle/2 > playerToEntityAngleXZ && playerToEntityAngleXZ - angle/2 < playerToEntityAngleXZ) { + if (length < rad) { + result.add(entity); + } + } + + } + + return result; + } + + public static ArrayList getTriangleEntitysByPlayer(World par1World, double par2, double par3, double par4, double yaw, double pitch, diff --git a/common/pcc/chemicraft/util/Formula.java b/common/pcc/chemicraft/util/Formula.java new file mode 100644 index 0000000..f9e75b5 --- /dev/null +++ b/common/pcc/chemicraft/util/Formula.java @@ -0,0 +1,149 @@ +package pcc.chemicraft.util; + +import java.util.ArrayList; +import java.util.List; + +import pcc.chemicraft.ChemiCraftData; + +public class Formula +{ + + private ArrayList atoms = new ArrayList(); + private ArrayList amonts = new ArrayList(); + + public Formula(String par1) + { + this.run(par1); + } + + public Formula(String[] par1, Integer[] par2) + { + this.setAtoms(par1, par2); + } + + public Formula(ArrayList par1, ArrayList 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()]); + } + +} diff --git a/common/pcc/chemicraft/util/OldItem.java b/common/pcc/chemicraft/util/OldItem.java new file mode 100644 index 0000000..3090a22 --- /dev/null +++ b/common/pcc/chemicraft/util/OldItem.java @@ -0,0 +1,13 @@ +package pcc.chemicraft.util; + +import net.minecraft.item.Item; + +public class OldItem extends Item +{ + + public OldItem(int par1) + { + super(par1); + } + +} diff --git a/common/pcc/chemicraft/util/OldItemFood.java b/common/pcc/chemicraft/util/OldItemFood.java new file mode 100644 index 0000000..bc6e221 --- /dev/null +++ b/common/pcc/chemicraft/util/OldItemFood.java @@ -0,0 +1,18 @@ +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); + } + +} diff --git a/resources/pcc/chemicraft/items/items.png b/resources/pcc/chemicraft/items/items.png index 5be4625..4e49d67 100644 Binary files a/resources/pcc/chemicraft/items/items.png and b/resources/pcc/chemicraft/items/items.png differ