--- /dev/null
- 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
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
- 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);
+ }
+
+}
--- /dev/null
--- /dev/null
++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;
++ }
++
++}
--- /dev/null
- 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);
+ }
+
+}
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
--- /dev/null
++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()
++ {
++
++ }
++
++}
--- /dev/null
--- /dev/null
++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()
++ {
++
++ }
++
++}
--- /dev/null
--- /dev/null
++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()
++ {
++
++ }
++
++}
--- /dev/null
-
+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() {
+ }
+}
--- /dev/null
-
+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() {
+ }
+}
--- /dev/null
- 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
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
--- /dev/null
++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;
++ }
++
++}
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
--- /dev/null
++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);
++ }
++
++}
--- /dev/null
- 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);
+ }
+
+}
--- /dev/null
- 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;
+ }
+
+}
--- /dev/null
- 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);
+ }
+
+}
--- /dev/null
-
+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;
+ }
+
+}
--- /dev/null
--- /dev/null
++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;
++ }
++
++}
--- /dev/null
- 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);
+ }
+
+}
--- /dev/null
-}
++<<<<<<< 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
--- /dev/null
+ 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();
+ }
+
+ }
--- /dev/null
+ 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;
+ }
+
+ }
--- /dev/null
+ 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---");
+ }
+
+ }
+
+ }
--- /dev/null
+ 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);
++ }
+
+ }
--- /dev/null
- 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() {
+ }
+
+ }
--- /dev/null
- 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";
+ }
+
+ }
--- /dev/null
+ 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);
++ }
++
+ }
--- /dev/null
+ 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);
++ }
++
+ }
--- /dev/null
-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;
+ }
+
+ }