OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/chemicraft/chemicraft
authormozipi <mozipi@users.sourceforge.jp>
Mon, 21 Jan 2013 14:28:32 +0000 (23:28 +0900)
committermozipi <mozipi@users.sourceforge.jp>
Mon, 21 Jan 2013 14:28:32 +0000 (23:28 +0900)
Conflicts:
src/chemicraft/ChemiCraft.java
src/chemicraft/block/BlockDecompositionTable.java
src/chemicraft/container/ContainerDecompositionTable.java
src/chemicraft/gui/GuiDecompositionTable.java
src/chemicraft/tileentity/TileEntityDecompositionTable.java

33 files changed:
1  2 
common/chemicraft/ChemiCraft.java
common/chemicraft/client/ClientProxy.java
common/chemicraft/container/ContainerChemicalCombinationTable.java
common/chemicraft/container/ContainerElectrolysisTable.java
common/chemicraft/debug/DebugTick.java
common/chemicraft/gui/GuiElectrolysisTable.java
common/chemicraft/inventory/InventoryElectrolysisFuel.java
common/chemicraft/inventory/InventoryElectrolysisMaterial.java
common/chemicraft/inventory/InventoryElectrolysisResult.java
common/chemicraft/inventory/InventoryPyrolysisTableMaterial.java
common/chemicraft/inventory/InventoryPyrolysisTableResult.java
common/chemicraft/item/ItemGasCollectingBottle.java
common/chemicraft/slot/SlotDecompositionTableMaterial.java
common/chemicraft/slot/SlotDecompositionTableResult.java
common/chemicraft/slot/SlotElectrolysisFuel.java
common/chemicraft/slot/SlotElectrolysisMaterial.java
common/chemicraft/slot/SlotElectrolysisResult.java
common/chemicraft/slot/SlotPyrolysisTableMaterial.java
common/chemicraft/slot/SlotPyrolysisTableResult.java
common/chemicraft/system/CommonProxy.java
common/chemicraft/tileentity/TileEntityChemicalCombinationTable.java
common/chemicraft/tileentity/TileEntityElectrolysisTable.java
common/chemicraft/tileentity/TileEntityPyrolysisTable.java
src/chemicraft/ChemiCraft.java
src/chemicraft/block/BlockDecompositionTable.java
src/chemicraft/container/ContainerDecompositionTable.java
src/chemicraft/debug/CommandDeleteItem.java
src/chemicraft/gui/GuiDecompositionTable.java
src/chemicraft/inventory/InventoryDecompositionTableMaterial.java
src/chemicraft/item/ItemGasCollectingBottle.java
src/chemicraft/system/CommonProxy.java
src/chemicraft/tileentity/TileEntityDecompositionTable.java
src/chemicraft/util/MathHelperPlus.java

index 6e0c759,0000000..231b97f
mode 100644,000000..100644
--- /dev/null
@@@ -1,346 -1,0 +1,343 @@@
- import net.minecraftforge.common.BiomeManager;\r
 +package chemicraft;\r
 +\r
 +import net.minecraft.block.Block;\r
 +import net.minecraft.block.material.Material;\r
 +import net.minecraft.creativetab.CreativeTabs;\r
 +import net.minecraft.item.Item;\r
 +import net.minecraft.item.ItemStack;\r
- import net.minecraftforge.common.DimensionManager;\r
 +import net.minecraftforge.common.Configuration;\r
- import chemicraft.util.WorldProviderChemical;\r
 +import net.minecraftforge.common.Property;\r
 +import chemicraft.block.BlockChemicalCombinationTable;\r
 +import chemicraft.block.BlockChemicalCraftingTable;\r
 +import chemicraft.block.BlockPyrolysisTable;\r
 +import chemicraft.block.BlockToolAndWeaponCraftingTable;\r
 +import chemicraft.compounds.CompoundWater;\r
 +import chemicraft.debug.CommandDeleteItem;\r
 +import chemicraft.debug.CommandGenDebugRoom;\r
 +import chemicraft.debug.CommandSetTile;\r
 +import chemicraft.item.ItemAtoms;\r
 +import chemicraft.item.ItemAtomsGrenade;\r
 +import chemicraft.item.ItemCompounds;\r
 +import chemicraft.item.ItemGasCollectingBottle;\r
 +import chemicraft.system.CommonProxy;\r
 +import chemicraft.system.PacketHandler;\r
 +import chemicraft.tileentity.TileEntityChemicalCombinationTable;\r
 +import chemicraft.tileentity.TileEntityChemicalCraftingTable;\r
 +import chemicraft.tileentity.TileEntityPyrolysisTable;\r
 +import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;\r
 +import chemicraft.util.Auxiliary;\r
 +import chemicraft.util.Auxiliary.ArrayAuxiliary;\r
 +import chemicraft.util.Auxiliary.NameAuxiliary;\r
 +import chemicraft.util.CreativeTabAtoms;\r
 +import chemicraft.util.NBTRecipeGrenade;\r
 +import cpw.mods.fml.common.Mod;\r
 +import cpw.mods.fml.common.SidedProxy;\r
 +import cpw.mods.fml.common.event.FMLPostInitializationEvent;\r
 +import cpw.mods.fml.common.event.FMLPreInitializationEvent;\r
 +import cpw.mods.fml.common.event.FMLServerStartingEvent;\r
 +import cpw.mods.fml.common.network.NetworkMod;\r
 +import cpw.mods.fml.common.network.NetworkRegistry;\r
 +import cpw.mods.fml.common.registry.GameRegistry;\r
 +\r
 +/**\r
 + * ChemiCraft本体\r
 + * @author P.C.C.\r
 + *\r
 + */\r
 +@Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")\r
 +@NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)\r
 +public class ChemiCraft {\r
 +\r
 +      public static final String[] ATOMSNAME = {\r
 +              "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",\r
 +              "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",\r
 +              "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",\r
 +              "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",\r
 +              "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",\r
 +              "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",\r
 +              "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",\r
 +              "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };\r
 +\r
 +      public static final String[] ATOMSNAMEJP = {\r
 +              "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",\r
 +              "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",\r
 +              "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",\r
 +              "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",\r
 +              "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",\r
 +              "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };\r
 +\r
 +      /**\r
 +       * このmodのインスタンス\r
 +       */\r
 +      @Mod.Instance("chemiCraft")\r
 +      public static ChemiCraft instance;\r
 +\r
 +      /**\r
 +       * ChemiCraftのProxy.\r
 +       */\r
 +      @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")\r
 +      public static CommonProxy proxy;\r
 +\r
 +      /**\r
 +       * ChemiCraftのCreativeTab.\r
 +       */\r
 +      public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");\r
 +\r
 +      /**\r
 +       * ItemID.\r
 +       */\r
 +      public int atomsID;\r
 +      public int compoundsID;\r
 +      public int gasCollectingBottleID;\r
 +      public int atomGrenadeID;\r
 +\r
 +      /**\r
 +       * BlockID.\r
 +       */\r
 +      public int pyrolysisTableID;\r
 +      public int chemicalConbinationTableID;\r
 +      public int toolAndWeaponCraftingTableID;\r
 +      public int chemicalCraftingTableID;\r
 +\r
 +      /**\r
 +       * GUIID.\r
 +       */\r
 +      public int guiPyrolysisTableID;\r
 +      public int guiChemicalCombinationTableID;\r
 +      public int guiToolAndWeaponCraftingTableID;\r
 +      public int guiChemicalCraftingTableID;\r
 +\r
 +      /**\r
 +       * Block型変数.\r
 +       */\r
 +      public Block blockPyrolysisTable;\r
 +      public Block blockChemicalCombinationTable;\r
 +      public Block blockToolAndWeaponCraftingTable;\r
 +      public Block blockChemicalCraftingTable;\r
 +\r
 +      /**\r
 +       * Item型変数.\r
 +       */\r
 +      public Item itemAtoms;\r
 +      public Item itemCompounds;\r
 +      public Item itemGasCollectingBottle;\r
 +      public Item itemAtomGrenade;\r
 +\r
 +      /**\r
 +       * このmodで使用するTextureのパス.\r
 +       */\r
 +      public String itemAtomsTexture = "/chemicraft/items/Atoms.png";\r
 +      public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";\r
 +      public String itemTexture = "/chemicraft/items/items.png";\r
 +      public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/cctable.png";\r
 +      public String guiPyrolysisTexture = "/chemicraft/guis/Pyrolysis.png";\r
 +      public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";\r
 +      public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";\r
 +      public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";\r
 +\r
 +      /**\r
 +       * このmodに必要な補助クラスのインスタンス.\r
 +       */\r
 +      public Auxiliary auxiliary = new Auxiliary();\r
 +      public NameAuxiliary nameAuxiliary = new NameAuxiliary();\r
 +      public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();\r
 +\r
 +      private ChemiCraftAPI api = ChemiCraftAPI.getInstance();\r
 +      private ChemiCraftData chemicalData = new ChemiCraftData();\r
 +\r
 +      @Mod.PreInit\r
 +      public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {\r
 +              Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());\r
 +              cfg.load();\r
 +\r
 +              Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);\r
 +              Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);\r
 +              Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);\r
 +              Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);\r
 +\r
 +              Property atomsIDProp = cfg.getItem("AtomsID", 25000);\r
 +              Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);\r
 +              Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);\r
 +              Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);\r
 +\r
 +              Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);\r
 +              Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);\r
 +              Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);\r
 +              Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);\r
 +\r
 +\r
 +              this.pyrolysisTableID = pyrolysisTableIDProp.getInt();\r
 +              this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();\r
 +              this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();\r
 +              this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();\r
 +              this.atomsID = atomsIDProp.getInt();\r
 +              this.compoundsID = compoundsIDProp.getInt();\r
 +              this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();\r
 +              this.atomGrenadeID = atomGrenadeIDProp.getInt();\r
 +              this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();\r
 +              this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();\r
 +              this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();\r
 +              this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();\r
 +\r
 +              cfg.save();\r
 +      }\r
 +\r
 +      @Mod.ServerStarting\r
 +      public void serverStarting(final FMLServerStartingEvent event) {\r
 +              event.registerServerCommand(new CommandSetTile());\r
 +              event.registerServerCommand(new CommandDeleteItem());\r
 +              event.registerServerCommand(new CommandGenDebugRoom());\r
 +      }\r
 +\r
 +      @Mod.PostInit\r
 +      public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {\r
 +              this.settingProcessing(event);\r
 +              this.apiProcessing(event);\r
 +              this.debug(event);\r
 +      }\r
 +\r
 +      private void settingProcessing(final FMLPostInitializationEvent event) {\r
 +\r
 +              // Blockを追加します\r
 +              this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).\r
 +                              setHardness(2.0F).\r
 +                              setResistance(0.0F).\r
 +                              setStepSound(Block.soundStoneFootstep).\r
 +                              setBlockName("PyrolysisTable");\r
 +              this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).\r
 +                              setHardness(2.0F).\r
 +                              setResistance(0.0F).\r
 +                              setStepSound(Block.soundStoneFootstep).\r
 +                              setBlockName("ChemicalCombinationTable");\r
 +              this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).\r
 +                              setHardness(2.0F).\r
 +                              setResistance(0.0F).\r
 +                              setStepSound(Block.soundStoneFootstep).\r
 +                              setBlockName("ToolAndWeaponCraftingTable");\r
 +              this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).\r
 +                              setHardness(2.0F).\r
 +                              setResistance(0.0F).\r
 +                              setStepSound(Block.soundStoneFootstep).\r
 +                              setBlockName("ChemicalCraftingTable");\r
 +\r
 +              // Itemを追加します\r
 +              this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");\r
 +              this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");\r
 +              this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);\r
 +              this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);\r
 +\r
 +              // BlockをMinecraftに登録します\r
 +              GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");\r
 +              GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");\r
 +              GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");\r
 +              GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");\r
 +\r
 +              // Blockの名前を設定します\r
 +              this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");\r
 +              this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");\r
 +              this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");\r
 +              this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");\r
 +              this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");\r
 +              this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");\r
 +              this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");\r
 +              this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");\r
 +\r
 +              // Itemの名前を設定します\r
 +              this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);\r
 +              this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);\r
 +              this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");\r
 +              this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");\r
 +              this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");\r
 +              this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");\r
 +\r
 +              // TileEntityを追加します\r
 +              GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");\r
 +              GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");\r
 +              GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");\r
 +              GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");\r
 +\r
 +              // GUIを追加します\r
 +              NetworkRegistry.instance().registerGuiHandler(instance, proxy);\r
 +\r
 +              // 描画関係の読み込み\r
 +              proxy.registerRenderInformation();\r
 +\r
 +              //化学作業台類のレシピを追加します\r
 +              GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),\r
 +                              new Object[]{\r
 +                      "XYX", "ZAZ", "ZZZ",\r
 +                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
 +                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
 +                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
 +                      Character.valueOf('A'), new ItemStack(Item.bucketLava),\r
 +              });\r
 +              GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),\r
 +                              new Object[]{\r
 +                      "XYX", "ZAZ", "ZZZ",\r
 +                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
 +                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
 +                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
 +                      Character.valueOf('A'), new ItemStack(Block.obsidian),\r
 +              });\r
 +              GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),\r
 +                              new Object[]{\r
 +                      "XYX", "ZAZ", "ZZZ",\r
 +                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
 +                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
 +                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
 +                      Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),\r
 +              });\r
 +              GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),\r
 +                              new Object[]{\r
 +                      "XYX", "ZAZ", "ZZZ",\r
 +                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
 +                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
 +                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
 +                      Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),\r
 +              });\r
 +\r
 +              // 化合物を追加します\r
 +              api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");\r
 +              api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");\r
 +              api.addLangCompound("ja_JP", "Water", "水");\r
 +              api.addCompound("Test");\r
 +
 +\r
 +              //化合物のHandlerを設定します\r
 +              api.settingCompoundHandler("Water", new CompoundWater());\r
 +\r
 +              //化合物のレシピを追加します\r
 +              api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));\r
 +\r
 +              //手榴弾の追加\r
 +              api.addMaterialRecipe(\r
 +                              new ItemStack[]{\r
 +                                              null,\r
 +                                              new ItemStack(Block.stone),\r
 +                                              null,\r
 +                                              new ItemStack(Block.stone),\r
 +                                              new ItemStack(Item.gunpowder),\r
 +                                              new ItemStack(Block.stone),\r
 +                                              null,\r
 +                                              new ItemStack(Block.stone),\r
 +                                              null\r
 +                              },\r
 +                              new ItemStack(this.itemAtomGrenade, 16, 0),\r
 +                              new NBTRecipeGrenade()\r
 +                              );\r
 +              //Tickingの追加\r
 +              this.proxy.registerTickHandler();\r
 +      }\r
 +\r
 +      private void apiProcessing(final FMLPostInitializationEvent event) {\r
 +              // API用の処理\r
 +              this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());\r
 +              for (int i = 0; i < api.getCompoundsLang().size(); i++) {\r
 +                      this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());\r
 +              }\r
 +      }\r
 +\r
 +      private void debug(final FMLPostInitializationEvent event) {\r
 +      }\r
 +\r
 +}\r
index 0000000,0000000..d001c82
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,61 @@@
++package chemicraft.client;
++
++import net.minecraft.entity.player.EntityPlayer;
++import net.minecraft.tileentity.TileEntity;
++import net.minecraft.world.World;
++import net.minecraftforge.client.MinecraftForgeClient;
++import chemicraft.ChemiCraft;
++import chemicraft.debug.DebugTick;
++import chemicraft.gui.GuiPyrolysisTable;
++import chemicraft.tileentity.TileEntityPyrolysisTable;
++import cpw.mods.fml.client.FMLClientHandler;
++import cpw.mods.fml.client.registry.RenderingRegistry;
++import cpw.mods.fml.common.registry.TickRegistry;
++import cpw.mods.fml.relauncher.Side;
++
++public class ClientProxy extends CommonProxy {
++
++      @Override
++      public void registerRenderInformation() {
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.blockChemicalCraftingTableTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.itemAtomsTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.itemCompoundsTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.itemTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCombinationTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiPyrolysisTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCraftingTexture);
++              MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiToolAndWeaponCraftingTexture);
++              RenderingRegistry.registerEntityRenderingHandler(EntityAtomsGrenade.class, new RenderAtomsGrenade(0.5F));
++      }
++
++
++      @Override
++      public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
++              if (!world.blockExists(x, y, z))
++                      return null;
++
++              TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
++              if (tileEntity instanceof TileEntityPyrolysisTable) {
++                      return new GuiPyrolysisTable(player, (TileEntityPyrolysisTable) tileEntity);
++              }else if(tileEntity instanceof TileEntityChemicalCombinationTable){
++                      return new GuiChemicalCombinationTable(player, (TileEntityChemicalCombinationTable) tileEntity);
++              }else if(tileEntity instanceof TileEntityToolAndWeaponCraftingTable){
++                      return new GuiToolAndWeaponCraftingTable(player, (TileEntityToolAndWeaponCraftingTable) tileEntity);
++              }else if(tileEntity instanceof TileEntityChemicalCraftingTable){
++                      return new GuiChemicalCraftingTable(player, (TileEntityChemicalCraftingTable) tileEntity);
++              }
++              return null;
++      }
++
++
++      @Override
++      public World getClientWorld() {
++              return FMLClientHandler.instance().getClient().theWorld;
++      }
++
++      @Override
++      public void registerTickHandler() {
++              TickRegistry.registerTickHandler(new DebugTick(), Side.CLIENT);
++      }
++
++}
index 2244348,0000000..26ebd93
mode 100644,000000..100644
--- /dev/null
@@@ -1,157 -1,0 +1,156 @@@
- import net.minecraft.block.Block;
 +package chemicraft.container;
 +
 +import net.minecraft.entity.player.EntityPlayer;
 +import net.minecraft.inventory.Container;
 +import net.minecraft.inventory.IInventory;
 +import net.minecraft.inventory.Slot;
 +import net.minecraft.item.ItemStack;
 +import net.minecraft.world.World;
 +import chemicraft.ChemiCraft;
 +import chemicraft.ChemiCraftAPI;
 +import chemicraft.inventory.InventoryChemicalCombinationTableMaterial;
 +import chemicraft.inventory.InventoryChemicalCombinationTableResult;
 +import chemicraft.slot.SlotChemicalCombinationTableMaterial;
 +import chemicraft.slot.SlotChemicalCombinationTableResult;
 +import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 +import cpw.mods.fml.common.network.PacketDispatcher;
 +
 +public class ContainerChemicalCombinationTable extends Container {
 +
 +      /**
 +       * the world.
 +       */
 +      private World worldObj;
 +
 +      /**
 +       * the TileEntity of Position.
 +       */
 +      private int posX;
 +      private int posY;
 +      private int posZ;
 +
 +      /**
 +       * the TileEntity.
 +       */
 +      private TileEntityChemicalCombinationTable tileentity;
 +
 +      /**
 +       * the Inventory's.
 +       */
 +      private InventoryChemicalCombinationTableMaterial invm;
 +      private InventoryChemicalCombinationTableResult invr;
 +
 +      /**
 +       * the EntityPlayer.
 +       */
 +      private EntityPlayer entityplayer;
 +
 +      public ContainerChemicalCombinationTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCombinationTable par2) {
 +              super();
 +              this.entityplayer = par1EntityPlayer;
 +              this.tileentity = par2;
 +              this.worldObj = tileentity.worldObj;
 +              this.posX = tileentity.xCoord;
 +              this.posY = tileentity.yCoord;
 +              this.posZ = tileentity.zCoord;
 +              this.invm = this.tileentity.getInvMaterial();
 +              this.invr = this.tileentity.getInvResult();
 +
 +              for(int i = 0;i < 5;i++){
 +                      for(int j = 0;j < 3;j++){
 +                              this.addSlotToContainer(new SlotChemicalCombinationTableMaterial(this.invm, i * 3 + j, i * 18 + 16, j * 18 + 15));
 +                      }
 +              }
 +              this.addSlotToContainer(new SlotChemicalCombinationTableResult(invr, 0, 123, 34));
 +
 +
 +              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, 121 + var3 * 18));
 +                      }
 +              }
 +
 +              for (var3 = 0; var3 < 9; ++var3)
 +              {
 +                      this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 179));
 +              }
 +
 +              this.invm.setEventHandler(this);
 +              this.onCraftMatrixChanged(invm);
 +      }
 +
 +
 +
 +      @Override
 +      public void onCraftMatrixChanged(IInventory par1IInventory){
 +              this.invr.setInventorySlotContents(0, ChemiCraftAPI.getInstance().getCraftingManager().getChemicalCombinationResult(this.tileentity.getAtomsList(), this.tileentity.getAtomsAmountList()));
 +              if (par1IInventory instanceof InventoryChemicalCombinationTableResult) {
 +                      PacketDispatcher.sendPacketToServer(this.tileentity.getDescriptionPacket());
 +              }
 +      }
 +
 +      @Override
 +      public boolean canInteractWith(EntityPlayer par1EntityPlayer){
 +              return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.chemicalConbinationTableID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
 +      }
 +
 +      @Override
 +      public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
 +              ItemStack var3 = null;
 +              Slot var4 = (Slot)this.inventorySlots.get(par2);
 +              Slot var6 = (Slot)this.inventorySlots.get(0);
 +
 +              if (var4 != null && var4.getHasStack()) {
 +                      ItemStack var5 = var4.getStack();
 +                      var3 = var5.copy();
 +                      if (par2 >= 0 && par2 < 16) {
 +                              if (!this.mergeItemStack(var5, 16, 52, false)) {
 +                                      return null;
 +                              }
 +                      } else if (par2 >= 16 && par2 < 53) {
 +                              if (var6.isItemValid(var3)) {
 +                                      if (!this.mergeItemStack(var5, 0, 15, false)) {
 +                                              return null;
 +                                      }
 +                              }
 +                      } else if(par2 == 16) {
 +                              if (!this.mergeItemStack(var5, 16, 52, false)) {
 +                                      return null;
 +                              }
 +                      }
 +
 +                      if (var5.stackSize == 0) {
 +                              var4.putStack((ItemStack)null);
 +                      } else {
 +                              var4.onSlotChanged();
 +                      }
 +
 +                      if (var5.stackSize == var3.stackSize) {
 +                              return null;
 +                      }
 +
 +                      var4.onPickupFromSlot(par1EntityPlayer, var5);
 +              }
 +
 +              return var3;
 +      }
 +
 +      @Override
 +      public ItemStack slotClick(int par1, int par2, int par3, EntityPlayer par4EntityPlayer) {
 +              if (par1 == 15) {
 +                      if (this.invr.getStackInSlot(0) != null) {
 +                              this.tileentity.emptytoAtomsList();
 +                      }
 +              }
 +              return super.slotClick(par1, par2, par3, par4EntityPlayer);
 +      }
 +
 +      @Override
 +      public void onCraftGuiClosed(EntityPlayer par1EntityPlayer){
 +              super.onCraftGuiClosed(par1EntityPlayer);
 +      }
 +
 +}
index 0000000,0000000..c6e5d50
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,69 @@@
++package chemicraft.container;
++
++import net.minecraft.entity.player.EntityPlayer;
++import net.minecraft.inventory.Container;
++import net.minecraft.inventory.Slot;
++import net.minecraft.world.World;
++import chemicraft.ChemiCraft;
++import chemicraft.inventory.InventoryElectrolysisFuel;
++import chemicraft.inventory.InventoryElectrolysisMaterial;
++import chemicraft.inventory.InventoryElectrolysisResult;
++import chemicraft.slot.SlotElectrolysisMaterial;
++import chemicraft.slot.SlotElectrolysisResult;
++import chemicraft.tileentity.TileEntityElectrolysisTable;
++
++public class ContainerElectrolysisTable extends Container
++{
++
++      private World worldObj;
++
++      private int posX;
++      private int posY;
++      private int posZ;
++
++      private TileEntityElectrolysisTable tileEntity;
++
++      private InventoryElectrolysisMaterial invm;
++      private InventoryElectrolysisResult invr;
++      private InventoryElectrolysisFuel invf;
++
++      public ContainerElectrolysisTable(EntityPlayer par1EntityPlayer, TileEntityElectrolysisTable par2) {
++              super();
++              this.worldObj = par2.worldObj;
++              this.posX = par2.xCoord;
++              this.posY = par2.yCoord;
++              this.posZ = par2.zCoord;
++              this.invm = (InventoryElectrolysisMaterial) this.tileEntity.getInvMaterial();
++              this.invr = (InventoryElectrolysisResult) this.tileEntity.getInvResult();
++              this.invf = (InventoryElectrolysisFuel) this.tileEntity.getInvFuel();
++
++              this.addSlotToContainer(new SlotElectrolysisMaterial(invm, 0, 123, 34));
++              for (int i = 0; i < 16; i++) {
++                      this.addSlotToContainer(new SlotElectrolysisResult(invr, i, 123, 34));
++              }
++              this.addSlotToContainer(new SlotElectrolysisResult(invf, 0, 123, 34));
++
++              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));
++                      }
++              }
++
++              for (var3 = 0; var3 < 9; ++var3)
++              {
++                      this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
++              }
++
++      }
++
++      @Override
++      public boolean canInteractWith(EntityPlayer par1EntityPlayer)
++      {
++              return true;
++              //return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.electrolysisTableID ? false : par1EntityPlayer.getDistanceSq((double) this.posX + 0.5D, (double) this.posY + 0.5D, (double) this.posZ + 0.5D) <= 64.0D;
++      }
++
++}
index e168e75,0000000..1e1edde
mode 100644,000000..100644
--- /dev/null
@@@ -1,89 -1,0 +1,87 @@@
- import java.awt.BasicStroke;
 +package chemicraft.debug;
 +
- import java.awt.RenderingHints;
 +import java.awt.Color;
 +import java.awt.Font;
 +import java.awt.Graphics;
 +import java.awt.Graphics2D;
 +import java.util.EnumSet;
 +import java.util.HashMap;
 +import java.util.Iterator;
 +
 +import javax.swing.JFrame;
 +import javax.swing.JPanel;
 +
 +import cpw.mods.fml.common.ITickHandler;
 +import cpw.mods.fml.common.TickType;
 +
 +public class DebugTick extends JPanel implements ITickHandler {
 +
 +      private static HashMap<String, DebugData[]> displayDataList = new HashMap<String, DebugData[]>();
 +
 +      public DebugTick() {
 +              JFrame frame = new JFrame();
 +              frame.setSize(640, 480);
 +              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 +              frame.add(this);
 +              frame.setVisible(true);
 +
 +      }
 +
 +      @Override
 +      public void tickStart(EnumSet<TickType> type, Object... tickData) {
 +
 +      }
 +
 +      @Override
 +      public void tickEnd(EnumSet<TickType> type, Object... tickData) {
 +              this.repaint();
 +      }
 +
 +      @Override
 +      public EnumSet<TickType> ticks() {
 +              return EnumSet.of(TickType.GUI, TickType.CLIENT);
 +      }
 +
 +      @Override
 +      public String getLabel() {
 +              return null;
 +      }
 +
 +      @Override
 +      public void paintComponent(Graphics g) {
 +              Graphics2D g2 = (Graphics2D) g;
 +
 +              g2.clearRect(0, 0, this.getWidth(), this.getHeight());
 +
 +              int fontPos = 20;
 +              Iterator<String> itKey = displayDataList.keySet().iterator();
 +              while (itKey.hasNext()) {
 +                      String key = itKey.next();
 +                      DebugData[] datas = displayDataList.get(key);
 +                      g2.setFont(new Font("MS ゴシック", Font.BOLD, 16));
 +                      g2.setColor(Color.RED);
 +                      g2.drawString(key + ":", 10, fontPos);
 +                      g2.setFont(new Font("MS ゴシック", Font.PLAIN, 12));
 +                      g2.setColor(Color.BLACK);
 +
 +                      fontPos += 16;
 +
 +                      for (int i = 0; i < datas.length; i++) {
 +                              g2.drawString(String.valueOf(datas[i].getKey()) + ":" + String.valueOf(datas[i].getValue()), 10, fontPos);
 +                              fontPos += 12;
 +                      }
 +
 +                      fontPos += 4;
 +
 +              }
 +      }
 +
 +      public static void setDebugData(String key, DebugData... value) {
 +              displayDataList.put(key, value);
 +      }
 +
 +      public static void removeDebugData(String key) {
 +              displayDataList.remove(key);
 +      }
 +
 +}
index 0000000,0000000..5fe55f8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++package chemicraft.gui;
++
++import net.minecraft.client.gui.inventory.GuiContainer;
++import net.minecraft.entity.player.EntityPlayer;
++import chemicraft.ChemiCraft;
++import chemicraft.container.ContainerElectrolysisTable;
++import chemicraft.tileentity.TileEntityElectrolysisTable;
++
++public class GuiElectrolysisTable extends GuiContainer
++{
++
++      public GuiElectrolysisTable(EntityPlayer par1EntityPlayer, TileEntityElectrolysisTable par2) {
++              super(new ContainerElectrolysisTable(par1EntityPlayer, par2));
++              this.ySize = 204;
++      }
++
++      @Override
++      protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3)
++      {
++              //this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture(ChemiCraft.instance.guiElectrolysisTableTexture));
++              this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
++      }
++
++}
index 0000000,0000000..a811979
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,98 @@@
++package 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 InventoryElectrolysisFuel 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()
++      {
++
++      }
++
++}
index 0000000,0000000..d004d5c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,98 @@@
++package 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 InventoryElectrolysisMaterial 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()
++      {
++
++      }
++
++}
index 0000000,0000000..2acf3a2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,98 @@@
++package 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 InventoryElectrolysisResult 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()
++      {
++
++      }
++
++}
index ada8aa4,0000000..fab443c
mode 100644,000000..100644
--- /dev/null
@@@ -1,113 -1,0 +1,112 @@@
 +package 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 InventoryPyrolysisTableMaterial implements IInventory {
 +
 +      private ItemStack[] inventory = new ItemStack[1];
 +      private Container eventHandler;
 +
 +      public void setEventHandler(Container par1){
 +              this.eventHandler = par1;
 +      }
 +
 +      @Override
 +      public int getSizeInventory() {
 +              return this.inventory.length;
 +      }
 +
 +      @Override
 +      public ItemStack getStackInSlot(int var1) {
 +              return this.inventory[var1];
 +      }
 +
 +      @Override
 +      public ItemStack decrStackSize(int var1, int var2) {
 +              if (this.inventory[var1] != null)
 +              {
 +                      ItemStack var3;
 +
 +                      if (this.inventory[var1].stackSize <= var2)
 +                      {
 +                              var3 = this.inventory[var1];
 +                              this.inventory[var1] = null;
 +                              this.onInventoryChanged();
 +                              return var3;
 +                      }
 +                      else
 +                      {
 +                              var3 = this.inventory[var1].splitStack(var2);
 +
 +                              if (this.inventory[var1].stackSize == 0)
 +                              {
 +                                      this.inventory[var1] = null;
 +                              }
 +
 +                              this.onInventoryChanged();
 +                              return var3;
 +                      }
 +              }
 +              else
 +              {
 +                      return null;
 +              }
 +      }
 +
 +      @Override
 +      public ItemStack getStackInSlotOnClosing(int var1) {
 +              if (this.inventory[var1] != null)
 +              {
 +                      ItemStack var2 = this.inventory[var1];
 +                      this.inventory[var1] = null;
 +                      return var2;
 +              }
 +              else
 +              {
 +                      return null;
 +              }
 +      }
 +
 +      @Override
 +      public void setInventorySlotContents(int var1, ItemStack var2) {
 +              this.inventory[var1] = var2;
 +
 +              if (var2 != null && var2.stackSize > this.getInventoryStackLimit())
 +              {
 +                      var2.stackSize = this.getInventoryStackLimit();
 +              }
 +
 +              this.onInventoryChanged();
 +      }
 +
 +      @Override
 +      public String getInvName() {
 +              return "PyrolysisTableMaterial";
 +      }
 +
 +      @Override
 +      public int getInventoryStackLimit() {
 +              return 64;
 +      }
 +
 +      @Override
 +      public void onInventoryChanged() {
 +              if(this.eventHandler != null) this.eventHandler.onCraftMatrixChanged(this);
 +      }
 +
 +      @Override
 +      public boolean isUseableByPlayer(EntityPlayer var1) {
 +              return true;
 +      }
 +
 +      @Override
 +      public void openChest() {
 +      }
 +
 +      @Override
 +      public void closeChest() {
 +      }
 +}
index f8ca9fd,0000000..ea14e17
mode 100644,000000..100644
--- /dev/null
@@@ -1,112 -1,0 +1,112 @@@
 +package 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 InventoryPyrolysisTableResult implements IInventory {
 +
 +      private ItemStack[] inventory = new ItemStack[16];
 +      private Container eventHandler;
 +
 +      public void setEventHandler(Container par1){
 +              this.eventHandler = par1;
 +      }
 +
 +      @Override
 +      public int getSizeInventory() {
 +              return this.inventory.length;
 +      }
 +
 +      @Override
 +      public ItemStack getStackInSlot(int var1) {
 +              return this.inventory[var1];
 +      }
 +
 +      @Override
 +      public ItemStack decrStackSize(int var1, int var2) {
 +              if (this.inventory[var1] != null)
 +              {
 +                      ItemStack var3;
 +
 +                      if (this.inventory[var1].stackSize <= var2)
 +                      {
 +                              var3 = this.inventory[var1];
 +                              this.inventory[var1] = null;
 +                              this.onInventoryChanged();
 +                              return var3;
 +                      }
 +                      else
 +                      {
 +                              var3 = this.inventory[var1].splitStack(var2);
 +
 +                              if (this.inventory[var1].stackSize == 0)
 +                              {
 +                                      this.inventory[var1] = null;
 +                              }
 +
 +                              this.onInventoryChanged();
 +                              return var3;
 +                      }
 +              }
 +              else
 +              {
 +                      return null;
 +              }
 +      }
 +
 +      @Override
 +      public ItemStack getStackInSlotOnClosing(int var1) {
 +              if (this.inventory[var1] != null)
 +              {
 +                      ItemStack var2 = this.inventory[var1];
 +                      this.inventory[var1] = null;
 +                      return var2;
 +              }
 +              else
 +              {
 +                      return null;
 +              }
 +      }
 +
 +      @Override
 +      public void setInventorySlotContents(int var1, ItemStack var2) {
 +              this.inventory[var1] = var2;
 +
 +              if (var2 != null && var2.stackSize > this.getInventoryStackLimit())
 +              {
 +                      var2.stackSize = this.getInventoryStackLimit();
 +              }
 +
 +              this.onInventoryChanged();
 +      }
 +
 +      @Override
 +      public String getInvName() {
 +              return "PyrolysisTableResult";
 +      }
 +
 +      @Override
 +      public int getInventoryStackLimit() {
 +              return 64;
 +      }
 +
 +      @Override
 +      public void onInventoryChanged() {
++              if(this.eventHandler != null) this.eventHandler.onCraftMatrixChanged(this);
 +      }
 +
 +      @Override
 +      public boolean isUseableByPlayer(EntityPlayer var1) {
 +              return true;
 +      }
 +
 +      @Override
 +      public void openChest() {
 +      }
 +
 +      @Override
 +      public void closeChest() {
 +      }
 +}
index 2547632,0000000..ee8d2a4
mode 100644,000000..100644
--- /dev/null
@@@ -1,102 -1,0 +1,103 @@@
- package chemicraft.item;
- import net.minecraft.block.Block;
- import net.minecraft.block.BlockFire;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.ItemStack;
- import net.minecraft.world.World;
- import chemicraft.ChemiCraft;
- import chemicraft.ChemiCraftAPI;
- import chemicraft.util.MathHelperPlus;
- public class ItemGasCollectingBottle extends ItemAtomInfoContainer
- {
-       public ItemGasCollectingBottle(int id) {
-               super(id);
-               this.setMaxStackSize(1);
-               this.setMaxDamage(2);
-               this.setCreativeTab(ChemiCraft.instance.creativeTab);
-       }
-       @Override
-       public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
-       {
-               par1ItemStack.damageItem(1, par3EntityPlayer);
-               this.atomInfo.update(par2World, par3EntityPlayer);
-               int heightValue = par2World.getHeightValue((int) par3EntityPlayer.posX, (int) par3EntityPlayer.posZ);
-               int result1 = MathHelperPlus.probability(99, 1);
-               int result2 = MathHelperPlus.probability(78, 21, 1);
-               int result3 = MathHelperPlus.probability(0.032, 0.0018, 0.000012, 0.00052);
-               if (this.atomInfo.isOverY(heightValue)) {
-                       if (result1 == 0) {
-                               if (result2 == 0) {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 6), par3EntityPlayer);
-                               } else if (result2 == 1) {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 7), par3EntityPlayer);
-                               } else {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 17), par3EntityPlayer);
-                               }
-                       } else {
-                               if (result3 == 0) {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par3EntityPlayer);
-                               } else if (result3 == 1) {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 9), par3EntityPlayer);
-                               } else if (result3 == 2) {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, 1), par3EntityPlayer);
-                               } else {
-                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 1), par3EntityPlayer);
-                               }
-                       }
-               }
-               // デバッグ用
-               if (par2World.isRemote) {
-                       par3EntityPlayer.addChatMessage("result1=" + result1 + " result2=" + result2 + " result3=" + result3);
-               }
-               return par1ItemStack;
-       }
-       protected void isStackOrDrop(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer)
-       {
-               if (!par2EntityPlayer.inventory.addItemStackToInventory(par1ItemStack)) {
-                       par2EntityPlayer.dropPlayerItem(par1ItemStack);
-               }
-       }
-       @Override
-       public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
-       {
-               int blockID = par3World.getBlockId(par4, par5, par6);
-               Block block = Block.blocksList[blockID];
-               int uniqueBlockID = par3World.getBlockId(par4, par5 + 1, par6);
-               Block uniqueBlock = Block.blocksList[uniqueBlockID];
-               if (uniqueBlock instanceof BlockFire){
-                       par1ItemStack.damageItem(1, par2EntityPlayer);
-                       int result1 = MathHelperPlus.probability(99, 1);
-                       if (result1 == 0) {
-                               this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par2EntityPlayer);
-                       } else {
-                               this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonMonoxide")), par2EntityPlayer);
-                       }
-                       return true;
-               }
-               return false;
-       }
-       @Override
-       public String getTextureFile()
-       {
-               return "/chemicraft/items/items.png";
-       }
- }
++package chemicraft.item;\r
++\r
++import net.minecraft.block.Block;\r
++import net.minecraft.block.BlockFire;\r
++import net.minecraft.entity.player.EntityPlayer;\r
++import net.minecraft.item.ItemStack;\r
++import net.minecraft.world.World;\r
++import chemicraft.ChemiCraft;\r
++import chemicraft.ChemiCraftAPI;\r
++import chemicraft.util.MathHelperPlus;\r
++\r
++public class ItemGasCollectingBottle extends ItemAtomInfoContainer\r
++{\r
++\r
++      public ItemGasCollectingBottle(int id) {\r
++              super(id);\r
++              this.setMaxStackSize(1);\r
++              this.setMaxDamage(2);\r
++              this.setCreativeTab(ChemiCraft.instance.creativeTab);\r
++      }\r
++\r
++      @Override\r
++      public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)\r
++      {\r
++              par1ItemStack.damageItem(1, par3EntityPlayer);\r
++\r
++              this.atomInfo.update(par2World, par3EntityPlayer);\r
++\r
++              int heightValue = par2World.getHeightValue((int) par3EntityPlayer.posX, (int) par3EntityPlayer.posZ);\r
++\r
++              int result1 = MathHelperPlus.probability(99, 1);\r
++              int result2 = MathHelperPlus.probability(78, 21, 1);\r
++              int result3 = MathHelperPlus.probability(0.032, 0.0018, 0.000012, 0.00052);\r
++              if (this.atomInfo.isOverY(heightValue)) {\r
++                      if (result1 == 0) {\r
++                              if (result2 == 0) {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 6), par3EntityPlayer);\r
++                              } else if (result2 == 1) {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 7), par3EntityPlayer);\r
++                              } else {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 17), par3EntityPlayer);\r
++                              }\r
++                      } else {\r
++                              if (result3 == 0) {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par3EntityPlayer);\r
++                              } else if (result3 == 1) {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 9), par3EntityPlayer);\r
++                              } else if (result3 == 2) {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, 1), par3EntityPlayer);\r
++                              } else {\r
++                                      this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 1), par3EntityPlayer);\r
++                              }\r
++                      }\r
++              }\r
++\r
++              // デバッグ用\r
++              if (par2World.isRemote) {\r
++                      par3EntityPlayer.addChatMessage("result1=" + result1 + " result2=" + result2 + " result3=" + result3);\r
++                      par3EntityPlayer.addChatMessage("このメッセージは開発版のみの表示ですが、もし製品版で表示されていた場合はご連絡ください。");\r
++              }\r
++\r
++              return par1ItemStack;\r
++      }\r
++\r
++      protected void isStackOrDrop(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer)\r
++      {\r
++              if (!par2EntityPlayer.inventory.addItemStackToInventory(par1ItemStack)) {\r
++                      par2EntityPlayer.dropPlayerItem(par1ItemStack);\r
++              }\r
++      }\r
++\r
++      @Override\r
++      public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)\r
++      {\r
++              int blockID = par3World.getBlockId(par4, par5, par6);\r
++              Block block = Block.blocksList[blockID];\r
++\r
++              int uniqueBlockID = par3World.getBlockId(par4, par5 + 1, par6);\r
++              Block uniqueBlock = Block.blocksList[uniqueBlockID];\r
++\r
++              if (uniqueBlock instanceof BlockFire){\r
++                      par1ItemStack.damageItem(1, par2EntityPlayer);\r
++\r
++                      int result1 = MathHelperPlus.probability(90, 10);\r
++\r
++                      if (result1 == 0) {\r
++                              this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par2EntityPlayer);\r
++                      } else {\r
++                              this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonMonoxide")), par2EntityPlayer);\r
++                      }\r
++\r
++                      return true;\r
++              }\r
++              return false;\r
++      }\r
++\r
++      @Override\r
++      public String getTextureFile()\r
++      {\r
++              return "/chemicraft/items/items.png";\r
++      }\r
++\r
++}\r
index 0000000,0000000..4925d0d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++package chemicraft.slot;
++
++import net.minecraft.inventory.IInventory;
++import net.minecraft.inventory.Slot;
++
++public class SlotDecompositionTableMaterial extends Slot {
++
++      public SlotDecompositionTableMaterial(IInventory par1iInventory, int par2, int par3, int par4) {
++              super(par1iInventory, par2, par3, par4);
++      }
++
++}
index 0000000,0000000..1200f4b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++package chemicraft.slot;
++
++import net.minecraft.inventory.IInventory;
++import net.minecraft.inventory.Slot;
++import net.minecraft.item.ItemStack;
++
++public class SlotDecompositionTableResult extends Slot {
++
++      public SlotDecompositionTableResult(IInventory par1iInventory, int par2,        int par3, int par4) {
++              super(par1iInventory, par2, par3, par4);
++      }
++
++      @Override
++      public boolean isItemValid(ItemStack par1ItemStack){
++              return false;
++      }
++
++}
index 0000000,0000000..e4e70fe
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++package chemicraft.slot;
++
++import net.minecraft.inventory.IInventory;
++import net.minecraft.inventory.Slot;
++
++public class SlotElectrolysisFuel extends Slot
++{
++
++      public SlotElectrolysisFuel(IInventory par1iInventory, int par2, int par3, int par4) {
++              super(par1iInventory, par2, par3, par4);
++      }
++
++}
index 0000000,0000000..6483b88
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++package chemicraft.slot;
++
++import net.minecraft.inventory.IInventory;
++import net.minecraft.inventory.Slot;
++
++public class SlotElectrolysisMaterial extends Slot
++{
++
++      public SlotElectrolysisMaterial(IInventory par1iInventory, int par2, int par3, int par4) {
++              super(par1iInventory, par2, par3, par4);
++      }
++
++}
index 0000000,0000000..3fe451e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++package chemicraft.slot;
++
++import net.minecraft.inventory.IInventory;
++import net.minecraft.inventory.Slot;
++
++public class SlotElectrolysisResult extends Slot
++{
++
++      public SlotElectrolysisResult(IInventory par1iInventory, int par2, int par3, int par4) {
++              super(par1iInventory, par2, par3, par4);
++      }
++
++}
index 0d9ae9a,0000000..fb83ba6
mode 100644,000000..100644
--- /dev/null
@@@ -1,12 -1,0 +1,12 @@@
-       public SlotPyrolysisTableMaterial(IInventory par1iInventory, int par2, int par3, int par4) {
-               super(par1iInventory, par2, par3, par4);
 +package chemicraft.slot;
 +
 +import net.minecraft.inventory.IInventory;
 +import net.minecraft.inventory.Slot;
 +
 +public class SlotPyrolysisTableMaterial extends Slot {
 +
++      public SlotPyrolysisTableMaterial(IInventory par1IInventory, int par2, int par3, int par4) {
++              super(par1IInventory, par2, par3, par4);
 +      }
 +
 +}
index 29412ea,0000000..41d25e0
mode 100644,000000..100644
--- /dev/null
@@@ -1,18 -1,0 +1,18 @@@
-       public SlotPyrolysisTableResult(IInventory par1iInventory, int par2,    int par3, int par4) {
-               super(par1iInventory, par2, par3, par4);
 +package chemicraft.slot;
 +
 +import net.minecraft.inventory.IInventory;
 +import net.minecraft.inventory.Slot;
 +import net.minecraft.item.ItemStack;
 +
 +public class SlotPyrolysisTableResult extends Slot {
 +
-       @Override
-       public boolean isItemValid(ItemStack par1ItemStack){
++      public SlotPyrolysisTableResult(IInventory par1IInventory, int par2, int par3, int par4) {
++              super(par1IInventory, par2, par3, par4);
 +      }
 +
++      public boolean isItemValid(ItemStack par1ItemStack)
++      {
 +              return false;
 +      }
 +
 +}
index 58f4c0a,0000000..7edcb3a
mode 100644,000000..100644
--- /dev/null
@@@ -1,61 -1,0 +1,65 @@@
-               if (tileEntity instanceof TileEntityPyrolysisTable) {
-                       return new ContainerPyrolysisTable(player, (TileEntityPyrolysisTable) tileEntity);
-               }else if(tileEntity instanceof TileEntityChemicalCombinationTable){
 +package chemicraft.system;
 +
 +import net.minecraft.entity.player.EntityPlayer;
 +import net.minecraft.tileentity.TileEntity;
 +import net.minecraft.world.World;
 +import chemicraft.container.ContainerChemicalCombinationTable;
 +import chemicraft.container.ContainerChemicalCraftingTable;
++import chemicraft.container.ContainerElectrolysisTable;
 +import chemicraft.container.ContainerPyrolysisTable;
 +import chemicraft.container.ContainerToolAndWeaponCraftingTable;
 +import chemicraft.debug.DebugTick;
 +import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 +import chemicraft.tileentity.TileEntityChemicalCraftingTable;
++import chemicraft.tileentity.TileEntityElectrolysisTable;
 +import chemicraft.tileentity.TileEntityPyrolysisTable;
 +import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 +import cpw.mods.fml.common.network.IGuiHandler;
 +import cpw.mods.fml.common.registry.TickRegistry;
 +import cpw.mods.fml.relauncher.Side;
 +
 +public class CommonProxy implements IGuiHandler {
 +
 +      public void registerTextures(){
 +
 +      }
 +
 +      public void registerRenderInformation() {
 +      }
 +
 +
 +      @Override
 +      public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
 +              if (!world.blockExists(x, y, z))
 +                      return null;
 +
 +              TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
++              if(tileEntity instanceof TileEntityChemicalCombinationTable){
 +                      return new ContainerChemicalCombinationTable(player, (TileEntityChemicalCombinationTable) tileEntity);
 +              }else if(tileEntity instanceof TileEntityToolAndWeaponCraftingTable){
 +                      return new ContainerToolAndWeaponCraftingTable(player, (TileEntityToolAndWeaponCraftingTable) tileEntity);
 +              }else if(tileEntity instanceof TileEntityChemicalCraftingTable){
 +                      return new ContainerChemicalCraftingTable(player, (TileEntityChemicalCraftingTable) tileEntity);
++              }else if(tileEntity instanceof TileEntityElectrolysisTable){
++                      return new ContainerElectrolysisTable(player, (TileEntityElectrolysisTable)tileEntity);
++              } else if(tileEntity instanceof TileEntityPyrolysisTable) {
++                      return new ContainerPyrolysisTable(player, (TileEntityPyrolysisTable)tileEntity);
 +              }
 +              return null;
 +      }
 +
 +
 +      @Override
 +      public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
 +              return null;
 +      }
 +
 +      public World getClientWorld(){
 +              return null;
 +      }
 +
 +      public void registerTickHandler() {
 +              TickRegistry.registerTickHandler(new DebugTick(), Side.SERVER);
 +      }
 +
 +}
index dc90bb7,0000000..35b2dcb
mode 100644,000000..100644
--- /dev/null
@@@ -1,371 -1,0 +1,370 @@@
 +package chemicraft.tileentity;
 +
 +import java.io.DataOutputStream;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +
 +import net.minecraft.entity.item.EntityItem;
 +import net.minecraft.inventory.IInventory;
 +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 chemicraft.ChemiCraft;
 +import chemicraft.ChemiCraftData;
 +import chemicraft.inventory.InventoryChemicalCombinationTableMaterial;
 +import chemicraft.inventory.InventoryChemicalCombinationTableResult;
 +import chemicraft.system.PacketHandler;
 +import chemicraft.util.ComparatorItemStack;
 +
 +import com.google.common.io.ByteArrayDataInput;
 +
 +import cpw.mods.fml.common.network.PacketDispatcher;
 +
 +public class TileEntityChemicalCombinationTable extends TileEntity {
 +
 +      private InventoryChemicalCombinationTableMaterial invm = new InventoryChemicalCombinationTableMaterial();
 +      private InventoryChemicalCombinationTableResult invr = new InventoryChemicalCombinationTableResult();
 +
 +      private ArrayList<String> atomsList = new ArrayList<String>();
 +      private ArrayList<Integer> atomsAmountList = new ArrayList<Integer>();
 +      private int atomsListSize = 0;
 +
 +      private ItemStack dropItems;
 +
 +      private boolean isProvidePower;
 +
 +      @Override
 +      public void updateEntity(){
 +              super.updateEntity();
 +              if (this.isProvidePower && !this.worldObj.isRemote) {
 +                      this.field_00001();
 +                      this.isProvidePower = false;
 +                      PacketDispatcher.sendPacketToAllPlayers(this.getDescriptionPacket());
 +              }
 +      }
 +
 +      @Override
 +      public void readFromNBT(NBTTagCompound par1){
 +              super.readFromNBT(par1);
 +              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));
 +                      }
 +              }
 +
 +              this.atomsListSize = par1.getInteger("atomsListSize");
 +              for(int i = 0;i < this.atomsListSize;i++){
 +                      this.atomsList.add(par1.getString("atomsList" + i));
 +              }
 +              for(int i = 0;i < this.atomsListSize;i++){
 +                      this.atomsAmountList.add(par1.getInteger("atomsAmountList" + i));
 +              }
 +
 +              this.isProvidePower = par1.getBoolean("isProvidePower");
 +      }
 +
 +      @Override
 +      public void writeToNBT(NBTTagCompound par1){
 +              super.writeToNBT(par1);
 +              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);
 +
 +              this.atomsList.trimToSize();
 +              this.atomsAmountList.trimToSize();
 +              for(int i = 0;i < this.atomsList.size();i++){
 +                      par1.setString("atomsList" + i, this.atomsList.get(i));
 +              }
 +              for(int i = 0;i < this.atomsAmountList.size();i++){
 +                      par1.setInteger("atomsAmountList" + i, this.atomsAmountList.get(i));
 +              }
 +
 +              this.atomsListSize = this.atomsList.size();
 +              par1.setInteger("atomsListSize", this.atomsListSize);
 +
 +              par1.setBoolean("isProvidePower", this.isProvidePower);
 +      }
 +
 +      @Override
 +      public Packet getDescriptionPacket() {
 +              return PacketHandler.getPacket(this);
 +      }
 +
 +      public void readPacket(ByteArrayDataInput data) {
 +              try {
 +                      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);
 +                              }
 +                      }
 +
 +                      this.atomsListSize = data.readInt();
 +                      this.atomsList.clear();
 +                      this.atomsAmountList.clear();
 +                      for(int i = 0;i < this.atomsListSize;i++){
 +                              this.atomsList.add(data.readUTF());
 +                      }
 +                      for(int i = 0;i < this.atomsListSize;i++){
 +                              this.atomsAmountList.add(data.readInt());
 +                      }
 +
 +                      ItemStack itemstack = new ItemStack(data.readInt(), data.readByte(), data.readInt());
 +                      if(itemstack.itemID != 0 && !this.worldObj.isRemote){
 +                              this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord + 1, this.zCoord, itemstack));
 +                      }
 +                      this.dropItems = null;
 +
 +                      this.isProvidePower = data.readBoolean();
 +              } catch (Exception e) {
 +                      e.printStackTrace();
 +              }
 +      }
 +
 +      public void writePacket(DataOutputStream dos){
 +              try {
 +                      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);
 +                              }
 +                      }
 +
 +                      dos.writeInt(this.atomsList.size());
 +                      for(int i = 0;i < this.atomsList.size();i++){
 +                              dos.writeUTF(this.atomsList.get(i));
 +                      }
 +                      for(int i = 0;i < this.atomsAmountList.size();i++){
 +                              dos.writeInt(this.atomsAmountList.get(i));
 +                      }
 +
 +                      if (this.dropItems != null){
 +                              int id = this.dropItems.itemID;
 +                              int size = this.dropItems.stackSize;
 +                              int damage = this.dropItems.getItemDamage();
 +                              dos.writeInt(id);
 +                              dos.writeByte(size);
 +                              dos.writeInt(damage);
 +                      }else{
 +                              dos.writeInt(0);
 +                              dos.writeByte(0);
 +                              dos.writeInt(0);
 +                      }
 +                      this.dropItems = null;
 +
 +                      dos.writeBoolean(this.isProvidePower);
 +              } catch (Exception e) {
 +                      e.printStackTrace();
 +              }
 +      }
 +
 +      public void setAtoms(String par1, int par2){
 +              if (this.atomsList.indexOf(par1) != -1){
 +                      int var1 = this.atomsList.indexOf(par1);
 +                      this.atomsAmountList.set(var1, this.atomsAmountList.get(var1) + par2);
 +              }else{
 +                      this.atomsList.add(par1);
 +                      this.atomsAmountList.add(par2);
 +              }
 +              PacketDispatcher.sendPacketToAllPlayers(this.getDescriptionPacket());
 +      }
 +
 +      public void setDropItems(ItemStack par1ItemStack){
 +              this.dropItems = par1ItemStack;
 +      }
 +
 +      public String getAtoms(){
 +              StringBuffer var1 = new StringBuffer();
 +              for(int i = 0;i < this.atomsList.size();i++){
 +                      if (this.atomsAmountList.get(i) != 1){
 +                              var1.append(this.atomsList.get(i) + this.atomsAmountList.get(i));
 +                      }else{
 +                              var1.append(this.atomsList.get(i));
 +                      }
 +              }
 +              return var1.toString();
 +      }
 +
 +      public ArrayList<String> getAtomsList(){
 +              return this.atomsList;
 +      }
 +
 +      public ArrayList<Integer> getAtomsAmountList(){
 +              return this.atomsAmountList;
 +      }
 +
 +      public void emptytoAtomsList(){
 +              this.atomsList.clear();
 +              this.atomsAmountList.clear();
 +      }
 +
 +      public void setProvidePower(boolean par1) {
 +              this.isProvidePower = par1;
 +      }
 +
 +      public boolean getProvidePower() {
 +              return this.isProvidePower;
 +      }
 +
 +      public void field_00001() {
 +              IInventory inv = this.getInvMaterial();
 +              ItemStack[] stacks = new ItemStack[inv.getSizeInventory()];
 +              for(int i = 0;i < stacks.length;i++){
 +                      if(inv.getStackInSlot(i) != null){
 +                              stacks[i] = inv.getStackInSlot(i);
 +                      }
 +              }
 +              Arrays.sort(stacks, new ComparatorItemStack());
 +              stacks = ChemiCraft.instance.arrayAuxiliary.deleteNull(stacks);
 +
 +              for(int i = 0;i < stacks.length;i++){
 +                      if(stacks[i].stackSize > 1){
 +                              this.setAtoms(ChemiCraftData.ATOMSLIST[stacks[i].getItemDamage()], stacks[i].stackSize);
 +                      }else{
 +                              this.setAtoms(ChemiCraftData.ATOMSLIST[stacks[i].getItemDamage()], 1);
 +                      }
 +              }
 +
 +              for(int i = 0;i < inv.getSizeInventory();i++){
 +                      inv.setInventorySlotContents(i, null);
 +              }
 +      }
 +
 +      public void field_00002() {
 +              ArrayList<String> var1 = this.getAtomsList();
 +              ArrayList<Integer> var2 = this.getAtomsAmountList();
 +
 +              for (int i = 0;i < var1.size();i++) {
 +                      for (int j = 0;j < ChemiCraftData.ATOMSLIST.length;j++) {
 +                              if (var1.get(i).equals(ChemiCraftData.ATOMSLIST[j])) {
 +                                      int var3 = var2.get(i);
 +                                      while(var3 > 0){
 +                                              if(var3 > 64){
 +                                                      ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, 64, j);
 +                                                      this.setDropItems(itemstack);
 +                                                      PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
 +                                                      var3 -= 64;
 +                                              }else{
 +                                                      ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, var3, j);
 +                                                      this.setDropItems(itemstack);
 +                                                      PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
 +                                                      var3 = 0;
 +                                              }
 +                                      }
 +                                      break;
 +                              }
 +                      }
 +              }
 +              IInventory invr = this.getInvResult();
 +              if (invr.getStackInSlot(0) != null) {
 +                      invr.setInventorySlotContents(0, null);
 +              }
 +              this.emptytoAtomsList();
 +      }
 +
 +      protected boolean isNumber(String par1){
 +              try {
 +                      int var1 = Integer.valueOf(new String(par1));
 +              } catch (Exception e) {
 +                      return false;
 +              }
 +              return true;
 +      }
 +
 +      public InventoryChemicalCombinationTableMaterial getInvMaterial(){
 +              return this.invm;
 +      }
 +
 +      public InventoryChemicalCombinationTableResult getInvResult(){
 +              return this.invr;
 +      }
 +
 +}
index 0000000,0000000..aab7b14
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,57 @@@
++package chemicraft.tileentity;
++
++import net.minecraft.nbt.NBTTagCompound;
++import net.minecraft.network.packet.Packet;
++import net.minecraft.tileentity.TileEntity;
++import chemicraft.inventory.InventoryElectrolysisFuel;
++import chemicraft.inventory.InventoryElectrolysisMaterial;
++import chemicraft.inventory.InventoryElectrolysisResult;
++
++public class TileEntityElectrolysisTable extends TileEntity
++{
++
++      private InventoryElectrolysisMaterial invm = new InventoryElectrolysisMaterial();
++      private InventoryElectrolysisResult invr = new InventoryElectrolysisResult();
++      private InventoryElectrolysisFuel invf = new InventoryElectrolysisFuel();
++
++      public TileEntityElectrolysisTable() {
++              
++      }
++
++      @Override
++      public void readFromNBT(NBTTagCompound par1nbtTagCompound)
++      {
++              super.readFromNBT(par1nbtTagCompound);
++      }
++
++      @Override
++      public void writeToNBT(NBTTagCompound par1nbtTagCompound)
++      {
++              super.writeToNBT(par1nbtTagCompound);
++      }
++
++      @Override
++      public void updateEntity()
++      {
++              
++      }
++
++      @Override
++      public Packet getDescriptionPacket()
++      {
++              return super.getDescriptionPacket();
++      }
++
++      public InventoryElectrolysisMaterial getInvMaterial(){
++              return this.invm;
++      }
++
++      public InventoryElectrolysisResult getInvResult(){
++              return this.invr;
++      }
++
++      public InventoryElectrolysisFuel getInvFuel(){
++              return this.invf;
++      }
++
++}
index 40fd89e,0000000..02b592d
mode 100644,000000..100644
--- /dev/null
@@@ -1,509 -1,0 +1,503 @@@
- import chemicraft.debug.DebugData;
- import chemicraft.debug.DebugTick;
 +package 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 cpw.mods.fml.common.network.PacketDispatcher;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
 +import chemicraft.inventory.InventoryPyrolysisTableFuel;
 +import chemicraft.inventory.InventoryPyrolysisTableMaterial;
 +import chemicraft.inventory.InventoryPyrolysisTableResult;
 +import chemicraft.system.PacketHandler;
 +
 +import com.google.common.io.ByteArrayDataInput;
 +
 +public class TileEntityPyrolysisTable extends TileEntity {
 +
 +      private InventoryPyrolysisTableMaterial invm = new InventoryPyrolysisTableMaterial();
 +      private InventoryPyrolysisTableResult invr = new InventoryPyrolysisTableResult();
 +      private InventoryPyrolysisTableFuel invf = new InventoryPyrolysisTableFuel();
 +
 +      /**
 +       * 熱量
 +       */
 +      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, Integer> fuelList = new HashMap<ItemStack, Integer>();
 +
 +      /**
 +       * レシピのリスト
 +       */
 +      private static HashMap<ItemStack, ItemStack[]> recipeList = new HashMap<ItemStack, ItemStack[]>();
 +
 +      @Override
 +      public void updateEntity() {
 +
 +              //boolean var2 = false;
 +
 +              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 += 3F;
 +                              }
 +                      } 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 = fuelList.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 = fuelList.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;
 +                      }
 +              }
 +
 +              /*
 +              DebugTick.setDebugData("PyrolysisTable" +
 +                              "(x:" + this.xCoord +
 +                              " y:" + this.yCoord +
 +                              " z:" + this.zCoord + ")",
 +                              new DebugData("Heat", this.heat),
 +                              new DebugData("FuelRestTime", this.fuelRestTime),
 +                              new DebugData("BurnTime", this.burnTime),
 +                              new DebugData("アイテムが入るか", var2)
 +                              );
 +               */
 +      }
 +
 +      @Override
 +      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 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 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 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 InventoryPyrolysisTableMaterial getInvMaterial() {
 +              return this.invm;
 +      }
 +
 +      public InventoryPyrolysisTableResult getInvResult() {
 +              return this.invr;
 +      }
 +
 +      public InventoryPyrolysisTableFuel getInvFuel() {
 +              return this.invf;
 +      }
 +
 +      public boolean isInItemCheck(ItemStack key) {
 +              ItemStack[] results = recipeList.get(key).clone();
 +              ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
 +              for (int i = 0; i < this.invr.getSizeInventory(); i++) {
 +                      containerResults[i] = this.invr.getStackInSlot(i);
 +              }
 +
 +              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) {
 +                                      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) {
 +                                                      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);
 +              ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
 +              for (int i = 0; i < this.invr.getSizeInventory(); i++) {
 +                      containerResults[i] = this.invr.getStackInSlot(i);
 +              }
 +
 +              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) {
 +                                      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) {
 +                                                      System.out.println(var5);
 +                                                      System.out.println(var6);
 +                                                      System.out.println(var5 + var6);
 +                                                      System.out.println(i);
 +                                                      System.out.println(j);
 +                                                      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;
 +                                              }
 +                                      }
 +                              }
 +                      }
 +              }
 +      }
 +
 +      public static void addFuel(ItemStack itemstack, int burnTime) {
 +              fuelList.put(itemstack, burnTime);
 +      }
 +
 +      public static void addRecipe(ItemStack material, ItemStack[] result) {
 +              recipeList.put(material, result);
 +      }
 +
 +}
index 0000000,227555e..1766554
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,363 +1,712 @@@
 -}
++<<<<<<< HEAD:common/chemicraft/ChemiCraft.java
++package chemicraft;\r
++\r
++import net.minecraft.block.Block;\r
++import net.minecraft.block.material.Material;\r
++import net.minecraft.creativetab.CreativeTabs;\r
++import net.minecraft.item.Item;\r
++import net.minecraft.item.ItemStack;\r
++import net.minecraftforge.common.BiomeManager;\r
++import net.minecraftforge.common.Configuration;\r
++import net.minecraftforge.common.DimensionManager;\r
++import net.minecraftforge.common.Property;\r
++import chemicraft.block.BlockChemicalCombinationTable;\r
++import chemicraft.block.BlockChemicalCraftingTable;\r
++import chemicraft.block.BlockPyrolysisTable;\r
++import chemicraft.block.BlockToolAndWeaponCraftingTable;\r
++import chemicraft.compounds.CompoundWater;\r
++import chemicraft.debug.CommandDeleteItem;\r
++import chemicraft.debug.CommandGenDebugRoom;\r
++import chemicraft.debug.CommandSetTile;\r
++import chemicraft.item.ItemAtoms;\r
++import chemicraft.item.ItemAtomsGrenade;\r
++import chemicraft.item.ItemCompounds;\r
++import chemicraft.item.ItemGasCollectingBottle;\r
++import chemicraft.system.CommonProxy;\r
++import chemicraft.system.PacketHandler;\r
++import chemicraft.tileentity.TileEntityChemicalCombinationTable;\r
++import chemicraft.tileentity.TileEntityChemicalCraftingTable;\r
++import chemicraft.tileentity.TileEntityPyrolysisTable;\r
++import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;\r
++import chemicraft.util.Auxiliary;\r
++import chemicraft.util.Auxiliary.ArrayAuxiliary;\r
++import chemicraft.util.Auxiliary.NameAuxiliary;\r
++import chemicraft.util.CreativeTabAtoms;\r
++import chemicraft.util.NBTRecipeGrenade;\r
++import chemicraft.util.WorldProviderChemical;\r
++import cpw.mods.fml.common.Mod;\r
++import cpw.mods.fml.common.SidedProxy;\r
++import cpw.mods.fml.common.event.FMLPostInitializationEvent;\r
++import cpw.mods.fml.common.event.FMLPreInitializationEvent;\r
++import cpw.mods.fml.common.event.FMLServerStartingEvent;\r
++import cpw.mods.fml.common.network.NetworkMod;\r
++import cpw.mods.fml.common.network.NetworkRegistry;\r
++import cpw.mods.fml.common.registry.GameRegistry;\r
++\r
++/**\r
++ * ChemiCraft本体\r
++ * @author P.C.C.\r
++ *\r
++ */\r
++@Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")\r
++@NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)\r
++public class ChemiCraft {\r
++\r
++      public static final String[] ATOMSNAME = {\r
++              "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",\r
++              "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",\r
++              "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",\r
++              "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",\r
++              "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",\r
++              "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",\r
++              "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",\r
++              "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };\r
++\r
++      public static final String[] ATOMSNAMEJP = {\r
++              "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",\r
++              "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",\r
++              "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",\r
++              "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",\r
++              "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",\r
++              "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };\r
++\r
++      /**\r
++       * このmodのインスタンス\r
++       */\r
++      @Mod.Instance("chemiCraft")\r
++      public static ChemiCraft instance;\r
++\r
++      /**\r
++       * ChemiCraftのProxy.\r
++       */\r
++      @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")\r
++      public static CommonProxy proxy;\r
++\r
++      /**\r
++       * ChemiCraftのCreativeTab.\r
++       */\r
++      public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");\r
++\r
++      /**\r
++       * ItemID.\r
++       */\r
++      public int atomsID;\r
++      public int compoundsID;\r
++      public int gasCollectingBottleID;\r
++      public int atomGrenadeID;\r
++\r
++      /**\r
++       * BlockID.\r
++       */\r
++      public int pyrolysisTableID;\r
++      public int chemicalConbinationTableID;\r
++      public int toolAndWeaponCraftingTableID;\r
++      public int chemicalCraftingTableID;\r
++\r
++      /**\r
++       * GUIID.\r
++       */\r
++      public int guiPyrolysisTableID;\r
++      public int guiChemicalCombinationTableID;\r
++      public int guiToolAndWeaponCraftingTableID;\r
++      public int guiChemicalCraftingTableID;\r
++\r
++      /**\r
++       * Block型変数.\r
++       */\r
++      public Block blockPyrolysisTable;\r
++      public Block blockChemicalCombinationTable;\r
++      public Block blockToolAndWeaponCraftingTable;\r
++      public Block blockChemicalCraftingTable;\r
++\r
++      /**\r
++       * Item型変数.\r
++       */\r
++      public Item itemAtoms;\r
++      public Item itemCompounds;\r
++      public Item itemGasCollectingBottle;\r
++      public Item itemAtomGrenade;\r
++\r
++      /**\r
++       * このmodで使用するTextureのパス.\r
++       */\r
++      public String itemAtomsTexture = "/chemicraft/items/Atoms.png";\r
++      public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";\r
++      public String itemTexture = "/chemicraft/items/items.png";\r
++      public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/cctable.png";\r
++      public String guiPyrolysisTexture = "/chemicraft/guis/Pyrolysis.png";\r
++      public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";\r
++      public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";\r
++      public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";\r
++\r
++      /**\r
++       * このmodに必要な補助クラスのインスタンス.\r
++       */\r
++      public Auxiliary auxiliary = new Auxiliary();\r
++      public NameAuxiliary nameAuxiliary = new NameAuxiliary();\r
++      public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();\r
++\r
++      private ChemiCraftAPI api = ChemiCraftAPI.getInstance();\r
++      private ChemiCraftData chemicalData = new ChemiCraftData();\r
++\r
++      @Mod.PreInit\r
++      public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {\r
++              Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());\r
++              cfg.load();\r
++\r
++              Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);\r
++              Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);\r
++              Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);\r
++              Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);\r
++\r
++              Property atomsIDProp = cfg.getItem("AtomsID", 25000);\r
++              Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);\r
++              Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);\r
++              Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);\r
++\r
++              Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);\r
++              Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);\r
++              Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);\r
++              Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);\r
++\r
++\r
++              this.pyrolysisTableID = pyrolysisTableIDProp.getInt();\r
++              this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();\r
++              this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();\r
++              this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();\r
++              this.atomsID = atomsIDProp.getInt();\r
++              this.compoundsID = compoundsIDProp.getInt();\r
++              this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();\r
++              this.atomGrenadeID = atomGrenadeIDProp.getInt();\r
++              this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();\r
++              this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();\r
++              this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();\r
++              this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();\r
++\r
++              cfg.save();\r
++      }\r
++\r
++      @Mod.ServerStarting\r
++      public void serverStarting(final FMLServerStartingEvent event) {\r
++              event.registerServerCommand(new CommandSetTile());\r
++              event.registerServerCommand(new CommandDeleteItem());\r
++              event.registerServerCommand(new CommandGenDebugRoom());\r
++      }\r
++\r
++      @Mod.PostInit\r
++      public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {\r
++              this.settingProcessing(event);\r
++              this.apiProcessing(event);\r
++              this.debug(event);\r
++      }\r
++\r
++      private void settingProcessing(final FMLPostInitializationEvent event) {\r
++\r
++              // Blockを追加します\r
++              this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).\r
++                              setHardness(2.0F).\r
++                              setResistance(0.0F).\r
++                              setStepSound(Block.soundStoneFootstep).\r
++                              setBlockName("PyrolysisTable");\r
++              this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).\r
++                              setHardness(2.0F).\r
++                              setResistance(0.0F).\r
++                              setStepSound(Block.soundStoneFootstep).\r
++                              setBlockName("ChemicalCombinationTable");\r
++              this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).\r
++                              setHardness(2.0F).\r
++                              setResistance(0.0F).\r
++                              setStepSound(Block.soundStoneFootstep).\r
++                              setBlockName("ToolAndWeaponCraftingTable");\r
++              this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).\r
++                              setHardness(2.0F).\r
++                              setResistance(0.0F).\r
++                              setStepSound(Block.soundStoneFootstep).\r
++                              setBlockName("ChemicalCraftingTable");\r
++\r
++              // Itemを追加します\r
++              this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");\r
++              this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");\r
++              this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);\r
++              this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);\r
++\r
++              // BlockをMinecraftに登録します\r
++              GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");\r
++              GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");\r
++              GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");\r
++              GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");\r
++\r
++              // Blockの名前を設定します\r
++              this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");\r
++              this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");\r
++              this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");\r
++              this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");\r
++              this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");\r
++              this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");\r
++              this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");\r
++              this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");\r
++\r
++              // Itemの名前を設定します\r
++              this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);\r
++              this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);\r
++              this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");\r
++              this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");\r
++              this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");\r
++              this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");\r
++\r
++              // TileEntityを追加します\r
++              GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");\r
++              GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");\r
++              GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");\r
++              GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");\r
++\r
++              // GUIを追加します\r
++              NetworkRegistry.instance().registerGuiHandler(instance, proxy);\r
++\r
++              // 描画関係の読み込み\r
++              proxy.registerRenderInformation();\r
++\r
++              //化学作業台類のレシピを追加します\r
++              GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),\r
++                              new Object[]{\r
++                      "XYX", "ZAZ", "ZZZ",\r
++                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
++                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
++                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
++                      Character.valueOf('A'), new ItemStack(Item.bucketLava),\r
++              });\r
++              GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),\r
++                              new Object[]{\r
++                      "XYX", "ZAZ", "ZZZ",\r
++                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
++                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
++                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
++                      Character.valueOf('A'), new ItemStack(Block.obsidian),\r
++              });\r
++              GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),\r
++                              new Object[]{\r
++                      "XYX", "ZAZ", "ZZZ",\r
++                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
++                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
++                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
++                      Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),\r
++              });\r
++              GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),\r
++                              new Object[]{\r
++                      "XYX", "ZAZ", "ZZZ",\r
++                      Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
++                      Character.valueOf('Y'), new ItemStack(Block.workbench),\r
++                      Character.valueOf('Z'), new ItemStack(Block.stone),\r
++                      Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),\r
++              });\r
++\r
++              // 化合物を追加します\r
++              api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");\r
++              api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");\r
++              api.addLangCompound("ja_JP", "Water", "水");\r
++              api.addCompound("Test");\r
++
++\r
++              //化合物のHandlerを設定します\r
++              api.settingCompoundHandler("Water", new CompoundWater());\r
++\r
++              //化合物のレシピを追加します\r
++              api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));\r
++\r
++              //手榴弾の追加\r
++              api.addMaterialRecipe(\r
++                              new ItemStack[]{\r
++                                              null,\r
++                                              new ItemStack(Block.stone),\r
++                                              null,\r
++                                              new ItemStack(Block.stone),\r
++                                              new ItemStack(Item.gunpowder),\r
++                                              new ItemStack(Block.stone),\r
++                                              null,\r
++                                              new ItemStack(Block.stone),\r
++                                              null\r
++                              },\r
++                              new ItemStack(this.itemAtomGrenade, 16, 0),\r
++                              new NBTRecipeGrenade()\r
++                              );\r
++              //Tickingの追加\r
++              this.proxy.registerTickHandler();\r
++      }\r
++\r
++      private void apiProcessing(final FMLPostInitializationEvent event) {\r
++              // API用の処理\r
++              this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());\r
++              for (int i = 0; i < api.getCompoundsLang().size(); i++) {\r
++                      this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());\r
++              }\r
++      }\r
++\r
++      private void debug(final FMLPostInitializationEvent event) {\r
++      }\r
++\r
++}\r
++=======
+ package chemicraft;
+ import net.minecraft.block.Block;
+ import net.minecraft.block.material.Material;
+ import net.minecraft.creativetab.CreativeTabs;
+ import net.minecraft.item.Item;
+ import net.minecraft.item.ItemStack;
+ import net.minecraftforge.common.Configuration;
+ import net.minecraftforge.common.Property;
+ import chemicraft.block.BlockChemicalCombinationTable;
+ import chemicraft.block.BlockChemicalCraftingTable;
+ import chemicraft.block.BlockDecompositionTable;
+ import chemicraft.block.BlockElectrolysisTable;
+ import chemicraft.block.BlockToolAndWeaponCraftingTable;
+ import chemicraft.compounds.CompoundWater;
+ import chemicraft.debug.CommandDeleteItem;
+ import chemicraft.debug.CommandGenDebugRoom;
+ import chemicraft.debug.CommandSetTile;
+ import chemicraft.item.ItemAtoms;
+ import chemicraft.item.ItemAtomsGrenade;
+ import chemicraft.item.ItemCompounds;
+ import chemicraft.item.ItemGasCollectingBottle;
+ import chemicraft.system.CommonProxy;
+ import chemicraft.system.PacketHandler;
+ import chemicraft.tileentity.TileEntityChemicalCombinationTable;
+ import chemicraft.tileentity.TileEntityChemicalCraftingTable;
+ import chemicraft.tileentity.TileEntityDecompositionTable;
+ import chemicraft.tileentity.TileEntityElectrolysisTable;
+ import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
+ import chemicraft.util.Auxiliary;
+ import chemicraft.util.Auxiliary.ArrayAuxiliary;
+ import chemicraft.util.Auxiliary.NameAuxiliary;
+ import chemicraft.util.CreativeTabAtoms;
+ import chemicraft.util.NBTRecipeGrenade;
+ import cpw.mods.fml.common.Mod;
+ import cpw.mods.fml.common.SidedProxy;
+ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+ import cpw.mods.fml.common.event.FMLServerStartingEvent;
+ import cpw.mods.fml.common.network.NetworkMod;
+ import cpw.mods.fml.common.network.NetworkRegistry;
+ import cpw.mods.fml.common.registry.GameRegistry;
+ /**
+  * ChemiCraft本体
+  * @author P.C.C.
+  *
+  */
+ @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
+ // ID,名前,バージョン
+ @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
+ // クライアント、サーバー共に必要 1.3.2用
+ public class ChemiCraft {
+       public static final String[] ATOMSNAME = {
+               "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
+               "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
+               "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
+               "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
+               "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
+               "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
+               "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
+               "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
+       public static final String[] ATOMSNAMEJP = {
+               "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
+               "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
+               "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
+               "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
+               "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
+               "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
+       /**
+        * このmodのインスタンス
+        */
+       @Mod.Instance("chemiCraft")
+       public static ChemiCraft instance;
+       /**
+        * ChemiCraftのProxy.
+        */
+       @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")
+       public static CommonProxy proxy;
+       /**
+        * ChemiCraftのCreativeTab.
+        */
+       public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
+       /**
+        * ItemID.
+        */
+       public int atomsID;
+       public int compoundsID;
+       public int gasCollectingBottleID;
+       public int atomGrenadeID;
+       /**
+        * BlockID.
+        */
+       public int decompositionTableID;
+       public int chemicalConbinationTableID;
+       public int toolAndWeaponCraftingTableID;
+       public int chemicalCraftingTableID;
+       public int electrolysisTableID;
+       /**
+        * GUIID.
+        */
+       public int guiDecompositionTableID;
+       public int guiChemicalCombinationTableID;
+       public int guiToolAndWeaponCraftingTableID;
+       public int guiChemicalCraftingTableID;
+       public int guiElectrolysisTableID;
+       /**
+        * Block型変数.
+        */
+       public Block blockDecompositionTable;
+       public Block blockChemicalCombinationTable;
+       public Block blockToolAndWeaponCraftingTable;
+       public Block blockChemicalCraftingTable;
+       public Block blockElectrolysisTable;
+       /**
+        * Item型変数.
+        */
+       public Item itemAtoms;
+       public Item itemCompounds;
+       public Item itemGasCollectingBottle;
+       public Item itemAtomGrenade;
+       /**
+        * このmodで使用するTextureのパス.
+        */
+       public String itemAtomsTexture = "/chemicraft/items/Atoms.png";
+       public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";
+       public String itemTexture = "/chemicraft/items/items.png";
+       public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/CCTable.png";
+       public String guiDecompositionTexture = "/chemicraft/guis/Decomposition.png";
+       public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";
+       public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";
+       public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";
+       public String guiElectrolysisTableTexture = "/chemicraft/guis/ElectrolysisTable.png";
+       /**
+        * このmodに必要な補助クラスのインスタンス.
+        */
+       public Auxiliary auxiliary = new Auxiliary();
+       public NameAuxiliary nameAuxiliary = new NameAuxiliary();
+       public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
+       private ChemiCraftAPI api = ChemiCraftAPI.getInstance();
+       private ChemiCraftData chemicalData = new ChemiCraftData();
+       @Mod.PreInit
+       public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
+               Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
+               cfg.load();
+               Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);
+               Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
+               Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
+               Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
+               Property electrolysisTableIDProp = cfg.getBlock("ElectrolysisTableID", 2404);
+               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 guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);
+               Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
+               Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
+               Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
+               Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableID", 1004);
+               this.decompositionTableID = decompositionTableIDProp.getInt();
+               this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
+               this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
+               this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
+               this.electrolysisTableID = electrolysisTableIDProp.getInt();
+               this.atomsID = atomsIDProp.getInt();
+               this.compoundsID = compoundsIDProp.getInt();
+               this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
+               this.atomGrenadeID = atomGrenadeIDProp.getInt();
+               this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();
+               this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
+               this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
+               this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
+               this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
+               cfg.save();
+       }
+       @Mod.ServerStarting
+       public void serverStarting(final FMLServerStartingEvent event) {
+               event.registerServerCommand(new CommandSetTile());
+               event.registerServerCommand(new CommandDeleteItem());
+               event.registerServerCommand(new CommandGenDebugRoom());
+       }
+       @Mod.PostInit
+       public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
+               this.settingProcessing(event);
+               this.apiProcessing(event);
+               this.debug(event);
+       }
+       private void settingProcessing(final FMLPostInitializationEvent event) {
+               // Blockを追加します
+               this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).
+                               setHardness(2.0F).
+                               setResistance(0.0F).
+                               setStepSound(Block.soundStoneFootstep).
+                               setBlockName("DecompositionTable");
+               this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).
+                               setHardness(2.0F).
+                               setResistance(0.0F).
+                               setStepSound(Block.soundStoneFootstep).
+                               setBlockName("ChemicalCombinationTable");
+               this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).
+                               setHardness(2.0F).
+                               setResistance(0.0F).
+                               setStepSound(Block.soundStoneFootstep).
+                               setBlockName("ToolAndWeaponCraftingTable");
+               this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).
+                               setHardness(2.0F).
+                               setResistance(0.0F).
+                               setStepSound(Block.soundStoneFootstep).
+                               setBlockName("ChemicalCraftingTable");
+               this.blockElectrolysisTable = new BlockElectrolysisTable(electrolysisTableID, 0, Material.ground).
+                               setHardness(2.0F).
+                               setResistance(0.0F).
+                               setStepSound(Block.soundStoneFootstep).
+                               setBlockName("ElectrolysisTable");
+               // Itemを追加します
+               this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
+               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);
+               // BlockをMinecraftに登録します
+               GameRegistry.registerBlock(this.blockDecompositionTable, "BlockDecompositionTable");
+               GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
+               GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
+               GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
+               GameRegistry.registerBlock(this.blockElectrolysisTable, "ElectrolysisTable");
+               // Blockの名前を設定します
+               this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");
+               this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");
+               this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
+               this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
+               this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
+               this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
+               this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
+               this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
+               this.nameAuxiliary.addName(this.blockElectrolysisTable, "ElectrolysisTable");
+               this.nameAuxiliary.addName(this.blockElectrolysisTable, "ja_JP", "電気分解台");
+               // Itemの名前を設定します
+               this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
+               this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
+               this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
+               this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
+               this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
+               this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
+               // TileEntityを追加します
+               GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");
+               GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
+               GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
+               GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
+               GameRegistry.registerTileEntity(TileEntityElectrolysisTable.class, "TileEntityElectrolysisTable");
+               // GUIを追加します
+               NetworkRegistry.instance().registerGuiHandler(instance, proxy);
+               // 描画関係の読み込み
+               proxy.registerRenderInformation();
+               //化学作業台類のレシピを追加します
+               GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),
+                               new Object[]{
+                       "XYX", "ZAZ", "ZZZ",
+                       Character.valueOf('X'), new ItemStack(Item.ingotIron),
+                       Character.valueOf('Y'), new ItemStack(Block.workbench),
+                       Character.valueOf('Z'), new ItemStack(Block.stone),
+                       Character.valueOf('A'), new ItemStack(Block.tnt),
+               });
+               GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
+                               new Object[]{
+                       "XYX", "ZAZ", "ZZZ",
+                       Character.valueOf('X'), new ItemStack(Item.ingotIron),
+                       Character.valueOf('Y'), new ItemStack(Block.workbench),
+                       Character.valueOf('Z'), new ItemStack(Block.stone),
+                       Character.valueOf('A'), new ItemStack(Block.obsidian),
+               });
+               GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
+                               new Object[]{
+                       "XYX", "ZAZ", "ZZZ",
+                       Character.valueOf('X'), new ItemStack(Item.ingotIron),
+                       Character.valueOf('Y'), new ItemStack(Block.workbench),
+                       Character.valueOf('Z'), new ItemStack(Block.stone),
+                       Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
+               });
+               GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
+                               new Object[]{
+                       "XYX", "ZAZ", "ZZZ",
+                       Character.valueOf('X'), new ItemStack(Item.ingotIron),
+                       Character.valueOf('Y'), new ItemStack(Block.workbench),
+                       Character.valueOf('Z'), new ItemStack(Block.stone),
+                       Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
+               });
+               // 化合物を追加します
+               api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
+               api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
+               api.addLangCompound("ja_JP", "Water", "水");
+               api.addCompound("Test");
+               //化合物のHandlerを設定します
+               api.settingCompoundHandler("Water", new CompoundWater());
+               //化合物のレシピを追加します
+               api.addChemicalCombinationRecipe(new String[]{"C", "O"}, new Integer[]{1, 2}, new ItemStack(this.itemCompounds, 1, api.getCompound("CarbonDioxide")));
+               api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));
+               //手榴弾の追加
+               api.addMaterialRecipe(
+                               new ItemStack[]{
+                                               null,
+                                               new ItemStack(Block.stone),
+                                               null,
+                                               new ItemStack(Block.stone),
+                                               new ItemStack(Item.gunpowder),
+                                               new ItemStack(Block.stone),
+                                               null,
+                                               new ItemStack(Block.stone),
+                                               null
+                               },
+                               new ItemStack(this.itemAtomGrenade, 16, 0),
+                               new NBTRecipeGrenade()
+                               );
+       }
+       private void apiProcessing(final FMLPostInitializationEvent event) {
+               // API用の処理
+               this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());
+               for (int i = 0; i < api.getCompoundsLang().size(); i++) {
+                       this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());
+               }
+       }
+       private void debug(final FMLPostInitializationEvent event) {
+       }
++}
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/ChemiCraft.java
index 0000000,d04afa8..4594867
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,50 +1,69 @@@
+ package chemicraft.block;
+ import net.minecraft.block.BlockContainer;
+ import net.minecraft.block.material.Material;
+ import net.minecraft.entity.player.EntityPlayer;
+ import net.minecraft.tileentity.TileEntity;
+ import net.minecraft.world.World;
+ import chemicraft.ChemiCraft;
++<<<<<<< HEAD:common/chemicraft/block/BlockPyrolysisTable.java
++import chemicraft.debug.DebugTick;
++import chemicraft.tileentity.TileEntityPyrolysisTable;
++=======
+ import chemicraft.tileentity.TileEntityDecompositionTable;
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/block/BlockDecompositionTable.java
+ public class BlockDecompositionTable extends BlockContainer {
+       public BlockDecompositionTable(int par1, int par2, Material par3Material) {
+               super(par1, par2, par3Material);
+               this.setCreativeTab(ChemiCraft.creativeTab);
+       }
+       @Override
+       public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9){
+               par5EntityPlayer.openGui(ChemiCraft.instance, ChemiCraft.instance.guiDecompositionTableID, par1World, par2, par3, par4);
+               return true;
+       }
+       @Override
+       public String getTextureFile(){
+               return ChemiCraft.instance.blockChemicalCraftingTableTexture;
+       }
+       @Override
++      public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) {
++              TileEntity tileentity = par1World.getBlockTileEntity(par2, par3, par4);
++              if (tileentity != null) {
++                      DebugTick.removeDebugData("PyrolysisTable" +
++                                      "(x:" + tileentity.xCoord +
++                                      " y:" + tileentity.yCoord +
++                                      " z:" + tileentity.zCoord + ")");
++              }
++              super.breakBlock(par1World, par2, par3, par4, par5, par6);
++      }
++
++
++
++      @Override
+       public int getBlockTextureFromSide(int par1)
+       {
+               if(par1 == 0){
+                       return 17;
+               }else if(par1 == 1){
+                       return 0;
+               }else{
+                       return 16;
+               }
+       }
+       @Override
+       public TileEntity createNewTileEntity(World var1) {
+               return new TileEntityDecompositionTable();
+       }
+ }
index 0000000,b46340d..95a454a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,30 +1,67 @@@
+ package chemicraft.container;
+ import net.minecraft.entity.player.EntityPlayer;
+ import net.minecraft.inventory.Container;
++import net.minecraft.inventory.Slot;
+ import net.minecraft.world.World;
+ import chemicraft.ChemiCraft;
++<<<<<<< HEAD:common/chemicraft/container/ContainerPyrolysisTable.java
++import chemicraft.slot.SlotPyrolysisTableFuel;
++import chemicraft.slot.SlotPyrolysisTableMaterial;
++import chemicraft.slot.SlotPyrolysisTableResult;
++import chemicraft.tileentity.TileEntityPyrolysisTable;
++=======
+ import chemicraft.tileentity.TileEntityDecompositionTable;
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/container/ContainerDecompositionTable.java
+ public class ContainerDecompositionTable extends Container {
+       private World worldObj;
+       private int posX;
+       private int posY;
+       private int posZ;
++<<<<<<< HEAD:common/chemicraft/container/ContainerPyrolysisTable.java
++      private TileEntityPyrolysisTable tileentity;
++
++      public ContainerPyrolysisTable(EntityPlayer par1EntityPlayer, TileEntityPyrolysisTable par2){
++=======
+       public ContainerDecompositionTable(EntityPlayer par1EntityPlayer, TileEntityDecompositionTable par2){
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/container/ContainerDecompositionTable.java
+               super();
++              this.tileentity = par2;
+               this.worldObj = par2.worldObj;
+               this.posX = par2.xCoord;
+               this.posY = par2.yCoord;
+               this.posZ = par2.zCoord;
++
++              for (int i = 0; i < 4; i++) {
++                      for (int j = 0; j < 4; j++) {
++                              this.addSlotToContainer(new SlotPyrolysisTableResult(this.tileentity.getInvResult(), i*4 + j, 88+i*18, 17+j*18));
++                      }
++              }
++              this.addSlotToContainer(new SlotPyrolysisTableMaterial(this.tileentity.getInvMaterial(), 0, 27, 20));
++              this.addSlotToContainer(new SlotPyrolysisTableFuel(this.tileentity.getInvFuel(), 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, 121 + var3 * 18));
++                      }
++              }
++
++              for (var3 = 0; var3 < 9; ++var3)
++              {
++                      this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 179));
++              }
+       }
+       @Override
+       public boolean canInteractWith(EntityPlayer par1EntityPlayer) {
+               return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.decompositionTableID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
+       }
+ }
index 0000000,be3b649..50fa3d6
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,63 +1,64 @@@
+ package chemicraft.debug;
+ import java.util.Iterator;
+ import java.util.List;
+ import net.minecraft.command.CommandBase;
+ import net.minecraft.command.ICommandSender;
+ import net.minecraft.entity.Entity;
+ import net.minecraft.entity.item.EntityItem;
+ import net.minecraft.entity.player.EntityPlayerMP;
+ import net.minecraft.server.MinecraftServer;
+ import net.minecraft.world.World;
+ public class CommandDeleteItem extends CommandBase {
+       @Override
+       public String getCommandName() {
+               return "delItem";
+       }
+       @SuppressWarnings("unchecked")
+       @Override
+       public void processCommand(ICommandSender var1, String[] var2) {
+               MinecraftServer server = null;
+               EntityPlayerMP player = null;
+               try { server = (MinecraftServer)var1; } catch (ClassCastException e) {}
+               try{ player = (EntityPlayerMP)var1;} catch(ClassCastException e) {}
+               World world;
+               List<Entity> list;
+               Iterator<Entity> itr;
+               if(server != null){
+                       if(var2.length > 0){
+                               world = server.worldServerForDimension(Integer.parseInt(var2[0]));
+                               list = world.loadedEntityList;
+                               itr = list.iterator();
+                               while(itr.hasNext()){
+                                       Entity entity = itr.next();
+                                       if(entity instanceof EntityItem){
+                                               entity.setDead();
+                                       }
+                               }
+                       }else{
+                               var1.sendChatToPlayer("Please specify the World.");
+                       }
+               }else if(player != null){
+                       world = player.worldObj;
+                       list = world.loadedEntityList;
+                       itr = list.iterator();
++                      player.dimension = 128;
+                       while(itr.hasNext()){
+                               Entity entity = itr.next();
+                               if(entity instanceof EntityItem){
+                                       entity.setDead();
+                               }
+                       }
+               }else{
+                       var1.sendChatToPlayer("---Command Error---");
+               }
+       }
+ }
index 0000000,1bef9c4..b22ae2b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,35 @@@
+ package chemicraft.gui;
+ import net.minecraft.client.gui.inventory.GuiContainer;
+ import net.minecraft.entity.player.EntityPlayer;
+ import chemicraft.ChemiCraft;
+ import chemicraft.container.ContainerDecompositionTable;
+ import chemicraft.tileentity.TileEntityDecompositionTable;
+ public class GuiDecompositionTable extends GuiContainer{
++<<<<<<< HEAD:common/chemicraft/gui/GuiPyrolysisTable.java
++      private TileEntityPyrolysisTable tileentity;
++
++      public GuiPyrolysisTable(EntityPlayer par1EntityPlayer, TileEntityPyrolysisTable par2) {
++              super(new ContainerPyrolysisTable(par1EntityPlayer, par2));
++              this.tileentity = par2;
++              this.ySize = 204;
++=======
+       public GuiDecompositionTable(EntityPlayer par1EntityPlayer, TileEntityDecompositionTable par2) {
+               super(new ContainerDecompositionTable(par1EntityPlayer, par2));
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/gui/GuiDecompositionTable.java
+       }
+       @Override
+       protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
+               this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture(ChemiCraft.instance.guiDecompositionTexture));
+               this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
+       }
++      @Override
++      protected void drawGuiContainerForegroundLayer(int par1, int par2) {
++              this.fontRenderer.drawString(String.valueOf("Temp:" + (int)this.tileentity.getHeat()), 110, 100, 0x000000);
++      }
+ }
index 0000000,9326cb6..8803c14
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,113 +1,113 @@@
 -      private ItemStack[] inventory = new ItemStack[16];
+ package 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 InventoryDecompositionTableMaterial implements IInventory {
++      private ItemStack[] inventory = new ItemStack[1];
+       private Container eventHandler;
+       public void setEventHandler(Container par1){
+               this.eventHandler = par1;
+       }
+       @Override
+       public int getSizeInventory() {
+               return this.inventory.length;
+       }
+       @Override
+       public ItemStack getStackInSlot(int var1) {
+               return this.inventory[var1];
+       }
+       @Override
+       public ItemStack decrStackSize(int var1, int var2) {
+               if (this.inventory[var1] != null)
+               {
+                       ItemStack var3;
+                       if (this.inventory[var1].stackSize <= var2)
+                       {
+                               var3 = this.inventory[var1];
+                               this.inventory[var1] = null;
+                               this.onInventoryChanged();
+                               return var3;
+                       }
+                       else
+                       {
+                               var3 = this.inventory[var1].splitStack(var2);
+                               if (this.inventory[var1].stackSize == 0)
+                               {
+                                       this.inventory[var1] = null;
+                               }
+                               this.onInventoryChanged();
+                               return var3;
+                       }
+               }
+               else
+               {
+                       return null;
+               }
+       }
+       @Override
+       public ItemStack getStackInSlotOnClosing(int var1) {
+               if (this.inventory[var1] != null)
+               {
+                       ItemStack var2 = this.inventory[var1];
+                       this.inventory[var1] = null;
+                       return var2;
+               }
+               else
+               {
+                       return null;
+               }
+       }
+       @Override
+       public void setInventorySlotContents(int var1, ItemStack var2) {
+               this.inventory[var1] = var2;
+               if (var2 != null && var2.stackSize > this.getInventoryStackLimit())
+               {
+                       var2.stackSize = this.getInventoryStackLimit();
+               }
+               this.onInventoryChanged();
+       }
+       @Override
+       public String getInvName() {
+               return "DecompositionTableMaterial";
+       }
+       @Override
+       public int getInventoryStackLimit() {
+               return 64;
+       }
+       @Override
+       public void onInventoryChanged() {
+               if(this.eventHandler != null) this.eventHandler.onCraftMatrixChanged(this);
+       }
+       @Override
+       public boolean isUseableByPlayer(EntityPlayer var1) {
+               return true;
+       }
+       @Override
+       public void openChest() {
+       }
+       @Override
+       public void closeChest() {
+       }
+ }
index 0000000,3feffd2..fd8cca2
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,103 +1,103 @@@
 -      public void isStackOrDrop(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer)
+ package chemicraft.item;
+ import net.minecraft.block.Block;
+ import net.minecraft.block.BlockFire;
+ import net.minecraft.entity.player.EntityPlayer;
+ import net.minecraft.item.ItemStack;
+ import net.minecraft.world.World;
+ import chemicraft.ChemiCraft;
+ import chemicraft.ChemiCraftAPI;
+ import chemicraft.util.MathHelperPlus;
+ public class ItemGasCollectingBottle extends ItemAtomInfoContainer
+ {
+       public ItemGasCollectingBottle(int id) {
+               super(id);
+               this.setMaxStackSize(1);
+               this.setMaxDamage(2);
+               this.setCreativeTab(ChemiCraft.instance.creativeTab);
+       }
+       @Override
+       public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
+       {
+               par1ItemStack.damageItem(1, par3EntityPlayer);
+               this.atomInfo.update(par2World, par3EntityPlayer);
+               int heightValue = par2World.getHeightValue((int) par3EntityPlayer.posX, (int) par3EntityPlayer.posZ);
+               int result1 = MathHelperPlus.probability(99, 1);
+               int result2 = MathHelperPlus.probability(78, 21, 1);
+               int result3 = MathHelperPlus.probability(0.032, 0.0018, 0.000012, 0.00052);
+               if (this.atomInfo.isOverY(heightValue)) {
+                       if (result1 == 0) {
+                               if (result2 == 0) {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 6), par3EntityPlayer);
+                               } else if (result2 == 1) {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 7), par3EntityPlayer);
+                               } else {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 17), par3EntityPlayer);
+                               }
+                       } else {
+                               if (result3 == 0) {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par3EntityPlayer);
+                               } else if (result3 == 1) {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 9), par3EntityPlayer);
+                               } else if (result3 == 2) {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, 1), par3EntityPlayer);
+                               } else {
+                                       this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemAtoms, 1, 1), par3EntityPlayer);
+                               }
+                       }
+               }
+               // デバッグ用
+               if (par2World.isRemote) {
+                       par3EntityPlayer.addChatMessage("result1=" + result1 + " result2=" + result2 + " result3=" + result3);
+                       par3EntityPlayer.addChatMessage("このメッセージは開発版のみの表示ですが、もし製品版で表示されていた場合はご連絡ください。");
+               }
+               return par1ItemStack;
+       }
++      protected void isStackOrDrop(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer)
+       {
+               if (!par2EntityPlayer.inventory.addItemStackToInventory(par1ItemStack)) {
+                       par2EntityPlayer.dropPlayerItem(par1ItemStack);
+               }
+       }
+       @Override
+       public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
+       {
+               int blockID = par3World.getBlockId(par4, par5, par6);
+               Block block = Block.blocksList[blockID];
+               int uniqueBlockID = par3World.getBlockId(par4, par5 + 1, par6);
+               Block uniqueBlock = Block.blocksList[uniqueBlockID];
+               if (uniqueBlock instanceof BlockFire){
+                       par1ItemStack.damageItem(1, par2EntityPlayer);
+                       int result1 = MathHelperPlus.probability(90, 10);
+                       if (result1 == 0) {
+                               this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonDioxide")), par2EntityPlayer);
+                       } else {
+                               this.isStackOrDrop(new ItemStack(ChemiCraft.instance.itemCompounds, 1, ChemiCraftAPI.getInstance().getCompound("CarbonMonoxide")), par2EntityPlayer);
+                       }
+                       return true;
+               }
+               return false;
+       }
+       @Override
+       public String getTextureFile()
+       {
+               return "/chemicraft/items/items.png";
+       }
+ }
index 0000000,a01f91f..9662c8c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,58 +1,65 @@@
+ package chemicraft.system;
+ import net.minecraft.entity.player.EntityPlayer;
+ import net.minecraft.tileentity.TileEntity;
+ import net.minecraft.world.World;
+ import chemicraft.container.ContainerChemicalCombinationTable;
+ import chemicraft.container.ContainerChemicalCraftingTable;
+ import chemicraft.container.ContainerDecompositionTable;
+ import chemicraft.container.ContainerElectrolysisTable;
+ import chemicraft.container.ContainerToolAndWeaponCraftingTable;
++import chemicraft.debug.DebugTick;
+ import chemicraft.tileentity.TileEntityChemicalCombinationTable;
+ import chemicraft.tileentity.TileEntityChemicalCraftingTable;
+ import chemicraft.tileentity.TileEntityDecompositionTable;
+ import chemicraft.tileentity.TileEntityElectrolysisTable;
+ import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
+ import cpw.mods.fml.common.network.IGuiHandler;
++import cpw.mods.fml.common.registry.TickRegistry;
++import cpw.mods.fml.relauncher.Side;
+ public class CommonProxy implements IGuiHandler {
+       public void registerTextures(){
+       }
+       public void registerRenderInformation() {
+       }
+       @Override
+       public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+               if (!world.blockExists(x, y, z))
+                       return null;
+               TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
+               if (tileEntity instanceof TileEntityDecompositionTable) {
+                       return new ContainerDecompositionTable(player, (TileEntityDecompositionTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityChemicalCombinationTable){
+                       return new ContainerChemicalCombinationTable(player, (TileEntityChemicalCombinationTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityToolAndWeaponCraftingTable){
+                       return new ContainerToolAndWeaponCraftingTable(player, (TileEntityToolAndWeaponCraftingTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityChemicalCraftingTable){
+                       return new ContainerChemicalCraftingTable(player, (TileEntityChemicalCraftingTable) tileEntity);
+               }else if(tileEntity instanceof TileEntityElectrolysisTable){
+                       return new ContainerElectrolysisTable(player, (TileEntityElectrolysisTable)tileEntity);
+               }
+               return null;
+       }
+       @Override
+       public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+               return null;
+       }
+       public World getClientWorld(){
+               return null;
+       }
++      public void registerTickHandler() {
++              TickRegistry.registerTickHandler(new DebugTick(), Side.SERVER);
++      }
++
+ }
index 0000000,fcb4ee5..e40bb79
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,50 +1,525 @@@
+ package 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;
++<<<<<<< HEAD:common/chemicraft/tileentity/TileEntityPyrolysisTable.java
++import chemicraft.debug.DebugData;
++import chemicraft.debug.DebugTick;
++import chemicraft.inventory.InventoryPyrolysisTableFuel;
++import chemicraft.inventory.InventoryPyrolysisTableMaterial;
++import chemicraft.inventory.InventoryPyrolysisTableResult;
++import chemicraft.system.PacketHandler;
++
++import com.google.common.io.ByteArrayDataInput;
++
++import cpw.mods.fml.common.network.PacketDispatcher;
++import cpw.mods.fml.relauncher.Side;
++import cpw.mods.fml.relauncher.SideOnly;
++
++public class TileEntityPyrolysisTable extends TileEntity {
++
++      private InventoryPyrolysisTableMaterial invm = new InventoryPyrolysisTableMaterial();
++      private InventoryPyrolysisTableResult invr = new InventoryPyrolysisTableResult();
++      private InventoryPyrolysisTableFuel invf = new InventoryPyrolysisTableFuel();
++
++      /**
++       * 熱量
++       */
++      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, Integer> fuelList = new HashMap<ItemStack, Integer>();
++
++      /**
++       * レシピのリスト
++       */
++      private static HashMap<ItemStack, ItemStack[]> recipeList = new HashMap<ItemStack, ItemStack[]>();
++
++      @Override
++      public void updateEntity() {
++
++              //boolean var2 = false;
++
++              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 += 3F;
++                              }
++                      } 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 = fuelList.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 = fuelList.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;
++                      }
++              }
++
++              /*
++              DebugTick.setDebugData("PyrolysisTable" +
++                              "(x:" + this.xCoord +
++                              " y:" + this.yCoord +
++                              " z:" + this.zCoord + ")",
++                              new DebugData("Heat", this.heat),
++                              new DebugData("FuelRestTime", this.fuelRestTime),
++                              new DebugData("BurnTime", this.burnTime),
++                              new DebugData("アイテムが入るか", var2)
++                              );
++               */
++      }
++=======
+ import chemicraft.inventory.InventoryDecompositionTableMaterial;
+ import chemicraft.inventory.InventoryDecompositionTableResult;
+ import com.google.common.io.ByteArrayDataInput;
+ public class TileEntityDecompositionTable extends TileEntity {
+       private InventoryDecompositionTableMaterial invm = new InventoryDecompositionTableMaterial();
+       private InventoryDecompositionTableResult invr = new InventoryDecompositionTableResult();
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/tileentity/TileEntityDecompositionTable.java
+       @Override
+       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 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 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 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();
+               }
+       }
++<<<<<<< HEAD:common/chemicraft/tileentity/TileEntityPyrolysisTable.java
++      public float getBurnTime() {
++              return this.burnTime;
++      }
++
++      public float getHeat() {
++              return this.heat;
++      }
++
++      public InventoryPyrolysisTableMaterial getInvMaterial() {
++=======
+       public InventoryDecompositionTableMaterial getInvMaterial() {
++>>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/tileentity/TileEntityDecompositionTable.java
+               return this.invm;
+       }
+       public InventoryDecompositionTableResult getInvResult() {
+               return this.invr;
+       }
++      public InventoryPyrolysisTableFuel getInvFuel() {
++              return this.invf;
++      }
++
++      public boolean isInItemCheck(ItemStack key) {
++              ItemStack[] results = recipeList.get(key).clone();
++              ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
++              for (int i = 0; i < this.invr.getSizeInventory(); i++) {
++                      containerResults[i] = this.invr.getStackInSlot(i);
++              }
++
++              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) {
++                                      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) {
++                                                      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);
++              ItemStack[] containerResults = new ItemStack[this.invr.getSizeInventory()];
++              for (int i = 0; i < this.invr.getSizeInventory(); i++) {
++                      containerResults[i] = this.invr.getStackInSlot(i);
++              }
++
++              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) {
++                                      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) {
++                                                      System.out.println(var5);
++                                                      System.out.println(var6);
++                                                      System.out.println(var5 + var6);
++                                                      System.out.println(i);
++                                                      System.out.println(j);
++                                                      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;
++                                              }
++                                      }
++                              }
++                      }
++              }
++      }
++
++      public static void addFuel(ItemStack itemstack, int burnTime) {
++              fuelList.put(itemstack, burnTime);
++      }
++
++      public static void addRecipe(ItemStack material, ItemStack[] result) {
++              recipeList.put(material, result);
++      }
++
+ }
index 0000000,a4fbb2b..775a77e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,47 +1,34 @@@
 -public class MathHelperPlus
 -{
+ package chemicraft.util;
+ import java.util.ArrayList;
+ import java.util.Random;
 -      public static int probability(double... par1)
 -      {
++public class MathHelperPlus {
++
++      public static Random rand = new Random();
+       /**
+        * Return probability(0~).
+        */
 -              for (int var2 = 0; var2 < par1.length; var2++){
++      public static int probability(double... par1) {
+               ArrayList<Double> var1 = new ArrayList<Double>();
 -      public static int probability(ArrayList<Double> par1)
 -      {
 -              Random var2 = new Random();
 -              int var3 = var2.nextInt(100);
 -              double var4 = 0.0D;
 -
 -              for (int var5 = 0; var5 < par1.size(); var5++) {
 -                      var4 += par1.get(var5);
 -              }
 -
 -              ArrayList<Double> var6 = new ArrayList<Double>();
 -              for (int var7 = 0; var7 < par1.size(); var7++) {
 -                      var6.add(par1.get(var7) / var4 * 100);
 -              }
 -
 -              double var8 = 0.0D;
 -              for (int var9 = 0; var9 < var6.size(); var9++) {
 -                      if (var3 < var6.get(var9) + var8) {
 -                              return var9;
++              for (int var2 = 0; var2 < par1.length; var2++) {
+                       var1.add(par1[var2]);
+               }
+               return probability(var1);
+       }
 -                              var8 += var6.get(var9);
++      public static int probability(ArrayList<Double> par1) {
++              for (int i = 0; i < par1.size(); i++) {
++                      double var1 = par1.get(i) / 100;
++                      double var2 = Math.random();
++                      if (var1 <= var2) {
++                              return i;
+                       } else {
++                              continue;
+                       }
+               }
+               return -1;
+       }
+ }