OSDN Git Service

Merge branch 'master' of https://scm.sourceforge.jp/gitroot/chemicraft/chemicraft
authorponkotate <ponkotate@users.sourceforge.jp>
Sat, 23 Feb 2013 09:03:21 +0000 (18:03 +0900)
committerponkotate <ponkotate@users.sourceforge.jp>
Sat, 23 Feb 2013 09:03:21 +0000 (18:03 +0900)
Conflicts:
common/pcc/chemicraft/ChemiCraft.java

16 files changed:
common/pcc/chemicraft/ChemiCraft.java
common/pcc/chemicraft/ChemiCraftAPI.java
common/pcc/chemicraft/ChemiCraftData.java
common/pcc/chemicraft/container/ContainerElectrolysisTable.java
common/pcc/chemicraft/creativetab/CreativeTabAtomOres.java [moved from common/pcc/chemicraft/creativetab/CreativeTabAtomsOre.java with 72% similarity]
common/pcc/chemicraft/inventory/InventoryElectrolysisTableFuel.java [deleted file]
common/pcc/chemicraft/inventory/InventoryElectrolysisTableMaterial.java [deleted file]
common/pcc/chemicraft/inventory/InventoryElectrolysisTableResult.java [deleted file]
common/pcc/chemicraft/item/ItemChemiCell.java [new file with mode: 0644]
common/pcc/chemicraft/ore/BlockAtomOres.java [moved from common/pcc/chemicraft/ore/BlockAtomsOre.java with 88% similarity]
common/pcc/chemicraft/ore/ItemAtomOres.java [moved from common/pcc/chemicraft/ore/ItemAtomsOre.java with 70% similarity]
common/pcc/chemicraft/system/PacketHandler.java
common/pcc/chemicraft/tileentity/TileEntityElectrolysisTable.java
common/pcc/chemicraft/tileentity/TileEntityPyrolysisTable.java
resources/pcc/chemicraft/blocks/AtomsOre.png
resources/pcc/chemicraft/guis/Electrolysis.png [moved from resources/pcc/chemicraft/guis/ElectrolysisTable.png with 100% similarity]

index 74c399f..b8f54cc 100644 (file)
@@ -15,18 +15,18 @@ import pcc.chemicraft.block.BlockPyrolysisTable;
 import pcc.chemicraft.block.BlockToolAndWeaponCraftingTable;
 import pcc.chemicraft.compounds.CompoundDebug;
 import pcc.chemicraft.compounds.CompoundWater;
-import pcc.chemicraft.creativetab.CreativeTabAtomsOre;
+import pcc.chemicraft.creativetab.CreativeTabAtomOres;
 import pcc.chemicraft.creativetab.CreativeTabChemiCraft;
 import pcc.chemicraft.debug.CommandDeleteItem;
 import pcc.chemicraft.debug.CommandGenDebugRoom;
 import pcc.chemicraft.debug.CommandSetTile;
-import pcc.chemicraft.gen.WorldGenAtomsOre;
 import pcc.chemicraft.item.ItemAtoms;
 import pcc.chemicraft.item.ItemAtomsGrenade;
+import pcc.chemicraft.item.ItemChemiCell;
 import pcc.chemicraft.item.ItemCompounds;
 import pcc.chemicraft.item.ItemGasCollectingBottle;
-import pcc.chemicraft.ore.BlockAtomsOre;
-import pcc.chemicraft.ore.ItemAtomsOre;
+import pcc.chemicraft.ore.BlockAtomOres;
+import pcc.chemicraft.ore.ItemAtomOres;
 import pcc.chemicraft.system.CommonProxy;
 import pcc.chemicraft.system.PacketHandler;
 import pcc.chemicraft.tileentity.TileEntityChemicalCombinationTable;
@@ -89,7 +89,7 @@ public class ChemiCraft {
         * ChemiCraftのCreativeTab.
         */
        public static final CreativeTabs creativeTabChemiCraft = new CreativeTabChemiCraft("ChemiCraft");
-       public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomsOre("AtomsOre");
+       public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomOres("AtomsOre");
 
        /**
         * ItemID.
@@ -98,6 +98,7 @@ public class ChemiCraft {
        public int compoundsID;
        public int gasCollectingBottleID;
        public int atomGrenadeID;
+       public int chemicalCellsID;
 
        /**
         * BlockID.
@@ -108,8 +109,7 @@ public class ChemiCraft {
        public int toolAndWeaponCraftingTableID;
        public int chemicalCraftingTableID;
 
-
-       public int[] atomsOreID = new int[16];
+       public int[] atomOresID = new int[3];
 
        /**
         * GUIID.
@@ -129,7 +129,7 @@ public class ChemiCraft {
        public Block blockToolAndWeaponCraftingTable;
        public Block blockChemicalCraftingTable;
 
-       public Block[] blockAtomsOre = new Block[atomsOreID.length];
+       public Block[] blockAtomOres = new Block[atomOresID.length];
 
        /**
         * Item型変数.
@@ -138,15 +138,18 @@ public class ChemiCraft {
        public Item itemCompounds;
        public Item itemGasCollectingBottle;
        public Item itemAtomGrenade;
+       public Item itemChemicalCells;
 
        /**
         * このmodで使用するTextureのパス.
         */
        public final String ITEM_ATOMS_TEXTURE = "/pcc/chemicraft/items/Atoms.png";
        public final String ITEM_COMPOUNDS_TEXTURE = "/pcc/chemicraft/items/Compounds.png";
+       public final String ITEM_VEGETABLES_TEXTURE = "/pcc/chemicraft/items/Vegetables.png";
        public final String ITEM_TEXTURE = "/pcc/chemicraft/items/items.png";
        public final String BLOCK_CHEMICAL_CRAFTING_TABLE_TEXTURE = "/pcc/chemicraft/blocks/cctable.png";
        public final String BLOCK_ATOMS_ORE_TEXTURE = "/pcc/chemicraft/blocks/AtomsOre.png";
+       public final String BLOCK_VEGETABLES_TEXTURE = "/pcc/chemicraft/blocks/Vegetables.png";
        public final String GUI_PYROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Pyrolysis.png";
        public final String GUI_ELECTROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Electrolysis.png";
        public final String GUI_CHEMICALCOMBINATION_TEXTURE = "/pcc/chemicraft/guis/ChemicalCombination.png";
@@ -174,15 +177,16 @@ public class ChemiCraft {
                Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2403);
                Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2404);
 
-               Property[] atomsOreIDProp = new Property[this.atomsOreID.length];
-               for (int i = 0; i < atomsOreIDProp.length; i++) {
-                       atomsOreIDProp[i] = cfg.getBlock("AtomsOreID:" + i, 2500 + i);
+               Property[] atomOresIDProp = new Property[this.atomOresID.length];
+               for (int i = 0; i < atomOresIDProp.length; i++) {
+                       atomOresIDProp[i] = cfg.getBlock("AtomsOreID:" + i, 2500 + i);
                }
 
                Property atomsIDProp = cfg.getItem("AtomsID", 25000);
                Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
                Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
                Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
+               Property chemicalCellsIDProp = cfg.getItem("ChemicalCellID", 25004);
 
                Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
                Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
@@ -196,13 +200,16 @@ public class ChemiCraft {
                this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
                this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
                this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
-               for (int i = 0; i < atomsOreID.length; i++) {
-                       this.atomsOreID[i] = atomsOreIDProp[i].getInt();
+               for (int i = 0; i < atomOresID.length; i++) {
+                       this.atomOresID[i] = atomOresIDProp[i].getInt();
                }
+
                this.atomsID = atomsIDProp.getInt();
                this.compoundsID = compoundsIDProp.getInt();
                this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
                this.atomGrenadeID = atomGrenadeIDProp.getInt();
+               this.chemicalCellsID = chemicalCellsIDProp.getInt();
+
                this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();
                this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
                this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
@@ -234,35 +241,35 @@ public class ChemiCraft {
                                setResistance(0.0F).
                                setStepSound(Block.soundStoneFootstep).
                                setBlockName("PyrolysisTable");
-               this.blockElectrolysisTable = new BlockElectrolysisTable(this.electrolysisTableID, 0, Material.ground).
+               this.blockElectrolysisTable = new BlockElectrolysisTable(this.electrolysisTableID, 1, Material.ground).
                                setHardness(2.0F).
                                setResistance(0.0F).
                                setStepSound(Block.soundStoneFootstep).
                                setBlockName("ElectrolysisTable");
-               this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).
+               this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 2, Material.ground).
                                setHardness(2.0F).
                                setResistance(0.0F).
                                setStepSound(Block.soundStoneFootstep).
                                setBlockName("ChemicalCombinationTable");
-               this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).
+               this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 3, Material.ground).
                                setHardness(2.0F).
                                setResistance(0.0F).
                                setStepSound(Block.soundStoneFootstep).
                                setBlockName("ToolAndWeaponCraftingTable");
-               this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(this.chemicalCraftingTableID, 0, Material.ground).
+               this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(this.chemicalCraftingTableID, 4, Material.ground).
                                setHardness(2.0F).
                                setResistance(0.0F).
                                setStepSound(Block.soundStoneFootstep).
                                setBlockName("ChemicalCraftingTable");
 
-               for (int i = 0; i < blockAtomsOre.length; i++)
+               for (int i = 0; i < blockAtomOres.length; i++)
                {
-                       this.blockAtomsOre[i] = new BlockAtomsOre(this.atomsOreID[i]).
+                       this.blockAtomOres[i] = new BlockAtomOres(this.atomOresID[i]).
                                        setHardness(3.0F).
                                        setResistance(0.0F).
                                        setStepSound(Block.soundStoneFootstep).
                                        setBlockName("AtomsOre" + i);
-                       GameRegistry.registerBlock(blockAtomsOre[i], ItemAtomsOre.class, "AtomsOre" + i);
+                       GameRegistry.registerBlock(blockAtomOres[i], ItemAtomOres.class, "AtomsOre" + i);
                }
 
                // Itemを追加します
@@ -270,6 +277,7 @@ public class ChemiCraft {
                this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
                this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
                this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
+               this.itemChemicalCells = new ItemChemiCell(this.chemicalCellsID).setItemName("chemiCell");
 
                // BlockをMinecraftに登録します
                GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");
@@ -296,7 +304,7 @@ public class ChemiCraft {
                this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
                this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
                this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
-               this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
+               this.nameAuxiliary.addName(this.itemAtomGrenade, "ja_JP", "元素手榴弾");
 
                // TileEntityを追加します
                GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");
@@ -345,59 +353,78 @@ public class ChemiCraft {
                        Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
                });
 
+               //電池を追加します
+               api.addChemicalCell(itemChemicalCells, "ChemicalCell", 1000);
+               api.addChemicalCellLanguage("ChemicalCell", "ja_JP", "化学電池");
+
                //鉱石を追加します
 
                // リチウム
-               api.addAtomsOre("Petalite", this.atomsOreID[api.getAtomsOreIndex()], 5, 10, 50); // LiAlSi4O10
-               api.addAtomsOreLanguage("Petalite", "ペタル石", "ja_JP");
-               api.addAtomsOre("Spodumene", this.atomsOreID[api.getAtomsOreIndex()], 5, 15, 50); // LiAlSi2O6
-               api.addAtomsOreLanguage("Spodumene", "リチア輝石", "ja_JP");
+               api.addAtomOres("Petalite", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 4, 10}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi4O10
+               api.addAtomOresLanguage("Petalite", "ペタル石", "ja_JP");
+               api.addAtomOres("Spodumene", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 2, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi2O6
+               api.addAtomOresLanguage("Spodumene", "リチア輝石", "ja_JP");
 
                // ベリリウム
                api.addAtomsOre("Beryl", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Be3Al2Si6O18
                api.addAtomsOreLanguage("Beryl", "緑柱石", "ja_JP");
                api.addAtomsOre("Chrysoberyl", this.atomsOreID[api.getAtomsOreIndex()], 5, 200, 50); // BeAl2O4
                api.addAtomsOreLanguage("Chrysoberyl", "金緑石", "ja_JP");
+               api.addAtomOres("Beryl", new String[]{"Be", "Al", "Si", "O"}, new Integer[]{3, 2, 6, 18}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Be3Al2Si6O18
+               api.addAtomOresLanguage("Beryl", "緑柱石", "ja_JP");
+               api.addAtomOres("Chrysoberyl", new String[]{"Be", "Al", "O"}, new Integer[]{1, 2, 4}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // BeAl2O4
+               api.addAtomOresLanguage("Chrysoberyl", "金緑石", "ja_JP");
 
                // ホウ素
-               api.addAtomsOre("Ulexite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50);   // NaCaB5O6(OH)6・5H2O
-               api.addAtomsOreLanguage("Ulexite", "ウレキサイト", "ja_JP"); // ホウ酸塩鉱石
+               api.addAtomOres("Ulexite", new String[]{"Na", "Ca", "B", "O"}, new Integer[]{1, 1, 5, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50);   // NaCaB5O6(OH)6・5H2O
+               api.addAtomOresLanguage("Ulexite", "ウレキサイト", "ja_JP");
 
                // フッ素
-               api.addAtomsOre("Fluorite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // CaF2
-               api.addAtomsOreLanguage("Fluorite", "蛍石", "ja_JP");
-               api.addAtomsOre("Cryolite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Na3AlF6
-               api.addAtomsOreLanguage("Cryolite", "氷晶石", "ja_JP");
+               api.addAtomOres("Fluorite", new String[]{"Ca", "F"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaF2
+               api.addAtomOresLanguage("Fluorite", "蛍石", "ja_JP");
+               api.addAtomOres("Cryolite", new String[]{"Na", "Al", "F"}, new Integer[]{3, 1, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Na3AlF6
+               api.addAtomOresLanguage("Cryolite", "氷晶石", "ja_JP");
 
                // ナトリウム
-               api.addAtomsOre("RockSalt", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // NaCl
-               api.addAtomsOreLanguage("RockSalt", "岩塩", "ja_JP");
+               api.addAtomOres("RockSalt", new String[]{"Na", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // NaCl
+               api.addAtomOresLanguage("RockSalt", "岩塩", "ja_JP");
 
                // マグネシウム
-               api.addAtomsOre("Dolomite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // CaMg(CO3)2
-               api.addAtomsOreLanguage("Dolomite", "苦灰石", "ja_JP");
-               api.addAtomsOre("Magnesite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // MgCO3
-               api.addAtomsOreLanguage("Magnesite", "菱苦土石", "ja_JP");
+               api.addAtomOres("Dolomite", new String[]{"Ca", "Mg"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaMg(CO3)2
+               api.addAtomOresLanguage("Dolomite", "苦灰石", "ja_JP");
+               api.addAtomOres("Magnesite", new String[]{"Mg", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // MgCO3
+               api.addAtomOresLanguage("Magnesite", "菱苦土石", "ja_JP");
 
                // アルミニウム
-               api.addAtomsOre("Gibbsite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Al(OH)3
-               api.addAtomsOreLanguage("Gibbsite", "ギブス石", "ja_JP");
-               api.addAtomsOre("Ruby", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Al2O3
-               api.addAtomsOreLanguage("Ruby", "ルビー", "ja_JP");
-               api.addAtomsOre("Sapphire", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Al2O3
-               api.addAtomsOreLanguage("Sapphire", "サファイア", "ja_JP");
+               api.addAtomOres("Gibbsite", new String[]{"Al"}, new Integer[]{3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al(OH)3
+               api.addAtomOresLanguage("Gibbsite", "ギブス石", "ja_JP");
+               api.addAtomOres("Ruby", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
+               api.addAtomOresLanguage("Ruby", "ルビー", "ja_JP");
+               api.addAtomOres("Sapphire", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
+               api.addAtomOresLanguage("Sapphire", "サファイア", "ja_JP");
 
                // ケイ素
-               api.addAtomsOre("Quartz", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // SiO2
-               api.addAtomsOreLanguage("Quartz", "石英", "ja_JP");
+               api.addAtomOres("Quartz", new String[]{"Si", "O"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // SiO2
+               api.addAtomOresLanguage("Quartz", "石英", "ja_JP");
 
                // リン
-               api.addAtomsOre("Fluorapatite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Ca5(PO4)3F
-               api.addAtomsOreLanguage("Fluorapatite", "フッ素リン灰石", "ja_JP");
-               api.addAtomsOre("Chlorapatite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Ca5(PO4)3Cl
-               api.addAtomsOreLanguage("Chlorapatite", "塩素燐灰石", "ja_JP");
-               api.addAtomsOre("Hydroxylapatite", this.atomsOreID[api.getAtomsOreIndex()], 5, 20, 50); // Ca5(PO4)3(OH)
-               api.addAtomsOreLanguage("Hydroxylapatite", "水酸燐灰石", "ja_JP");
+               api.addAtomOres("Fluorapatite", new String[]{"Ca"}, new Integer[]{5}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3F
+               api.addAtomOresLanguage("Fluorapatite", "フッ素リン灰石", "ja_JP");
+               api.addAtomOres("Chlorapatite", new String[]{"Ca"}, new Integer[]{5}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3Cl
+               api.addAtomOresLanguage("Chlorapatite", "塩素燐灰石", "ja_JP");
+               api.addAtomOres("Hydroxylapatite", new String[]{"Ca"}, new Integer[]{5}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3(OH)
+               api.addAtomOresLanguage("Hydroxylapatite", "水酸燐灰石", "ja_JP");
+
+               // カリウム
+               api.addAtomOres("Sylvite", new String[]{"K", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // KCl
+               api.addAtomOresLanguage("Sylvite", "カリ岩塩", "ja_JP");
+
+               // カルシウム
+               api.addAtomOres("Calcite", new String[]{"Ca", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaCO3
+               api.addAtomOresLanguage("Calcite", "方解石", "ja_JP");
+
+               // api.addAtomOres("元素名(英)", new String[]{"元素"}, new Integer[]{<数>}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // 化学式
+               // api.addAtomOresLanguage("元素名(英)", "元素名(他国語)", "言語");
 
                //化合物を追加します
                this.api.addCompound("ja_JP", "ChlorousAcid", "亜塩素酸");
@@ -406,17 +433,13 @@ public class ChemiCraft {
                this.api.addCompound("ja_JP", "Water", "水");
                this.api.addCompound("ja_JP", "SodiumChloride", "塩化ナトリウム");
                this.api.addCompound("ja_JP", "SodiumBicarbonate", "重曹");
-               this.api.addCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
-               this.api.addCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
-               this.api.addCompound("ja_JP", "Water", "水");
 
                //化合物のHandlerを設定します
                this.api.settingCompoundHandler("Water", new CompoundWater());
 
                //化合物のレシピを追加します
+               this.api.addChemicalCombinationRecipe(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("SodiumChloride")));
                this.api.addChemicalCombinationRecipe(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("ChlorousAcid")));
-               this.api.addChemicalCombinationRecipe(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("SodiumChloride")));
-               this.api.addChemicalCombinationRecipe(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("ChlorousAcid")));
                this.api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")));
 
                //手榴弾の追加
@@ -436,38 +459,52 @@ public class ChemiCraft {
                                );
 
                this.api.addDecompositionRecipe(new ItemStack(Item.potion, 1, 0),
-                               new int[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
-                               new int[] {2, 1});
+                               new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
+                               new Integer[] {2, 1});
 
                this.api.addDecompositionRecipe(new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")),
-                               new int[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
-                               new int[] {2, 1});
+                               new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
+                               new Integer[] {2, 1});
+
+               for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++){
+                       this.api.addDecompositionRecipe(new ItemStack(this.blockAtomOres[i / 16], 1, i - i / 16 * 16),
+                                       api.getAtomOresAtoms().get(api.getAtomOresName().getKeyList(i)),
+                                       api.getAtomOresAmounts().get(api.getAtomOresName().getKeyList(i)));
+               }
 
                this.api.addDecompositionFuel(new ItemStack(Item.coal), 2000*8);
        }
 
        private void apiProcessing(final FMLPostInitializationEvent event) {
                // API用の処理
-               for (int i = 0; i < api.getCompoundsName().sizeKeysList(); i++)
+               for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++)
                {
-                       for (int j = 0; j < api.getCompoundsName().sizeElementsList(api.getCompoundsName().getKeyList(i)); j++)
+                       for (int j = 0; j < api.getAtomOresName().sizeElementsList(api.getAtomOresName().getKeyList(i)); j++)
                        {
-                               this.nameAuxiliary.addName(new ItemStack(itemCompounds, 0, i), api.getCompoundsLang().get(api.getCompoundsName().getKeyList(i), j), api.getCompoundsName().get(api.getCompoundsName().getKeyList(i), j));
+                               this.nameAuxiliary.addName(new ItemStack(blockAtomOres[i / 16], 0, i - i / 16 * 16), api.getAtomOresLanguage().get(api.getAtomOresName().getKeyList(i), j), api.getAtomOresName().get(api.getAtomOresName().getKeyList(i), j));
+                               OreDictionary.registerOre("ore" + api.getAtomOresName().getKeyList(i), new ItemStack(blockAtomOres[i / 16], 1, i - i / 16 * 16));
                        }
                }
 
-               for (int i = 0; i < api.getAtomsOreNameListHash().sizeKeysList(); i++)
+               for (int i = 0; i < api.getAtomOres().size(); i++)
+               {
+                       GameRegistry.registerWorldGenerator(api.getAtomOres().get(i));
+               }
+
+               for (int i = 0; i < api.getChemicalCellsName().sizeKeysList(); i++)
                {
-                       for (int j = 0; j < api.getAtomsOreNameListHash().sizeElementsList(api.getAtomsOreNameListHash().getKeyList(i)); j++)
+                       for (int j = 0; j < api.getChemicalCellsName().sizeElementsList(api.getChemicalCellsName().getKeyList(i)); j++)
                        {
-                               this.nameAuxiliary.addName(new ItemStack(blockAtomsOre[i / 16], 0, i - i / 16 * 16), api.getAtomsOreLangListHash().get(api.getAtomsOreNameListHash().getKeyList(i), j), api.getAtomsOreNameListHash().get(api.getAtomsOreNameListHash().getKeyList(i), j));
-                               OreDictionary.registerOre("ore" + api.getAtomsOreNameListHash().getKeyList(i), new ItemStack(blockAtomsOre[i / 16], 1, i - i / 16 * 16));
+                               this.nameAuxiliary.addName(new ItemStack(itemChemicalCells, 0, i), api.getChemicalCellsLanguage().get(api.getChemicalCellsName().getKeyList(i), j), api.getChemicalCellsName().get(api.getChemicalCellsName().getKeyList(i), j));
                        }
                }
 
-               for (int i = 0; i < api.getAtomsOres().size(); i++)
+               for (int i = 0; i < api.getCompoundsName().sizeKeysList(); i++)
                {
-                       GameRegistry.registerWorldGenerator(api.getAtomsOres().get(i));
+                       for (int j = 0; j < api.getCompoundsName().sizeElementsList(api.getCompoundsName().getKeyList(i)); j++)
+                       {
+                               this.nameAuxiliary.addName(new ItemStack(itemCompounds, 0, i), api.getCompoundsLang().get(api.getCompoundsName().getKeyList(i), j), api.getCompoundsName().get(api.getCompoundsName().getKeyList(i), j));
+                       }
                }
 
        }
index c21ba87..821bb97 100644 (file)
@@ -3,6 +3,7 @@ package pcc.chemicraft;
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import pcc.chemicraft.gen.WorldGenAtomsOre;
 import pcc.chemicraft.system.ChemiCraftCraftingManager;
@@ -27,40 +28,56 @@ public class ChemiCraftAPI {
        private static ChemiCraftAPI instance = new ChemiCraftAPI();
 
 
+       public static ChemiCraftAPI instance(){
+               return instance;
+       }
+
+
        /**
-        * List of compounds names.
+        * 鉱石別元素数リスト
         */
-       private ListHash<String, String> compoundsNameListHash = new ListHash<String, String>();
+       private HashMap<String, Integer[]> atomOresAmountsHash = new HashMap<String, Integer[]>();
 
 
        /**
-        * List of compounds the language names.
+        * 鉱石別元素リスト
         */
-       private ListHash<String, String> compoundsLangListHash = new ListHash<String, String>();
+       private HashMap<String, Integer[]> atomOresAtomsHash = new HashMap<String, Integer[]>();
 
 
        /**
-        * List of compounds handlers.
+        * 鉱石の言語リスト
         */
-       private ArrayList<ICompoundHandler> compoundHandlers = new ArrayList<ICompoundHandler>();
+       private ListHash<String, String> atomOresLangListHash = new ListHash<String, String>();
 
 
        /**
-        * 化合物の文字列をダメージ値に変換します。
+        * 鉱石リスト
         */
-       private HashMap<String, Integer> compoundHash = new HashMap<String, Integer>();
+       private ArrayList<WorldGenAtomsOre> atomOresList = new ArrayList<WorldGenAtomsOre>();
 
 
        /**
-        * List of item name of handler to compounds.
+        * 鉱石名リスト
         */
-       private ArrayList<String> compoundHandlerItemNames = new ArrayList<String>();
+       private ListHash<String, String> atomOresNameListHash = new ListHash<String, String>();
+
 
 
        /**
-        * 化合台の原子の種類のリスト
+        * 電池言語リスト
         */
-       private ArrayList<String[]> chemicalCombinationAtoms = new ArrayList<String[]>();
+       private ListHash<String, String> chemicalCellsLangListHash = new ListHash<String, String>();
+
+
+       /**
+        * 電池名リスト
+        */
+       private ListHash<String, String> chemicalCellsNameListHash = new ListHash<String, String>();
+
+
+       private HashMap<ItemStack, Integer> chemicalCellsFuelList = new HashMap<ItemStack, Integer>();
+
 
 
        /**
@@ -70,15 +87,15 @@ public class ChemiCraftAPI {
 
 
        /**
-        * 化合台の結果のリスト
+        * 化合台の原子の種類のリスト
         */
-       private ArrayList<ItemStack> chemicalCombinationResult = new ArrayList<ItemStack>();
+       private ArrayList<String[]> chemicalCombinationAtoms = new ArrayList<String[]>();
 
 
        /**
-        * 素材製作台のレシピクラス
+        * 化合台の結果のリスト
         */
-       private ArrayList<MaterialRecipe> materialRecipe = new ArrayList<MaterialRecipe>();
+       private ArrayList<ItemStack> chemicalCombinationResult = new ArrayList<ItemStack>();
 
 
        /**
@@ -87,25 +104,42 @@ public class ChemiCraftAPI {
        private ChemiCraftCraftingManager chemiCraftCraftingManager = new ChemiCraftCraftingManager();
 
 
+       /**
+        * List of item name of handler to compounds.
+        */
+       private ArrayList<String> compoundHandlerItemNames = new ArrayList<String>();
+
 
        /**
-        * 鉱石名リスト
+        * List of compounds handlers.
         */
-       private ListHash<String, String> atomsOreNameListHash = new ListHash<String, String>();
+       private ArrayList<ICompoundHandler> compoundHandlers = new ArrayList<ICompoundHandler>();
 
 
        /**
-        * 鉱石の言語リスト
+        * 化合物の文字列をダメージ値に変換します。
         */
-       private ListHash<String, String> atomsOreLangListHash = new ListHash<String, String>();
+       private HashMap<String, Integer> compoundHash = new HashMap<String, Integer>();
 
 
        /**
-        * 鉱石リスト
+        * List of compounds the language names.
         */
-       private ArrayList<WorldGenAtomsOre> atomsOres = new ArrayList<WorldGenAtomsOre>();
+       private ListHash<String, String> compoundsLangListHash = new ListHash<String, String>();
 
 
+       /**
+        * List of compounds names.
+        */
+       private ListHash<String, String> compoundsNameListHash = new ListHash<String, String>();
+
+
+
+       /**
+        * 素材製作台のレシピクラス
+        */
+       private ArrayList<MaterialRecipe> materialRecipe = new ArrayList<MaterialRecipe>();
+
 
        /**
         * ツール&武器作成台の素材一覧のリスト
@@ -119,6 +153,7 @@ public class ChemiCraftAPI {
        private ArrayList<ItemStack> toolAndWeaponResult = new ArrayList<ItemStack>();
 
 
+
        /**
         * ツール&武器作成台の不定形であるか
         */
@@ -127,55 +162,62 @@ public class ChemiCraftAPI {
 
 
        /**
-        * add compound.
-        * @param name compound name.
+        * 鉱石を追加します
+        * @param par1Name 鉱石名
+        * @param par2Atoms 元素
+        * @param par3Amounts 元素数
+        * @param par4Id ID
+        * @param par5Size 量
+        * @param par6Frequency 頻度
+        * @param par7PosY Y座標
         */
-       public void addCompound(String name){
-               compoundsNameListHash.add(name, name);
-               compoundsLangListHash.add(name, "en_US");
-               compoundHash.put(name, compoundHash.size());
+       public void addAtomOres(String par1Name, Integer[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, int par6Frequency, int par7PosY){
+               atomOresList.add(new WorldGenAtomsOre(par4Id, getAtomOresMetaOfLastIndex(), par5Size, par6Frequency, par7PosY));
+               atomOresAtomsHash.put(par1Name, par2Atoms);
+               atomOresAmountsHash.put(par1Name, par3Amounts);
+               addAtomOresLanguage(par1Name, par1Name, "en_US");
        }
 
 
 
-       /**
-        * add compound corresponding to the language.
-        * @param lang Language to the corresponding
-        * @param englishName compound name
-        * @param langName compound name(specified language)
-        */
-       public void addCompound(String lang, String englishName, String langName){
-               addCompound(englishName);
-               addCompoundLanguage(lang, englishName, langName);
+       public void addAtomOres(String par1Name, String[] par2Atoms, Integer[] par3Amounts, int par4Id, int par5Size, int par6Frequency, int par7PosY){
+               addAtomOres(par1Name, ChemiCraftData.toAtoms(par2Atoms), par3Amounts, par7PosY, par7PosY, par7PosY, par7PosY);
        }
 
 
 
-       public void addCompoundLanguage(String lang, String englishName, String langName){
-               compoundsNameListHash.add(englishName, langName);
-               compoundsLangListHash.add(englishName, lang);
+       /**
+        * 既に登録した鉱石の新しい名前・言語を追加します
+        * @param par1Name 英語名
+        * @param par2NewName 新しい名前
+        * @param par3Language 言語
+        */
+       public void addAtomOresLanguage(String par1Name, String par2NewName, String par3Language){
+               atomOresNameListHash.add(par1Name, par2NewName);
+               atomOresLangListHash.add(par1Name, par3Language);
        }
 
 
 
-       public int getCompound(String key){
-               if(compoundHash.get(key) != null){
-                       return compoundHash.get(key);
-               } else {
-                       return -1;
-               }
+       /**
+        * 電池を追加します
+        * @param par1Name
+        */
+       public void addChemicalCell(Item par1ChemicalCell, String par2Name, int par3OperationTime){
+               chemicalCellsFuelList.put(new ItemStack(par1ChemicalCell, 0, chemicalCellsNameListHash.sizeKeysList()), par3OperationTime);
+               addChemicalCellLanguage(par2Name, "en_US", par2Name);
        }
 
 
-
        /**
-        * setting compound handler.
-        * @param handlerItemName
-        * @param compoundHandler
+        * 既に登録した電池の新しい名前・言語を追加します
+        * @param par1Name 英語名
+        * @param par2NewName 新しい名前
+        * @param par3Language 言語
         */
-       public void settingCompoundHandler(String handlerItemName, ICompoundHandler compoundHandler){
-               compoundHandlers.add(compoundHandler);
-               compoundHandlerItemNames.add(handlerItemName);
+       public void addChemicalCellLanguage(String par1Name, String par3NewLanguage, String par2NewName){
+               chemicalCellsNameListHash.add(par1Name, par2NewName);
+               chemicalCellsLangListHash.add(par1Name, par3NewLanguage);
        }
 
 
@@ -194,17 +236,33 @@ public class ChemiCraftAPI {
 
 
        /**
-        * 分解台のレシピを追加します
-        * @param material 素材
-        * @param results 原子の元素番号の配列
-        * @param stacks 原子のできる数の配列
+        * add compound.
+        * @param name compound name.
         */
-       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.itemAtoms,stacks[i], results[i]);
-               }
-               TileEntityPyrolysisTable.addRecipe(material, itemstacks);
+       public void addCompound(String name){
+               compoundsNameListHash.add(name, name);
+               compoundsLangListHash.add(name, "en_US");
+               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)
+        */
+       public void addCompound(String lang, String englishName, String langName){
+               addCompound(englishName);
+               addCompoundLanguage(lang, englishName, langName);
+       }
+
+
+
+       public void addCompoundLanguage(String lang, String englishName, String langName){
+               compoundsNameListHash.add(englishName, langName);
+               compoundsLangListHash.add(englishName, lang);
        }
 
 
@@ -219,28 +277,30 @@ public class ChemiCraftAPI {
        }
 
 
-
        /**
-        * ツール&武器作成台のレシピを追加します
-        * @param materials 素材
-        * @param result 結果
+        * 分解台のレシピを追加します
+        * @param material 素材
+        * @param integers 原子の元素番号の配列
+        * @param integers2 原子のできる数の配列
         */
-       public void addToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
-               toolAndWeaponMaterials.add(materials);
-               toolAndWeaponResult.add(result);
-               toolAndWeaponSharpless.add(false);
+       public void addDecompositionRecipe(ItemStack material, Integer[] integers, Integer[] integers2) {
+               ItemStack[] itemstacks = new ItemStack[integers.length];
+               for (int i = 0; i < itemstacks.length; i++) {
+                       itemstacks[i] = new ItemStack(ChemiCraft.instance.itemAtoms,integers2[i], integers[i]);
+               }
+               TileEntityPyrolysisTable.addRecipe(material, itemstacks);
        }
 
 
+
        /**
-        * ツール&武器作成台の不定形レシピを追加します
+        * 素材作成台のレシピを追加します
         * @param materials 素材
         * @param result 結果
+        * @param nbtRecipe NBT(Nullの場合はなし)
         */
-       public void addSharplessToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
-               toolAndWeaponMaterials.add(materials);
-               toolAndWeaponResult.add(result);
-               toolAndWeaponSharpless.add(true);
+       public void addMaterialRecipe(ItemStack[] materials, ItemStack result, ChemicalNBTRecipe nbtRecipe){
+               materialRecipe.add(new MaterialRecipe(result, materials, nbtRecipe, false));
        }
 
 
@@ -258,73 +318,86 @@ public class ChemiCraftAPI {
 
 
        /**
-        * 素材作成台のレシピを追加します
+        * ツール&武器作成台の不定形レシピを追加します
         * @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 addSharplessToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+               toolAndWeaponMaterials.add(materials);
+               toolAndWeaponResult.add(result);
+               toolAndWeaponSharpless.add(true);
        }
 
 
-
        /**
-        * 鉱石を追加します
-        * @param name 鉱石名
-        * @param size 一度に生成される量
-        * @param frequency 生成頻度
-        * @param posY Y座標
+        * ツール&武器作成台のレシピを追加します
+        * @param materials 素材
+        * @param result 結果
         */
-       public void addAtomsOre(String par1Name, int par2Id, int par3Size, int par4Frequency, int par5PosY){
-               atomsOres.add(new WorldGenAtomsOre(par2Id, getAtomsOreMetaOfIndex(), par3Size, par4Frequency, par5PosY));
-               addAtomsOreLanguage(par1Name, par1Name, "en_US");
+       public void addToolAndWeaponRecipe(ItemStack[] materials, ItemStack result) {
+               toolAndWeaponMaterials.add(materials);
+               toolAndWeaponResult.add(result);
+               toolAndWeaponSharpless.add(false);
        }
 
 
-       /**
-        * 既に登録した鉱石の新しい名前・言語を追加します
-        * @param par1Name 英語名
-        * @param par2NewName 新しい名前
-        * @param par3Language 言語
-        */
-       public void addAtomsOreLanguage(String par1Name, String par2NewName, String par3Language){
-               atomsOreNameListHash.add(par1Name, par2NewName);
-               atomsOreLangListHash.add(par1Name, par3Language);
+       public ArrayList<WorldGenAtomsOre> getAtomOres(){
+               return atomOresList;
        }
 
        
        //以下システム関連//////////////////////////////////////////////////////
 
-       public ArrayList<ICompoundHandler> getCompoundHandler(){
-               compoundHandlers.trimToSize();
-               return compoundHandlers;
+       public HashMap<String, Integer[]> getAtomOresAmounts(){
+               return atomOresAmountsHash;
+       }
+
+
 
+       public HashMap<String, Integer[]> getAtomOresAtoms(){
+               return atomOresAtomsHash;
        }
 
 
 
-       public ArrayList<String> getCompoundHandlerItemName(){
-               compoundHandlerItemNames.trimToSize();
-               return compoundHandlerItemNames;
+       public ListHash<String, String> getAtomOresLanguage(){
+               return atomOresLangListHash;
        }
 
 
 
-       public ListHash<String, String> getCompoundsName(){
-               return compoundsNameListHash;
+       public int getAtomOresLastIndex(){
+               return atomOresNameListHash.sizeKeysList() / 16;
        }
 
 
 
-       public ListHash<String, String> getCompoundsLang(){
-               return compoundsLangListHash;
+       public int getAtomOresMetaOfLastIndex(){
+               return atomOresNameListHash.sizeKeysList() - getAtomOresLastIndex() * 16;
        }
 
 
 
-       public ArrayList<String[]> getChemicalCombinationAtoms(){
-               return chemicalCombinationAtoms;
+       public ListHash<String, String> getAtomOresName(){
+               return atomOresNameListHash;
+       }
+
+
+
+       public HashMap<ItemStack, Integer> getChemicalCellsFuelList(){
+               return chemicalCellsFuelList;
+       }
+
+
+
+       public ListHash<String, String> getChemicalCellsLanguage(){
+               return chemicalCellsLangListHash;
+       }
+
+
+
+       public ListHash<String, String> getChemicalCellsName(){
+               return chemicalCellsNameListHash;
        }
 
 
@@ -335,74 +408,93 @@ public class ChemiCraftAPI {
 
 
 
+       public ArrayList<String[]> getChemicalCombinationAtoms(){
+               return chemicalCombinationAtoms;
+       }
+
+
+
        public ArrayList<ItemStack> getChemicalCombinationResult(){
                return chemicalCombinationResult;
        }
 
 
 
-       public ArrayList<MaterialRecipe> getMaterialRecipe(){
-               return materialRecipe;
+       public int getCompound(String key){
+               if(compoundHash.get(key) != null){
+                       return compoundHash.get(key);
+               } else {
+                       return -1;
+               }
        }
 
 
 
-       public ArrayList<ItemStack[]> getToolAndWeaponMaterials() {
-               return toolAndWeaponMaterials;
+       public ArrayList<ICompoundHandler> getCompoundHandler(){
+               compoundHandlers.trimToSize();
+               return compoundHandlers;
+
        }
 
 
 
-       public ArrayList<ItemStack> getToolAndWeaponResult() {
-               return toolAndWeaponResult;
+       public ArrayList<String> getCompoundHandlerItemName(){
+               compoundHandlerItemNames.trimToSize();
+               return compoundHandlerItemNames;
        }
 
 
 
-       public ArrayList<Boolean> getToolAndWeaponSharpless() {
-               return toolAndWeaponSharpless;
+       public ListHash<String, String> getCompoundsLang(){
+               return compoundsLangListHash;
        }
 
 
 
-       public ChemiCraftCraftingManager getCraftingManager(){
-               return chemiCraftCraftingManager;
+       public ListHash<String, String> getCompoundsName(){
+               return compoundsNameListHash;
        }
 
 
 
-       public ListHash<String, String> getAtomsOreNameListHash(){
-               return atomsOreNameListHash;
+       public ChemiCraftCraftingManager getCraftingManager(){
+               return chemiCraftCraftingManager;
        }
 
 
 
-       public ListHash<String, String> getAtomsOreLangListHash(){
-               return atomsOreLangListHash;
+       public ArrayList<MaterialRecipe> getMaterialRecipe(){
+               return materialRecipe;
        }
 
 
 
-       public int getAtomsOreIndex(){
-               return atomsOreNameListHash.sizeKeysList() / 16;
+       public ArrayList<ItemStack[]> getToolAndWeaponMaterials() {
+               return toolAndWeaponMaterials;
        }
 
 
 
-       public int getAtomsOreMetaOfIndex(){
-               return atomsOreNameListHash.sizeKeysList() - getAtomsOreIndex() * 16;
+       public ArrayList<ItemStack> getToolAndWeaponResult() {
+               return toolAndWeaponResult;
        }
 
 
 
-       public ArrayList<WorldGenAtomsOre> getAtomsOres(){
-               return atomsOres;
+       public ArrayList<Boolean> getToolAndWeaponSharpless() {
+               return toolAndWeaponSharpless;
        }
 
 
 
-       public static ChemiCraftAPI instance(){
-               return instance;
+       /**
+        * setting compound handler.
+        * @param handlerItemName
+        * @param compoundHandler
+        */
+       public void settingCompoundHandler(String handlerItemName, ICompoundHandler compoundHandler){
+               compoundHandlers.add(compoundHandler);
+               compoundHandlerItemNames.add(handlerItemName);
        }
 
 }
index 2601196..9583cb5 100644 (file)
@@ -1,5 +1,7 @@
 package pcc.chemicraft;
 
+import java.util.ArrayList;
+
 public final class ChemiCraftData {
 
        public static final int HYDROGEN = 0;
@@ -255,4 +257,26 @@ public final class ChemiCraftData {
                "Cn", "Uut", "Uuq", "Uup", "Uuh", "Uus", "Uuo"
        };
 
+       public static int toAtoms(String sign){
+               for (int i = 0;i < ATOMSLIST.length;i++){
+                       if(ATOMSLIST[i].equals(sign)){
+                               return i;
+                       }
+               }
+               throw new IllegalArgumentException(String.format("Illegal toAtoms %s",sign));
+       }
+
+       public static Integer[] toAtoms(String[] signs){
+               ArrayList<Integer> atoms = new ArrayList<Integer>();
+               for (int i = 0;i < signs.length; i++)
+               {
+                       atoms.add((Integer)toAtoms(signs[i]));
+               }
+               return atoms.toArray(new Integer[0]);
+       }
+
+       public static String toSign(int atoms){
+               return ATOMSLIST[atoms];
+       }
+
 }
index 63ab366..79c722f 100644 (file)
@@ -5,8 +5,12 @@ import net.minecraft.inventory.Container;
 import net.minecraft.inventory.Slot;
 import net.minecraft.world.World;
 import pcc.chemicraft.ChemiCraft;
-import pcc.chemicraft.slot.SlotElectrolysisMaterial;
-import pcc.chemicraft.slot.SlotElectrolysisResult;
+import pcc.chemicraft.inventory.InventoryElectrolysisFuel;
+import pcc.chemicraft.inventory.InventoryElectrolysisMaterial;
+import pcc.chemicraft.inventory.InventoryElectrolysisResult;
+import pcc.chemicraft.slot.SlotPyrolysisTableFuel;
+import pcc.chemicraft.slot.SlotPyrolysisTableMaterial;
+import pcc.chemicraft.slot.SlotPyrolysisTableResult;
 import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
 
 public class ContainerElectrolysisTable extends Container
@@ -18,33 +22,46 @@ public class ContainerElectrolysisTable extends Container
        private int posY;
        private int posZ;
 
+       private InventoryElectrolysisMaterial invm;
+       private InventoryElectrolysisResult invr;
+       private InventoryElectrolysisFuel invf;
+
        private TileEntityElectrolysisTable tileentity;
 
        public ContainerElectrolysisTable(EntityPlayer par1EntityPlayer, TileEntityElectrolysisTable par2) {
                super();
+               this.tileentity = par2;
                this.worldObj = par2.worldObj;
                this.posX = par2.xCoord;
                this.posY = par2.yCoord;
                this.posZ = par2.zCoord;
+               this.invm = par2.getInvMaterial();
+               this.invr = par2.getInvResult();
+               this.invf = par2.getInvFuel();
+               this.invm.setEventHandler(this);
+               this.invr.setEventHandler(this);
+               this.invf.setEventHandler(this);
 
-               this.addSlotToContainer(new SlotElectrolysisMaterial(this.tileentity.getInvMaterial(), 0, 123, 34));
-               for (int i = 0; i < 16; i++) {
-                       this.addSlotToContainer(new SlotElectrolysisResult(this.tileentity.getInvResult(), i, 123, 34));
+               for (int i = 0; i < 4; i++) {
+                       for (int j = 0; j < 4; j++) {
+                               this.addSlotToContainer(new SlotPyrolysisTableResult(this.invr, i*4 + j, 88+i*18, 17+j*18));
+                       }
                }
-               this.addSlotToContainer(new SlotElectrolysisResult(this.tileentity.getInvFuel(), 0, 123, 34));
+               this.addSlotToContainer(new SlotPyrolysisTableMaterial(this.invm, 0, 27, 20));
+               this.addSlotToContainer(new SlotPyrolysisTableFuel(this.invf, 0, 27, 63));
 
                int var3;
                for (var3 = 0; var3 < 3; ++var3)
                {
                        for (int var4 = 0; var4 < 9; ++var4)
                        {
-                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
+                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 121 + var3 * 18));
                        }
                }
 
                for (var3 = 0; var3 < 9; ++var3)
                {
-                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
+                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 179));
                }
 
        }
@@ -5,10 +5,10 @@ import pcc.chemicraft.ChemiCraft;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 
-public class CreativeTabAtomsOre extends CreativeTabs
+public class CreativeTabAtomOres extends CreativeTabs
 {
 
-       public CreativeTabAtomsOre(String type)
+       public CreativeTabAtomOres(String type)
        {
                super(type);
        }
@@ -18,7 +18,7 @@ public class CreativeTabAtomsOre extends CreativeTabs
        @Override
        @SideOnly(Side.CLIENT)
        public int getTabIconItemIndex(){
-               return ChemiCraft.instance.blockAtomsOre[0].blockID;
+               return ChemiCraft.instance.blockAtomOres[0].blockID;
        }
 
 
diff --git a/common/pcc/chemicraft/inventory/InventoryElectrolysisTableFuel.java b/common/pcc/chemicraft/inventory/InventoryElectrolysisTableFuel.java
deleted file mode 100644 (file)
index a8c598e..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-package pcc.chemicraft.inventory;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.Container;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-
-public class InventoryElectrolysisTableFuel implements IInventory
-{
-
-       private ItemStack[] inventory = new ItemStack[1];
-
-       private Container eventHandelr;
-
-       public void setEventHandler(Container par1Container)
-       {
-               this.eventHandelr = par1Container;
-       }
-
-       @Override
-       public int getSizeInventory()
-       {
-               return inventory.length;
-       }
-
-       @Override
-       public ItemStack getStackInSlot(int var1)
-       {
-               return inventory[var1];
-       }
-
-       @Override
-       public ItemStack decrStackSize(int par1, int par2)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var3 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var3;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public ItemStack getStackInSlotOnClosing(int par1)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var2 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var2;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public void setInventorySlotContents(int var1, ItemStack var2)
-       {
-               inventory[var1] = var2;
-       }
-
-       @Override
-       public String getInvName()
-       {
-               return "ChemicalCraftingInventory";
-       }
-
-       @Override
-       public int getInventoryStackLimit()
-       {
-               return 64;
-       }
-
-       @Override
-       public void onInventoryChanged()
-       {
-               this.eventHandelr.onCraftMatrixChanged(this);
-       }
-
-       @Override
-       public boolean isUseableByPlayer(EntityPlayer var1)
-       {
-               return true;
-       }
-
-       @Override
-       public void openChest()
-       {
-
-       }
-
-       @Override
-       public void closeChest()
-       {
-
-       }
-
-}
diff --git a/common/pcc/chemicraft/inventory/InventoryElectrolysisTableMaterial.java b/common/pcc/chemicraft/inventory/InventoryElectrolysisTableMaterial.java
deleted file mode 100644 (file)
index 8eac2f7..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-package pcc.chemicraft.inventory;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.Container;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-
-public class InventoryElectrolysisTableMaterial implements IInventory
-{
-
-       private ItemStack[] inventory = new ItemStack[1];
-
-       private Container eventHandelr;
-
-       public void setEventHandler(Container par1Container)
-       {
-               this.eventHandelr = par1Container;
-       }
-
-       @Override
-       public int getSizeInventory()
-       {
-               return inventory.length;
-       }
-
-       @Override
-       public ItemStack getStackInSlot(int var1)
-       {
-               return inventory[var1];
-       }
-
-       @Override
-       public ItemStack decrStackSize(int par1, int par2)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var3 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var3;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public ItemStack getStackInSlotOnClosing(int par1)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var2 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var2;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public void setInventorySlotContents(int var1, ItemStack var2)
-       {
-               inventory[var1] = var2;
-       }
-
-       @Override
-       public String getInvName()
-       {
-               return "ChemicalCraftingInventory";
-       }
-
-       @Override
-       public int getInventoryStackLimit()
-       {
-               return 64;
-       }
-
-       @Override
-       public void onInventoryChanged()
-       {
-               this.eventHandelr.onCraftMatrixChanged(this);
-       }
-
-       @Override
-       public boolean isUseableByPlayer(EntityPlayer var1)
-       {
-               return true;
-       }
-
-       @Override
-       public void openChest()
-       {
-
-       }
-
-       @Override
-       public void closeChest()
-       {
-
-       }
-
-}
diff --git a/common/pcc/chemicraft/inventory/InventoryElectrolysisTableResult.java b/common/pcc/chemicraft/inventory/InventoryElectrolysisTableResult.java
deleted file mode 100644 (file)
index cea42fa..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-package pcc.chemicraft.inventory;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.Container;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-
-public class InventoryElectrolysisTableResult implements IInventory
-{
-
-       private ItemStack[] inventory = new ItemStack[16];
-
-       private Container eventHandelr;
-
-       public void setEventHandler(Container par1Container)
-       {
-               this.eventHandelr = par1Container;
-       }
-
-       @Override
-       public int getSizeInventory()
-       {
-               return inventory.length;
-       }
-
-       @Override
-       public ItemStack getStackInSlot(int var1)
-       {
-               return inventory[var1];
-       }
-
-       @Override
-       public ItemStack decrStackSize(int par1, int par2)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var3 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var3;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public ItemStack getStackInSlotOnClosing(int par1)
-       {
-               if (this.inventory[par1] != null) {
-                       ItemStack var2 = this.inventory[par1];
-                       this.inventory[par1] = null;
-                       return var2;
-               } else {
-                       return null;
-               }
-       }
-
-       @Override
-       public void setInventorySlotContents(int var1, ItemStack var2)
-       {
-               inventory[var1] = var2;
-       }
-
-       @Override
-       public String getInvName()
-       {
-               return "ChemicalCraftingInventory";
-       }
-
-       @Override
-       public int getInventoryStackLimit()
-       {
-               return 64;
-       }
-
-       @Override
-       public void onInventoryChanged()
-       {
-               this.eventHandelr.onCraftMatrixChanged(this);
-       }
-
-       @Override
-       public boolean isUseableByPlayer(EntityPlayer var1)
-       {
-               return true;
-       }
-
-       @Override
-       public void openChest()
-       {
-
-       }
-
-       @Override
-       public void closeChest()
-       {
-
-       }
-
-}
diff --git a/common/pcc/chemicraft/item/ItemChemiCell.java b/common/pcc/chemicraft/item/ItemChemiCell.java
new file mode 100644 (file)
index 0000000..15a2ea9
--- /dev/null
@@ -0,0 +1,49 @@
+package pcc.chemicraft.item;
+
+import java.util.List;
+
+import pcc.chemicraft.ChemiCraft;
+import pcc.chemicraft.ChemiCraftAPI;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+
+public class ItemChemiCell extends Item
+{
+
+       public ItemChemiCell(int par1)
+       {
+               super(par1);
+               this.maxStackSize = 64;
+               this.setHasSubtypes(true);
+               this.setMaxDamage(0);
+               this.setCreativeTab(ChemiCraft.instance.creativeTabChemiCraft);
+       }
+
+
+
+       @Override
+       public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List){
+               for(int type = 0; type < ChemiCraftAPI.instance().getChemicalCellsName().sizeKeysList(); type++)
+               {
+                       par3List.add(new ItemStack(par1, 1, type));
+                       this.setIconIndex(type);
+               }
+       }
+
+
+
+       @Override
+       public String getItemNameIS(ItemStack par1ItemStack){
+               return super.getItemName() + "." + ChemiCraftAPI.instance().getChemicalCellsName().getKeyList(par1ItemStack.getItemDamage());
+       }
+
+
+
+       @Override
+       public String getTextureFile(){
+               return ChemiCraft.instance.ITEM_TEXTURE;
+       }
+
+}
similarity index 88%
rename from common/pcc/chemicraft/ore/BlockAtomsOre.java
rename to common/pcc/chemicraft/ore/BlockAtomOres.java
index d87ce89..c8e9360 100644 (file)
@@ -10,10 +10,10 @@ import pcc.chemicraft.ChemiCraft;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 
-public class BlockAtomsOre extends Block
+public class BlockAtomOres extends Block
 {
 
-       public BlockAtomsOre(int id)
+       public BlockAtomOres(int id)
        {
                super(id, Material.rock);
                this.setCreativeTab(ChemiCraft.instance.creativeTabAtomsOre);
@@ -22,7 +22,7 @@ public class BlockAtomsOre extends Block
        @Override
        public int getBlockTextureFromSideAndMetadata(int par1, int par2)
        {
-               return (this.blockID - ChemiCraft.instance.atomsOreID[0]) * 16 + par2;
+               return (this.blockID - ChemiCraft.instance.atomOresID[0]) * 16 + par2;
        }
 
        @Override
similarity index 70%
rename from common/pcc/chemicraft/ore/ItemAtomsOre.java
rename to common/pcc/chemicraft/ore/ItemAtomOres.java
index 5c5416b..e628351 100644 (file)
@@ -7,10 +7,10 @@ import pcc.chemicraft.ChemiCraft;
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
 
-public class ItemAtomsOre extends ItemBlock
+public class ItemAtomOres extends ItemBlock
 {
 
-       public ItemAtomsOre(int par1)
+       public ItemAtomOres(int par1)
        {
                super(par1);
                this.setMaxDamage(0);
@@ -21,7 +21,7 @@ public class ItemAtomsOre extends ItemBlock
        @SideOnly(Side.CLIENT)
        public int getIconFromDamage(int par1)
        {
-               return ChemiCraft.instance.blockAtomsOre[0].getBlockTextureFromSideAndMetadata(2, BlockAtomsOre.getBlockFromDye(par1));
+               return ChemiCraft.instance.blockAtomOres[0].getBlockTextureFromSideAndMetadata(2, BlockAtomOres.getBlockFromDye(par1));
        }
 
        @Override
@@ -33,6 +33,6 @@ public class ItemAtomsOre extends ItemBlock
        @Override
        public String getItemNameIS(ItemStack par1ItemStack)
        {
-               return super.getItemName() + "." + ItemDye.dyeColorNames[BlockAtomsOre.getBlockFromDye(par1ItemStack.getItemDamage())];
+               return super.getItemName() + "." + ItemDye.dyeColorNames[BlockAtomOres.getBlockFromDye(par1ItemStack.getItemDamage())];
        }
 }
index b6e4f98..a3abb0c 100644 (file)
@@ -13,6 +13,7 @@ import net.minecraft.world.World;
 import pcc.chemicraft.ChemiCraft;
 import pcc.chemicraft.tileentity.TileEntityChemicalCombinationTable;
 import pcc.chemicraft.tileentity.TileEntityChemicalCraftingTable;
+import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
 import pcc.chemicraft.tileentity.TileEntityPyrolysisTable;
 import pcc.chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 
@@ -193,4 +194,37 @@ public class PacketHandler implements IPacketHandler {
                return packet;
        }
 
+
+       public static Packet getPacket(TileEntityElectrolysisTable tileEntity)
+       {
+               ByteArrayOutputStream var1 = new ByteArrayOutputStream(128);
+               DataOutputStream var2 = new DataOutputStream(var1);
+
+               // Blockのx, y, z座標
+               int x, y, z;
+
+               // x, y, z座標を代入
+               x = tileEntity.xCoord;
+               y = tileEntity.yCoord;
+               z = tileEntity.zCoord;
+
+               try {
+                       // 座標書き込み
+                       var2.writeInt(x);
+                       var2.writeInt(y);
+                       var2.writeInt(z);
+                       tileEntity.writePacket(var2);
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+               // パケットの作成
+               Packet250CustomPayload packet = new Packet250CustomPayload();
+               packet.channel = "chemicraft";
+               packet.data = var1.toByteArray();
+               packet.length = var1.size();
+               packet.isChunkDataPacket = true;
+               return packet;
+       }
+
 }
index 197c9aa..70a78ce 100644 (file)
 package pcc.chemicraft.tileentity;
 
+import java.io.DataOutputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
 import net.minecraft.network.packet.Packet;
 import net.minecraft.tileentity.TileEntity;
-import pcc.chemicraft.inventory.InventoryElectrolysisTableFuel;
-import pcc.chemicraft.inventory.InventoryElectrolysisTableMaterial;
-import pcc.chemicraft.inventory.InventoryElectrolysisTableResult;
+import pcc.chemicraft.ChemiCraftAPI;
+import pcc.chemicraft.inventory.InventoryElectrolysisFuel;
+import pcc.chemicraft.inventory.InventoryElectrolysisMaterial;
+import pcc.chemicraft.inventory.InventoryElectrolysisResult;
+import pcc.chemicraft.system.PacketHandler;
+
+import com.google.common.io.ByteArrayDataInput;
 
 public class TileEntityElectrolysisTable extends TileEntity
 {
 
-       private InventoryElectrolysisTableMaterial invm = new InventoryElectrolysisTableMaterial();
-       private InventoryElectrolysisTableResult invr = new InventoryElectrolysisTableResult();
-       private InventoryElectrolysisTableFuel invf = new InventoryElectrolysisTableFuel();
+       private InventoryElectrolysisMaterial invm = new InventoryElectrolysisMaterial();
+       private InventoryElectrolysisResult invr = new InventoryElectrolysisResult();
+       private InventoryElectrolysisFuel invf = new InventoryElectrolysisFuel();
 
-       public TileEntityElectrolysisTable() {
-               
-       }
+       /**
+        * 電力
+        */
+       private float heat = 0;
+
+       /**
+        * 素材の電力時間
+        */
+       private float burnTime = 0;
+
+       /**
+        * 電池の残り電力時間
+        */
+       private float fuelRestTime = 0; 
+
+       /**
+        * 最大熱量
+        */
+       private static final int MAX_HEAT = 1700;
+
+       /**
+        * 燃料が燃え始める最低熱量
+        */
+       private static final int MIN_HEAT = 400;
+
+       /**
+        * 燃料の燃焼速度比率・素材の燃焼速度比率の中心となる熱量
+        */
+       private static final int CENTER_HEAT = 1050;
+
+       /**
+        * 分解までの時間
+        */
+       private static final int MAX_BURN_TIME = 2000;
+
+       /**
+        * Random of instance.
+        */
+       public static final Random rand = new Random();
+
+       /**
+        * レシピのリスト
+        */
+       private static HashMap<ItemStack, ItemStack[]> recipeList = new HashMap<ItemStack, ItemStack[]>();
 
        @Override
-       public void readFromNBT(NBTTagCompound par1nbtTagCompound)
+       public void updateEntity()
        {
-               super.readFromNBT(par1nbtTagCompound);
+               boolean var1 = this.worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord);
+               if (this.worldObj.getBlockId(xCoord, yCoord-1, zCoord) == Block.fire.blockID) {
+                       if (this.heat < 1700) {
+                               if (this.worldObj.isRaining() && var1 && !this.worldObj.isThundering()) {
+                                       this.heat += 0.1F;
+                               } else if (this.worldObj.isThundering() && var1) {
+                                       this.heat += 0.25F;
+                               } else {
+                                       this.heat += 0.5F;
+                               }
+                       } else {
+                               this.heat = 1700;
+                       }
+               } else {
+                       if (this.heat > 0) {
+                               if(this.worldObj.isRaining() && var1 && !this.worldObj.isThundering()) {
+                                       this.heat -= 0.25F;
+                               } else if(this.worldObj.isThundering() && var1) {
+                                       this.heat -= 0.5F;
+                               } else {
+                                       this.heat -= 0.05F;
+                               }
+                       } else {
+                               this.heat = 0;
+                       }
+               }
+
+               if (this.fuelRestTime >= 0) {
+                       this.burnTime += 10 * CENTER_HEAT / this.heat;
+                       this.fuelRestTime -= 10 * CENTER_HEAT / this.heat;
+               }
+
+               if (this.burnTime >= MAX_BURN_TIME) {
+                       Iterator<ItemStack> itMaterial = recipeList.keySet().iterator();
+                       while (itMaterial.hasNext()) {
+                               ItemStack itemstackMaterial = itMaterial.next();
+                               ItemStack materialItem = this.invm.getStackInSlot(0);
+                               if (materialItem != null) {
+                                       if (this.isInItemCheck(itemstackMaterial)) {
+                                               //var2 = true;
+                                               if (itemstackMaterial.itemID == materialItem.itemID && itemstackMaterial.getItemDamage() == materialItem.getItemDamage()) {
+                                                       this.inItem(itemstackMaterial);
+                                                       if (materialItem.stackSize > 1) {
+                                                               this.invm.setInventorySlotContents(0, new ItemStack(materialItem.itemID, --materialItem.stackSize, materialItem.getItemDamage()));
+                                                       } else {
+                                                               this.invm.setInventorySlotContents(0, null);
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       this.burnTime = 0;
+               }
+
+               boolean var3 = false;
+               if (this.heat > MIN_HEAT) {
+                       Iterator<ItemStack> itMaterial = recipeList.keySet().iterator();
+                       while (itMaterial.hasNext()) {
+                               ItemStack itemstackMaterial = itMaterial.next();
+                               ItemStack materialItem = this.invm.getStackInSlot(0);
+                               if (materialItem != null) {
+                                       if (this.isInItemCheck(itemstackMaterial)) {
+                                               //var2 = true;
+                                               if (itemstackMaterial.itemID == materialItem.itemID && itemstackMaterial.getItemDamage() == materialItem.getItemDamage()) {
+                                                       var3 = true;
+                                                       if (this.fuelRestTime <= 0) {
+                                                               Iterator<ItemStack> itFuel = ChemiCraftAPI.instance().getChemicalCellsFuelList().keySet().iterator();
+                                                               while (itFuel.hasNext()) {
+                                                                       ItemStack itemstackFuel = itFuel.next();
+                                                                       ItemStack fuelItem = this.invf.getStackInSlot(0);
+                                                                       if (fuelItem != null) {
+                                                                               if (itemstackFuel.itemID == fuelItem.itemID && itemstackFuel.getItemDamage() == fuelItem.getItemDamage()) {
+                                                                                       this.fuelRestTime = ChemiCraftAPI.instance().getChemicalCellsFuelList().get(itemstackFuel);
+                                                                                       if (fuelItem.stackSize > 1) {
+                                                                                               this.invf.setInventorySlotContents(0, new ItemStack(fuelItem.itemID, --fuelItem.stackSize, fuelItem.getItemDamage()));
+                                                                                               break;
+                                                                                       } else {
+                                                                                               this.invf.setInventorySlotContents(0, null);
+                                                                                               break;
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               } else {
+                                       this.burnTime = 0;
+                                       //var2 = false;
+                               }
+                       }
+                       if (!var3) {
+                               this.burnTime = 0;
+                       }
+               }
        }
 
        @Override
-       public void writeToNBT(NBTTagCompound par1nbtTagCompound)
-       {
-               super.writeToNBT(par1nbtTagCompound);
+       public void readFromNBT(NBTTagCompound par1) {
+               super.readFromNBT(par1);
+               this.heat = par1.getFloat("Heat");
+               this.burnTime = par1.getFloat("BurnTime");
+               this.fuelRestTime = par1.getFloat("FuelRestTime");
+
+               NBTTagList var2 = par1.getTagList("Items");
+               for (int var3 = 0; var3 < var2.tagCount(); ++var3)
+               {
+                       NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
+                       int var5 = var4.getByte("Slot") & 255;
+
+                       if  (var5 >= 0 && var5 < this.invm.getSizeInventory())
+                       {
+                               this.invm.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
+                       }
+               }
+
+               NBTTagList var6 = par1.getTagList("Items2");
+               for (int var3 = 0; var3 < var6.tagCount(); ++var3)
+               {
+                       NBTTagCompound var7 = (NBTTagCompound)var6.tagAt(var3);
+                       int var8 = var7.getByte("Slot2") & 255;
+
+                       if  (var8 >= 0 && var8 < this.invr.getSizeInventory())
+                       {
+                               this.invr.setInventorySlotContents(var8, ItemStack.loadItemStackFromNBT(var7));
+                       }
+               }
+
+               NBTTagList var9 = par1.getTagList("Items3");
+               for (int var3 = 0; var3 < var9.tagCount(); ++var3)
+               {
+                       NBTTagCompound var10 = (NBTTagCompound)var9.tagAt(var3);
+                       int var11 = var10.getByte("Slot3") & 255;
+
+                       if  (var11 >= 0 && var11 < this.invf.getSizeInventory())
+                       {
+                               this.invf.setInventorySlotContents(var11, ItemStack.loadItemStackFromNBT(var10));
+                       }
+               }
        }
 
        @Override
-       public void updateEntity()
-       {
-               
+       public void writeToNBT(NBTTagCompound par1) {
+               super.writeToNBT(par1);
+               par1.setFloat("Heat", this.heat);
+               par1.setFloat("BurnTime", this.burnTime);
+               par1.setFloat("FuelRestTime", this.fuelRestTime);
+
+               NBTTagList var2 = new NBTTagList();
+               for (int var3 = 0; var3 < this.invm.getSizeInventory(); ++var3)
+               {
+                       if  (this.invm.getStackInSlot(var3) != null)
+                       {
+                               NBTTagCompound var4 = new NBTTagCompound();
+                               var4.setByte("Slot", (byte)var3);
+                               this.invm.getStackInSlot(var3).writeToNBT(var4);
+                               var2.appendTag(var4);
+                       }
+               }
+               par1.setTag("Items", var2);
+
+               NBTTagList var5 = new NBTTagList();
+               for (int var6 = 0; var6 < this.invr.getSizeInventory(); ++var6)
+               {
+                       if  (this.invr.getStackInSlot(var6) != null)
+                       {
+                               NBTTagCompound var7 = new NBTTagCompound();
+                               var7.setByte("Slot2", (byte)var6);
+                               this.invr.getStackInSlot(var6).writeToNBT(var7);
+                               var5.appendTag(var7);
+                       }
+               }
+               par1.setTag("Items2", var5);
+
+               NBTTagList var8 = new NBTTagList();
+               for (int var9 = 0; var9 < this.invf.getSizeInventory(); ++var9)
+               {
+                       if  (this.invf.getStackInSlot(var9) != null)
+                       {
+                               NBTTagCompound var10 = new NBTTagCompound();
+                               var10.setByte("Slot3", (byte)var9);
+                               this.invf.getStackInSlot(var9).writeToNBT(var10);
+                               var8.appendTag(var10);
+                       }
+               }
+               par1.setTag("Items3", var8);
        }
 
        @Override
-       public Packet getDescriptionPacket()
-       {
-               return super.getDescriptionPacket();
+       public Packet getDescriptionPacket() {
+               return PacketHandler.getPacket(this);
+       }
+
+       public void readPacket(ByteArrayDataInput data) {
+               try {
+                       this.heat = data.readFloat();
+                       this.burnTime = data.readInt();
+                       this.fuelRestTime = data.readFloat();
+                       for(int i = 0;i < this.invm.getSizeInventory();i++){
+                               int id = data.readInt();
+                               int size = data.readByte();
+                               int damage = data.readInt();
+                               if (id != 0 && size != 0){
+                                       this.invm.setInventorySlotContents(i, new ItemStack(id, size, damage));
+                               }else{
+                                       this.invm.setInventorySlotContents(i, null);
+                               }
+                       }
+
+                       for(int i = 0;i < this.invr.getSizeInventory();i++){
+                               int id = data.readInt();
+                               int size = data.readByte();
+                               int damage = data.readInt();
+                               if (id != 0 && size != 0){
+                                       this.invr.setInventorySlotContents(i, new ItemStack(id, size, damage));
+                               }else{
+                                       this.invr.setInventorySlotContents(i, null);
+                               }
+                       }
+
+                       for(int i = 0;i < this.invf.getSizeInventory();i++){
+                               int id = data.readInt();
+                               int size = data.readByte();
+                               int damage = data.readInt();
+                               if (id != 0 && size != 0){
+                                       this.invf.setInventorySlotContents(i, new ItemStack(id, size, damage));
+                               }else{
+                                       this.invf.setInventorySlotContents(i, null);
+                               }
+                       }
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
        }
 
-       public InventoryElectrolysisTableMaterial getInvMaterial(){
+
+       public void writePacket(DataOutputStream dos){
+               try {
+                       dos.writeFloat(this.heat);
+                       dos.writeFloat(this.burnTime);
+                       dos.writeFloat(this.fuelRestTime);
+                       for(int i = 0;i < this.invm.getSizeInventory();i++){
+                               int id = 0;
+                               int size = 0;
+                               int damage  = 0;
+                               ItemStack itemstack = this.invm.getStackInSlot(i);
+                               if (itemstack != null){
+                                       id = itemstack.itemID;
+                                       size = itemstack.stackSize;
+                                       damage = itemstack.getItemDamage();
+                                       dos.writeInt(id);
+                                       dos.writeByte(size);
+                                       dos.writeInt(damage);
+                               }else{
+                                       dos.writeInt(0);
+                                       dos.writeByte(0);
+                                       dos.writeInt(0);
+                               }
+                       }
+
+                       for(int i = 0;i < this.invr.getSizeInventory();i++){
+                               int id = 0;
+                               int size = 0;
+                               int damage  = 0;
+                               ItemStack itemstack = this.invr.getStackInSlot(i);
+                               if (itemstack != null){
+                                       id = itemstack.itemID;
+                                       size = itemstack.stackSize;
+                                       damage = itemstack.getItemDamage();
+                                       dos.writeInt(id);
+                                       dos.writeByte(size);
+                                       dos.writeInt(damage);
+                               }else{
+                                       dos.writeInt(0);
+                                       dos.writeByte(0);
+                                       dos.writeInt(0);
+                               }
+                       }
+
+                       for(int i = 0;i < this.invf.getSizeInventory();i++){
+                               int id = 0;
+                               int size = 0;
+                               int damage  = 0;
+                               ItemStack itemstack = this.invf.getStackInSlot(i);
+                               if (itemstack != null){
+                                       id = itemstack.itemID;
+                                       size = itemstack.stackSize;
+                                       damage = itemstack.getItemDamage();
+                                       dos.writeInt(id);
+                                       dos.writeByte(size);
+                                       dos.writeInt(damage);
+                               }else{
+                                       dos.writeInt(0);
+                                       dos.writeByte(0);
+                                       dos.writeInt(0);
+                               }
+                       }
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+       public float getBurnTime() {
+               return this.burnTime;
+       }
+
+       public float getHeat() {
+               return this.heat;
+       }
+
+       public InventoryElectrolysisMaterial getInvMaterial(){
                return this.invm;
        }
 
-       public InventoryElectrolysisTableResult getInvResult(){
+       public InventoryElectrolysisResult getInvResult(){
                return this.invr;
        }
 
-       public InventoryElectrolysisTableFuel getInvFuel(){
+       public InventoryElectrolysisFuel getInvFuel(){
                return this.invf;
        }
 
+       public boolean isInItemCheck(ItemStack key) {
+               ItemStack[] results = recipeList.get(key).clone();
+               ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
+               for (int j = 0; j < this.invr.getSizeInventory(); j++) {
+                       containerResults[j] = this.invr.getStackInSlot(j);
+               }
+
+               for (int i = 0; i < results.length; i++) {
+                       int var1 = results[i].itemID;
+                       int var3 = results[i].getItemDamage();
+                       int var5 = results[i].stackSize;
+                       for (int j = 0; j < containerResults.length; j++) {
+                               if (containerResults[j] == null) {
+                                       containerResults[j] = results[i];
+                                       results[i] = null;
+                                       break;
+                               } else {
+                                       int var2 = containerResults[j].itemID;
+                                       int var4 = containerResults[j].getItemDamage();
+                                       int var6 = containerResults[j].stackSize;
+                                       int var7 = containerResults[j].getMaxStackSize();
+                                       if (var1 == var2 && var3 == var4) {
+                                               if (var5 + var6 <= var7) {
+                                                       containerResults[j] = results[i];
+                                                       results[i] = null;
+                                                       break;
+                                               } else {
+                                                       var5 -= var7 - var6;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               for (int i = 0; i < results.length; i++) {
+                       if (results[i] != null) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       public void inItem(ItemStack key) {
+               ItemStack[] results = recipeList.get(key);
+
+               for (int i = 0; i < results.length; i++) {
+                       ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
+                       for (int j = 0; j < this.invr.getSizeInventory(); j++) {
+                               containerResults[j] = this.invr.getStackInSlot(j);
+                       }
+                       int var1 = results[i].itemID;
+                       int var3 = results[i].getItemDamage();
+                       int var5 = results[i].stackSize;
+                       for (int j = 0; j < containerResults.length; j++) {
+                               if (containerResults[j] == null) {
+                                       this.invr.setInventorySlotContents(j, results[i]);
+                                       break;
+                               } else {
+                                       int var2 = containerResults[j].itemID;
+                                       int var4 = containerResults[j].getItemDamage();
+                                       int var6 = containerResults[j].stackSize;
+                                       int var7 = containerResults[j].getMaxStackSize();
+                                       if (var1 == var2 && var3 == var4) {
+                                               if (var5 + var6 <= var7) {
+                                                       this.invr.setInventorySlotContents(j, new ItemStack(results[i].itemID, var5 + var6, results[i].getItemDamage()));
+                                                       break;
+                                               } else {
+                                                       this.invr.setInventorySlotContents(j, new ItemStack(results[i].itemID, var7, results[i].getItemDamage()));
+                                                       var5 -= var7 - var6;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
 }
index 315aa53..399fb40 100644 (file)
@@ -11,6 +11,8 @@ import net.minecraft.nbt.NBTTagCompound;
 import net.minecraft.nbt.NBTTagList;
 import net.minecraft.network.packet.Packet;
 import net.minecraft.tileentity.TileEntity;
+import pcc.chemicraft.debug.DebugData;
+import pcc.chemicraft.debug.DebugTick;
 import pcc.chemicraft.inventory.InventoryPyrolysisTableFuel;
 import pcc.chemicraft.inventory.InventoryPyrolysisTableMaterial;
 import pcc.chemicraft.inventory.InventoryPyrolysisTableResult;
@@ -77,7 +79,7 @@ public class TileEntityPyrolysisTable extends TileEntity {
        @Override
        public void updateEntity() {
 
-               //boolean var2 = false;
+               // boolean var2 = false;
 
                boolean var1 = this.worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord);
                if (this.worldObj.getBlockId(xCoord, yCoord-1, zCoord) == Block.fire.blockID) {
@@ -186,7 +188,7 @@ public class TileEntityPyrolysisTable extends TileEntity {
                                new DebugData("BurnTime", this.burnTime),
                                new DebugData("アイテムが入るか", var2)
                                );
-                */
+               */
        }
 
        @Override
index 8046696..f122727 100644 (file)
Binary files a/resources/pcc/chemicraft/blocks/AtomsOre.png and b/resources/pcc/chemicraft/blocks/AtomsOre.png differ