OSDN Git Service

1766554102c21b91d1737153ca8ec71cebe71273
[chemicraft/chemicraft.git] / src / chemicraft / ChemiCraft.java
1 <<<<<<< HEAD:common/chemicraft/ChemiCraft.java
2 package chemicraft;\r
3 \r
4 import net.minecraft.block.Block;\r
5 import net.minecraft.block.material.Material;\r
6 import net.minecraft.creativetab.CreativeTabs;\r
7 import net.minecraft.item.Item;\r
8 import net.minecraft.item.ItemStack;\r
9 import net.minecraftforge.common.BiomeManager;\r
10 import net.minecraftforge.common.Configuration;\r
11 import net.minecraftforge.common.DimensionManager;\r
12 import net.minecraftforge.common.Property;\r
13 import chemicraft.block.BlockChemicalCombinationTable;\r
14 import chemicraft.block.BlockChemicalCraftingTable;\r
15 import chemicraft.block.BlockPyrolysisTable;\r
16 import chemicraft.block.BlockToolAndWeaponCraftingTable;\r
17 import chemicraft.compounds.CompoundWater;\r
18 import chemicraft.debug.CommandDeleteItem;\r
19 import chemicraft.debug.CommandGenDebugRoom;\r
20 import chemicraft.debug.CommandSetTile;\r
21 import chemicraft.item.ItemAtoms;\r
22 import chemicraft.item.ItemAtomsGrenade;\r
23 import chemicraft.item.ItemCompounds;\r
24 import chemicraft.item.ItemGasCollectingBottle;\r
25 import chemicraft.system.CommonProxy;\r
26 import chemicraft.system.PacketHandler;\r
27 import chemicraft.tileentity.TileEntityChemicalCombinationTable;\r
28 import chemicraft.tileentity.TileEntityChemicalCraftingTable;\r
29 import chemicraft.tileentity.TileEntityPyrolysisTable;\r
30 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;\r
31 import chemicraft.util.Auxiliary;\r
32 import chemicraft.util.Auxiliary.ArrayAuxiliary;\r
33 import chemicraft.util.Auxiliary.NameAuxiliary;\r
34 import chemicraft.util.CreativeTabAtoms;\r
35 import chemicraft.util.NBTRecipeGrenade;\r
36 import chemicraft.util.WorldProviderChemical;\r
37 import cpw.mods.fml.common.Mod;\r
38 import cpw.mods.fml.common.SidedProxy;\r
39 import cpw.mods.fml.common.event.FMLPostInitializationEvent;\r
40 import cpw.mods.fml.common.event.FMLPreInitializationEvent;\r
41 import cpw.mods.fml.common.event.FMLServerStartingEvent;\r
42 import cpw.mods.fml.common.network.NetworkMod;\r
43 import cpw.mods.fml.common.network.NetworkRegistry;\r
44 import cpw.mods.fml.common.registry.GameRegistry;\r
45 \r
46 /**\r
47  * ChemiCraft本体\r
48  * @author P.C.C.\r
49  *\r
50  */\r
51 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")\r
52 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)\r
53 public class ChemiCraft {\r
54 \r
55         public static final String[] ATOMSNAME = {\r
56                 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",\r
57                 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",\r
58                 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",\r
59                 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",\r
60                 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",\r
61                 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",\r
62                 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",\r
63                 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };\r
64 \r
65         public static final String[] ATOMSNAMEJP = {\r
66                 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",\r
67                 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",\r
68                 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",\r
69                 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",\r
70                 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",\r
71                 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };\r
72 \r
73         /**\r
74          * このmodのインスタンス\r
75          */\r
76         @Mod.Instance("chemiCraft")\r
77         public static ChemiCraft instance;\r
78 \r
79         /**\r
80          * ChemiCraftのProxy.\r
81          */\r
82         @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")\r
83         public static CommonProxy proxy;\r
84 \r
85         /**\r
86          * ChemiCraftのCreativeTab.\r
87          */\r
88         public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");\r
89 \r
90         /**\r
91          * ItemID.\r
92          */\r
93         public int atomsID;\r
94         public int compoundsID;\r
95         public int gasCollectingBottleID;\r
96         public int atomGrenadeID;\r
97 \r
98         /**\r
99          * BlockID.\r
100          */\r
101         public int pyrolysisTableID;\r
102         public int chemicalConbinationTableID;\r
103         public int toolAndWeaponCraftingTableID;\r
104         public int chemicalCraftingTableID;\r
105 \r
106         /**\r
107          * GUIID.\r
108          */\r
109         public int guiPyrolysisTableID;\r
110         public int guiChemicalCombinationTableID;\r
111         public int guiToolAndWeaponCraftingTableID;\r
112         public int guiChemicalCraftingTableID;\r
113 \r
114         /**\r
115          * Block型変数.\r
116          */\r
117         public Block blockPyrolysisTable;\r
118         public Block blockChemicalCombinationTable;\r
119         public Block blockToolAndWeaponCraftingTable;\r
120         public Block blockChemicalCraftingTable;\r
121 \r
122         /**\r
123          * Item型変数.\r
124          */\r
125         public Item itemAtoms;\r
126         public Item itemCompounds;\r
127         public Item itemGasCollectingBottle;\r
128         public Item itemAtomGrenade;\r
129 \r
130         /**\r
131          * このmodで使用するTextureのパス.\r
132          */\r
133         public String itemAtomsTexture = "/chemicraft/items/Atoms.png";\r
134         public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";\r
135         public String itemTexture = "/chemicraft/items/items.png";\r
136         public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/cctable.png";\r
137         public String guiPyrolysisTexture = "/chemicraft/guis/Pyrolysis.png";\r
138         public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";\r
139         public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";\r
140         public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";\r
141 \r
142         /**\r
143          * このmodに必要な補助クラスのインスタンス.\r
144          */\r
145         public Auxiliary auxiliary = new Auxiliary();\r
146         public NameAuxiliary nameAuxiliary = new NameAuxiliary();\r
147         public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();\r
148 \r
149         private ChemiCraftAPI api = ChemiCraftAPI.getInstance();\r
150         private ChemiCraftData chemicalData = new ChemiCraftData();\r
151 \r
152         @Mod.PreInit\r
153         public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {\r
154                 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());\r
155                 cfg.load();\r
156 \r
157                 Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);\r
158                 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);\r
159                 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);\r
160                 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);\r
161 \r
162                 Property atomsIDProp = cfg.getItem("AtomsID", 25000);\r
163                 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);\r
164                 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);\r
165                 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);\r
166 \r
167                 Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);\r
168                 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);\r
169                 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);\r
170                 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);\r
171 \r
172 \r
173                 this.pyrolysisTableID = pyrolysisTableIDProp.getInt();\r
174                 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();\r
175                 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();\r
176                 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();\r
177                 this.atomsID = atomsIDProp.getInt();\r
178                 this.compoundsID = compoundsIDProp.getInt();\r
179                 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();\r
180                 this.atomGrenadeID = atomGrenadeIDProp.getInt();\r
181                 this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();\r
182                 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();\r
183                 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();\r
184                 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();\r
185 \r
186                 cfg.save();\r
187         }\r
188 \r
189         @Mod.ServerStarting\r
190         public void serverStarting(final FMLServerStartingEvent event) {\r
191                 event.registerServerCommand(new CommandSetTile());\r
192                 event.registerServerCommand(new CommandDeleteItem());\r
193                 event.registerServerCommand(new CommandGenDebugRoom());\r
194         }\r
195 \r
196         @Mod.PostInit\r
197         public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {\r
198                 this.settingProcessing(event);\r
199                 this.apiProcessing(event);\r
200                 this.debug(event);\r
201         }\r
202 \r
203         private void settingProcessing(final FMLPostInitializationEvent event) {\r
204 \r
205                 // Blockを追加します\r
206                 this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).\r
207                                 setHardness(2.0F).\r
208                                 setResistance(0.0F).\r
209                                 setStepSound(Block.soundStoneFootstep).\r
210                                 setBlockName("PyrolysisTable");\r
211                 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).\r
212                                 setHardness(2.0F).\r
213                                 setResistance(0.0F).\r
214                                 setStepSound(Block.soundStoneFootstep).\r
215                                 setBlockName("ChemicalCombinationTable");\r
216                 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).\r
217                                 setHardness(2.0F).\r
218                                 setResistance(0.0F).\r
219                                 setStepSound(Block.soundStoneFootstep).\r
220                                 setBlockName("ToolAndWeaponCraftingTable");\r
221                 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).\r
222                                 setHardness(2.0F).\r
223                                 setResistance(0.0F).\r
224                                 setStepSound(Block.soundStoneFootstep).\r
225                                 setBlockName("ChemicalCraftingTable");\r
226 \r
227                 // Itemを追加します\r
228                 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");\r
229                 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");\r
230                 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);\r
231                 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);\r
232 \r
233                 // BlockをMinecraftに登録します\r
234                 GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");\r
235                 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");\r
236                 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");\r
237                 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");\r
238 \r
239                 // Blockの名前を設定します\r
240                 this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");\r
241                 this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");\r
242                 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");\r
243                 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");\r
244                 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");\r
245                 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");\r
246                 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");\r
247                 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");\r
248 \r
249                 // Itemの名前を設定します\r
250                 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);\r
251                 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);\r
252                 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");\r
253                 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");\r
254                 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");\r
255                 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");\r
256 \r
257                 // TileEntityを追加します\r
258                 GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");\r
259                 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");\r
260                 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");\r
261                 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");\r
262 \r
263                 // GUIを追加します\r
264                 NetworkRegistry.instance().registerGuiHandler(instance, proxy);\r
265 \r
266                 // 描画関係の読み込み\r
267                 proxy.registerRenderInformation();\r
268 \r
269                 //化学作業台類のレシピを追加します\r
270                 GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),\r
271                                 new Object[]{\r
272                         "XYX", "ZAZ", "ZZZ",\r
273                         Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
274                         Character.valueOf('Y'), new ItemStack(Block.workbench),\r
275                         Character.valueOf('Z'), new ItemStack(Block.stone),\r
276                         Character.valueOf('A'), new ItemStack(Item.bucketLava),\r
277                 });\r
278                 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),\r
279                                 new Object[]{\r
280                         "XYX", "ZAZ", "ZZZ",\r
281                         Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
282                         Character.valueOf('Y'), new ItemStack(Block.workbench),\r
283                         Character.valueOf('Z'), new ItemStack(Block.stone),\r
284                         Character.valueOf('A'), new ItemStack(Block.obsidian),\r
285                 });\r
286                 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),\r
287                                 new Object[]{\r
288                         "XYX", "ZAZ", "ZZZ",\r
289                         Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
290                         Character.valueOf('Y'), new ItemStack(Block.workbench),\r
291                         Character.valueOf('Z'), new ItemStack(Block.stone),\r
292                         Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),\r
293                 });\r
294                 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),\r
295                                 new Object[]{\r
296                         "XYX", "ZAZ", "ZZZ",\r
297                         Character.valueOf('X'), new ItemStack(Item.ingotIron),\r
298                         Character.valueOf('Y'), new ItemStack(Block.workbench),\r
299                         Character.valueOf('Z'), new ItemStack(Block.stone),\r
300                         Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),\r
301                 });\r
302 \r
303                 // 化合物を追加します\r
304                 api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");\r
305                 api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");\r
306                 api.addLangCompound("ja_JP", "Water", "水");\r
307                 api.addCompound("Test");\r
308
309 \r
310                 //化合物のHandlerを設定します\r
311                 api.settingCompoundHandler("Water", new CompoundWater());\r
312 \r
313                 //化合物のレシピを追加します\r
314                 api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));\r
315 \r
316                 //手榴弾の追加\r
317                 api.addMaterialRecipe(\r
318                                 new ItemStack[]{\r
319                                                 null,\r
320                                                 new ItemStack(Block.stone),\r
321                                                 null,\r
322                                                 new ItemStack(Block.stone),\r
323                                                 new ItemStack(Item.gunpowder),\r
324                                                 new ItemStack(Block.stone),\r
325                                                 null,\r
326                                                 new ItemStack(Block.stone),\r
327                                                 null\r
328                                 },\r
329                                 new ItemStack(this.itemAtomGrenade, 16, 0),\r
330                                 new NBTRecipeGrenade()\r
331                                 );\r
332                 //Tickingの追加\r
333                 this.proxy.registerTickHandler();\r
334         }\r
335 \r
336         private void apiProcessing(final FMLPostInitializationEvent event) {\r
337                 // API用の処理\r
338                 this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());\r
339                 for (int i = 0; i < api.getCompoundsLang().size(); i++) {\r
340                         this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());\r
341                 }\r
342         }\r
343 \r
344         private void debug(final FMLPostInitializationEvent event) {\r
345         }\r
346 \r
347 }\r
348 =======
349 package chemicraft;
350
351 import net.minecraft.block.Block;
352 import net.minecraft.block.material.Material;
353 import net.minecraft.creativetab.CreativeTabs;
354 import net.minecraft.item.Item;
355 import net.minecraft.item.ItemStack;
356 import net.minecraftforge.common.Configuration;
357 import net.minecraftforge.common.Property;
358 import chemicraft.block.BlockChemicalCombinationTable;
359 import chemicraft.block.BlockChemicalCraftingTable;
360 import chemicraft.block.BlockDecompositionTable;
361 import chemicraft.block.BlockElectrolysisTable;
362 import chemicraft.block.BlockToolAndWeaponCraftingTable;
363 import chemicraft.compounds.CompoundWater;
364 import chemicraft.debug.CommandDeleteItem;
365 import chemicraft.debug.CommandGenDebugRoom;
366 import chemicraft.debug.CommandSetTile;
367 import chemicraft.item.ItemAtoms;
368 import chemicraft.item.ItemAtomsGrenade;
369 import chemicraft.item.ItemCompounds;
370 import chemicraft.item.ItemGasCollectingBottle;
371 import chemicraft.system.CommonProxy;
372 import chemicraft.system.PacketHandler;
373 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
374 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
375 import chemicraft.tileentity.TileEntityDecompositionTable;
376 import chemicraft.tileentity.TileEntityElectrolysisTable;
377 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
378 import chemicraft.util.Auxiliary;
379 import chemicraft.util.Auxiliary.ArrayAuxiliary;
380 import chemicraft.util.Auxiliary.NameAuxiliary;
381 import chemicraft.util.CreativeTabAtoms;
382 import chemicraft.util.NBTRecipeGrenade;
383 import cpw.mods.fml.common.Mod;
384 import cpw.mods.fml.common.SidedProxy;
385 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
386 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
387 import cpw.mods.fml.common.event.FMLServerStartingEvent;
388 import cpw.mods.fml.common.network.NetworkMod;
389 import cpw.mods.fml.common.network.NetworkRegistry;
390 import cpw.mods.fml.common.registry.GameRegistry;
391
392 /**
393  * ChemiCraft本体
394  * @author P.C.C.
395  *
396  */
397 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
398 // ID,名前,バージョン
399 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
400 // クライアント、サーバー共に必要 1.3.2用
401 public class ChemiCraft {
402
403         public static final String[] ATOMSNAME = {
404                 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
405                 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
406                 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
407                 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
408                 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
409                 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
410                 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
411                 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
412
413         public static final String[] ATOMSNAMEJP = {
414                 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
415                 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
416                 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
417                 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
418                 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
419                 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
420
421         /**
422          * このmodのインスタンス
423          */
424         @Mod.Instance("chemiCraft")
425         public static ChemiCraft instance;
426
427         /**
428          * ChemiCraftのProxy.
429          */
430         @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")
431         public static CommonProxy proxy;
432
433         /**
434          * ChemiCraftのCreativeTab.
435          */
436         public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
437
438         /**
439          * ItemID.
440          */
441         public int atomsID;
442         public int compoundsID;
443         public int gasCollectingBottleID;
444         public int atomGrenadeID;
445
446         /**
447          * BlockID.
448          */
449         public int decompositionTableID;
450         public int chemicalConbinationTableID;
451         public int toolAndWeaponCraftingTableID;
452         public int chemicalCraftingTableID;
453         public int electrolysisTableID;
454
455         /**
456          * GUIID.
457          */
458         public int guiDecompositionTableID;
459         public int guiChemicalCombinationTableID;
460         public int guiToolAndWeaponCraftingTableID;
461         public int guiChemicalCraftingTableID;
462         public int guiElectrolysisTableID;
463
464         /**
465          * Block型変数.
466          */
467         public Block blockDecompositionTable;
468         public Block blockChemicalCombinationTable;
469         public Block blockToolAndWeaponCraftingTable;
470         public Block blockChemicalCraftingTable;
471         public Block blockElectrolysisTable;
472
473         /**
474          * Item型変数.
475          */
476         public Item itemAtoms;
477         public Item itemCompounds;
478         public Item itemGasCollectingBottle;
479         public Item itemAtomGrenade;
480
481         /**
482          * このmodで使用するTextureのパス.
483          */
484         public String itemAtomsTexture = "/chemicraft/items/Atoms.png";
485         public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";
486         public String itemTexture = "/chemicraft/items/items.png";
487         public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/CCTable.png";
488         public String guiDecompositionTexture = "/chemicraft/guis/Decomposition.png";
489         public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";
490         public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";
491         public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";
492         public String guiElectrolysisTableTexture = "/chemicraft/guis/ElectrolysisTable.png";
493
494         /**
495          * このmodに必要な補助クラスのインスタンス.
496          */
497         public Auxiliary auxiliary = new Auxiliary();
498         public NameAuxiliary nameAuxiliary = new NameAuxiliary();
499         public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
500
501         private ChemiCraftAPI api = ChemiCraftAPI.getInstance();
502         private ChemiCraftData chemicalData = new ChemiCraftData();
503
504         @Mod.PreInit
505         public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
506                 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
507                 cfg.load();
508
509                 Property decompositionTableIDProp = cfg.getBlock("DecompositionTable", 2400);
510                 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
511                 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
512                 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
513                 Property electrolysisTableIDProp = cfg.getBlock("ElectrolysisTableID", 2404);
514
515                 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
516                 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
517                 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
518                 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
519
520                 Property guiDecompositionTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1000);
521                 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
522                 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
523                 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
524                 Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableID", 1004);
525
526
527                 this.decompositionTableID = decompositionTableIDProp.getInt();
528                 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
529                 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
530                 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
531                 this.electrolysisTableID = electrolysisTableIDProp.getInt();
532                 this.atomsID = atomsIDProp.getInt();
533                 this.compoundsID = compoundsIDProp.getInt();
534                 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
535                 this.atomGrenadeID = atomGrenadeIDProp.getInt();
536                 this.guiDecompositionTableID = guiDecompositionTableIDProp.getInt();
537                 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
538                 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
539                 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
540                 this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
541
542                 cfg.save();
543         }
544
545         @Mod.ServerStarting
546         public void serverStarting(final FMLServerStartingEvent event) {
547                 event.registerServerCommand(new CommandSetTile());
548                 event.registerServerCommand(new CommandDeleteItem());
549                 event.registerServerCommand(new CommandGenDebugRoom());
550         }
551
552         @Mod.PostInit
553         public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
554                 this.settingProcessing(event);
555                 this.apiProcessing(event);
556                 this.debug(event);
557         }
558
559         private void settingProcessing(final FMLPostInitializationEvent event) {
560
561                 // Blockを追加します
562                 this.blockDecompositionTable = new BlockDecompositionTable(this.decompositionTableID, 0, Material.ground).
563                                 setHardness(2.0F).
564                                 setResistance(0.0F).
565                                 setStepSound(Block.soundStoneFootstep).
566                                 setBlockName("DecompositionTable");
567                 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).
568                                 setHardness(2.0F).
569                                 setResistance(0.0F).
570                                 setStepSound(Block.soundStoneFootstep).
571                                 setBlockName("ChemicalCombinationTable");
572                 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).
573                                 setHardness(2.0F).
574                                 setResistance(0.0F).
575                                 setStepSound(Block.soundStoneFootstep).
576                                 setBlockName("ToolAndWeaponCraftingTable");
577                 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).
578                                 setHardness(2.0F).
579                                 setResistance(0.0F).
580                                 setStepSound(Block.soundStoneFootstep).
581                                 setBlockName("ChemicalCraftingTable");
582                 this.blockElectrolysisTable = new BlockElectrolysisTable(electrolysisTableID, 0, Material.ground).
583                                 setHardness(2.0F).
584                                 setResistance(0.0F).
585                                 setStepSound(Block.soundStoneFootstep).
586                                 setBlockName("ElectrolysisTable");
587
588                 // Itemを追加します
589                 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
590                 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
591                 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
592                 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
593
594                 // BlockをMinecraftに登録します
595                 GameRegistry.registerBlock(this.blockDecompositionTable, "BlockDecompositionTable");
596                 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
597                 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
598                 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
599                 GameRegistry.registerBlock(this.blockElectrolysisTable, "ElectrolysisTable");
600
601                 // Blockの名前を設定します
602                 this.nameAuxiliary.addName(this.blockDecompositionTable, "DecompositionTable");
603                 this.nameAuxiliary.addName(this.blockDecompositionTable, "ja_JP", "分解台");
604                 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
605                 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
606                 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
607                 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
608                 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
609                 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
610                 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ElectrolysisTable");
611                 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ja_JP", "電気分解台");
612
613                 // Itemの名前を設定します
614                 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
615                 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
616                 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
617                 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
618                 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
619                 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
620
621                 // TileEntityを追加します
622                 GameRegistry.registerTileEntity(TileEntityDecompositionTable.class, "DecompositionTable");
623                 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
624                 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
625                 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
626                 GameRegistry.registerTileEntity(TileEntityElectrolysisTable.class, "TileEntityElectrolysisTable");
627
628                 // GUIを追加します
629                 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
630
631                 // 描画関係の読み込み
632                 proxy.registerRenderInformation();
633
634                 //化学作業台類のレシピを追加します
635                 GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),
636                                 new Object[]{
637                         "XYX", "ZAZ", "ZZZ",
638                         Character.valueOf('X'), new ItemStack(Item.ingotIron),
639                         Character.valueOf('Y'), new ItemStack(Block.workbench),
640                         Character.valueOf('Z'), new ItemStack(Block.stone),
641                         Character.valueOf('A'), new ItemStack(Block.tnt),
642                 });
643                 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
644                                 new Object[]{
645                         "XYX", "ZAZ", "ZZZ",
646                         Character.valueOf('X'), new ItemStack(Item.ingotIron),
647                         Character.valueOf('Y'), new ItemStack(Block.workbench),
648                         Character.valueOf('Z'), new ItemStack(Block.stone),
649                         Character.valueOf('A'), new ItemStack(Block.obsidian),
650                 });
651                 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
652                                 new Object[]{
653                         "XYX", "ZAZ", "ZZZ",
654                         Character.valueOf('X'), new ItemStack(Item.ingotIron),
655                         Character.valueOf('Y'), new ItemStack(Block.workbench),
656                         Character.valueOf('Z'), new ItemStack(Block.stone),
657                         Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
658                 });
659                 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
660                                 new Object[]{
661                         "XYX", "ZAZ", "ZZZ",
662                         Character.valueOf('X'), new ItemStack(Item.ingotIron),
663                         Character.valueOf('Y'), new ItemStack(Block.workbench),
664                         Character.valueOf('Z'), new ItemStack(Block.stone),
665                         Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
666                 });
667
668                 // 化合物を追加します
669                 api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
670                 api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
671                 api.addLangCompound("ja_JP", "Water", "水");
672                 api.addCompound("Test");
673
674
675                 //化合物のHandlerを設定します
676                 api.settingCompoundHandler("Water", new CompoundWater());
677
678                 //化合物のレシピを追加します
679                 api.addChemicalCombinationRecipe(new String[]{"C", "O"}, new Integer[]{1, 2}, new ItemStack(this.itemCompounds, 1, api.getCompound("CarbonDioxide")));
680                 api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));
681
682                 //手榴弾の追加
683                 api.addMaterialRecipe(
684                                 new ItemStack[]{
685                                                 null,
686                                                 new ItemStack(Block.stone),
687                                                 null,
688                                                 new ItemStack(Block.stone),
689                                                 new ItemStack(Item.gunpowder),
690                                                 new ItemStack(Block.stone),
691                                                 null,
692                                                 new ItemStack(Block.stone),
693                                                 null
694                                 },
695                                 new ItemStack(this.itemAtomGrenade, 16, 0),
696                                 new NBTRecipeGrenade()
697                                 );
698         }
699
700         private void apiProcessing(final FMLPostInitializationEvent event) {
701                 // API用の処理
702                 this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());
703                 for (int i = 0; i < api.getCompoundsLang().size(); i++) {
704                         this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());
705                 }
706         }
707
708         private void debug(final FMLPostInitializationEvent event) {
709         }
710
711 }
712 >>>>>>> cbf016a981df6758b057ca883a1527676a1a9ec3:src/chemicraft/ChemiCraft.java