3 import net.minecraft.block.Block;
\r
4 import net.minecraft.block.material.Material;
\r
5 import net.minecraft.creativetab.CreativeTabs;
\r
6 import net.minecraft.item.Item;
\r
7 import net.minecraft.item.ItemStack;
\r
8 import net.minecraftforge.common.BiomeManager;
\r
9 import net.minecraftforge.common.Configuration;
\r
10 import net.minecraftforge.common.DimensionManager;
\r
11 import net.minecraftforge.common.Property;
\r
12 import chemicraft.block.BlockChemicalCombinationTable;
\r
13 import chemicraft.block.BlockChemicalCraftingTable;
\r
14 import chemicraft.block.BlockElectrolysisTable;
\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.TileEntityElectrolysisTable;
\r
30 import chemicraft.tileentity.TileEntityPyrolysisTable;
\r
31 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
\r
32 import chemicraft.util.Auxiliary;
\r
33 import chemicraft.util.Auxiliary.ArrayAuxiliary;
\r
34 import chemicraft.util.Auxiliary.NameAuxiliary;
\r
35 import chemicraft.util.CreativeTabAtoms;
\r
36 import chemicraft.util.NBTRecipeGrenade;
\r
37 import chemicraft.util.WorldProviderChemical;
\r
38 import cpw.mods.fml.common.Mod;
\r
39 import cpw.mods.fml.common.SidedProxy;
\r
40 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
\r
41 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
\r
42 import cpw.mods.fml.common.event.FMLServerStartingEvent;
\r
43 import cpw.mods.fml.common.network.NetworkMod;
\r
44 import cpw.mods.fml.common.network.NetworkRegistry;
\r
45 import cpw.mods.fml.common.registry.GameRegistry;
\r
52 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
\r
53 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
\r
54 public class ChemiCraft {
\r
56 public static final String[] ATOMSNAME = {
\r
57 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
\r
58 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
\r
59 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
\r
60 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
\r
61 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
\r
62 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
\r
63 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
\r
64 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
\r
66 public static final String[] ATOMSNAMEJP = {
\r
67 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
\r
68 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
\r
69 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
\r
70 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
\r
71 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
\r
72 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
\r
77 @Mod.Instance("chemiCraft")
\r
78 public static ChemiCraft instance;
\r
83 @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")
\r
84 public static CommonProxy proxy;
\r
87 * ChemiCraftのCreativeTab.
\r
89 public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
\r
95 public int compoundsID;
\r
96 public int gasCollectingBottleID;
\r
97 public int atomGrenadeID;
\r
102 public int pyrolysisTableID;
\r
103 public int electrolysisTableID;
\r
104 public int chemicalConbinationTableID;
\r
105 public int toolAndWeaponCraftingTableID;
\r
106 public int chemicalCraftingTableID;
\r
111 public int guiPyrolysisTableID;
\r
112 public int guiElectrolysisTableID;
\r
113 public int guiChemicalCombinationTableID;
\r
114 public int guiToolAndWeaponCraftingTableID;
\r
115 public int guiChemicalCraftingTableID;
\r
120 public Block blockPyrolysisTable;
\r
121 public Block blockElectrolysisTable;
\r
122 public Block blockChemicalCombinationTable;
\r
123 public Block blockToolAndWeaponCraftingTable;
\r
124 public Block blockChemicalCraftingTable;
\r
129 public Item itemAtoms;
\r
130 public Item itemCompounds;
\r
131 public Item itemGasCollectingBottle;
\r
132 public Item itemAtomGrenade;
\r
135 * このmodで使用するTextureのパス.
\r
137 public final String ITEMATOMSTEXTURE = "/chemicraft/items/Atoms.png";
\r
138 public final String ITEMCOMPOUNDSTEXTURE = "/chemicraft/items/Compounds.png";
\r
139 public final String ITEMTEXTURE = "/chemicraft/items/items.png";
\r
140 public final String BLOCKCHEMICALCRAFTINGTABLETEXTURE = "/chemicraft/blocks/cctable.png";
\r
141 public final String GUIPYROLYSISTEXTURE = "/chemicraft/guis/Pyrolysis.png";
\r
142 public final String GUIELECTROLYSISTEXTURE = "/chemicraft/guis/Electrolysis.png";
\r
143 public final String GUICHEMICALCOMBINATIONTEXTURE = "/chemicraft/guis/ChemicalCombination.png";
\r
144 public final String GUITOOLANDWEAPONCRAFTINGTEXTURE = "/chemicraft/guis/ToolAndWeaponCrafting.png";
\r
145 public final String GUICHEMICALCRAFTINGTEXTURE = "/chemicraft/guis/MaterialCrafting.png";
\r
148 * このmodに必要な補助クラスのインスタンス.
\r
150 public Auxiliary auxiliary = new Auxiliary();
\r
151 public NameAuxiliary nameAuxiliary = new NameAuxiliary();
\r
152 public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
\r
154 private ChemiCraftAPI api = ChemiCraftAPI.getInstance();
\r
155 private ChemiCraftData chemicalData = new ChemiCraftData();
\r
158 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
\r
159 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
162 Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);
\r
163 Property electrolysisTableIDProp = cfg.getBlock("ElectrolysisTable", 2401);
\r
164 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2402);
\r
165 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2403);
\r
166 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2404);
\r
168 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
\r
169 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
\r
170 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
\r
171 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
\r
173 Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
\r
174 Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
\r
175 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1002);
\r
176 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1003);
\r
177 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1004);
\r
180 this.pyrolysisTableID = pyrolysisTableIDProp.getInt();
\r
181 this.electrolysisTableID = electrolysisTableIDProp.getInt();
\r
182 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
\r
183 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
\r
184 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
\r
185 this.atomsID = atomsIDProp.getInt();
\r
186 this.compoundsID = compoundsIDProp.getInt();
\r
187 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
\r
188 this.atomGrenadeID = atomGrenadeIDProp.getInt();
\r
189 this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();
\r
190 this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
\r
191 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
\r
192 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
\r
193 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
\r
198 @Mod.ServerStarting
\r
199 public void serverStarting(final FMLServerStartingEvent event) {
\r
200 event.registerServerCommand(new CommandSetTile());
\r
201 event.registerServerCommand(new CommandDeleteItem());
\r
202 event.registerServerCommand(new CommandGenDebugRoom());
\r
206 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
\r
207 this.settingProcessing(event);
\r
208 this.apiProcessing(event);
\r
212 private void settingProcessing(final FMLPostInitializationEvent event) {
\r
215 this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).
\r
217 setResistance(0.0F).
\r
218 setStepSound(Block.soundStoneFootstep).
\r
219 setBlockName("PyrolysisTable");
\r
220 this.blockElectrolysisTable = new BlockElectrolysisTable(this.electrolysisTableID, 1, Material.ground).
\r
222 setResistance(0.0F).
\r
223 setStepSound(Block.soundStoneFootstep).
\r
224 setBlockName("ElectrolysisTable");
\r
225 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 2, Material.ground).
\r
227 setResistance(0.0F).
\r
228 setStepSound(Block.soundStoneFootstep).
\r
229 setBlockName("ChemicalCombinationTable");
\r
230 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 3, Material.ground).
\r
232 setResistance(0.0F).
\r
233 setStepSound(Block.soundStoneFootstep).
\r
234 setBlockName("ToolAndWeaponCraftingTable");
\r
235 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 4, Material.ground).
\r
237 setResistance(0.0F).
\r
238 setStepSound(Block.soundStoneFootstep).
\r
239 setBlockName("ChemicalCraftingTable");
\r
242 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
\r
243 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
\r
244 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
\r
245 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
\r
247 // BlockをMinecraftに登録します
\r
248 GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");
\r
249 GameRegistry.registerBlock(this.blockElectrolysisTable, "ElectrolysisTable");
\r
250 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
\r
251 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
\r
252 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
\r
255 this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");
\r
256 this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");
\r
257 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ElectrolysisTable");
\r
258 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ja_JP", "電気分解台");
\r
259 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
\r
260 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
\r
261 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
\r
262 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
\r
263 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
\r
264 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
\r
267 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
\r
268 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
\r
269 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
\r
270 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
\r
271 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
\r
272 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
\r
274 // TileEntityを追加します
\r
275 GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");
\r
276 GameRegistry.registerTileEntity(TileEntityElectrolysisTable.class, "TileEntityElectrolysisTable");
\r
277 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
\r
278 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
\r
279 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
\r
282 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
\r
285 proxy.registerRenderInformation();
\r
288 GameRegistry.addRecipe(new ItemStack(this.blockElectrolysisTable),
\r
290 "XYX", "ZAZ", "ZZZ",
\r
291 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
292 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
293 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
294 Character.valueOf('A'), new ItemStack(Block.tnt),
\r
296 GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),
\r
298 "XYX", "ZAZ", "ZZZ",
\r
299 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
300 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
301 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
302 Character.valueOf('A'), new ItemStack(Item.bucketLava),
\r
304 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
\r
306 "XYX", "ZAZ", "ZZZ",
\r
307 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
308 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
309 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
310 Character.valueOf('A'), new ItemStack(Block.obsidian),
\r
312 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
\r
314 "XYX", "ZAZ", "ZZZ",
\r
315 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
316 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
317 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
318 Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
\r
320 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
\r
322 "XYX", "ZAZ", "ZZZ",
\r
323 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
324 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
325 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
326 Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
\r
330 api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
\r
331 api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
\r
332 api.addLangCompound("ja_JP", "Water", "水");
\r
335 //化合物のHandlerを設定します
\r
336 api.settingCompoundHandler("Water", new CompoundWater());
\r
339 api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));
\r
342 api.addMaterialRecipe(
\r
345 new ItemStack(Block.stone),
\r
347 new ItemStack(Block.stone),
\r
348 new ItemStack(Item.gunpowder),
\r
349 new ItemStack(Block.stone),
\r
351 new ItemStack(Block.stone),
\r
354 new ItemStack(this.itemAtomGrenade, 16, 0),
\r
355 new NBTRecipeGrenade()
\r
358 this.proxy.registerTickHandler();
\r
361 private void apiProcessing(final FMLPostInitializationEvent event) {
\r
363 this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());
\r
364 for (int i = 0; i < api.getCompoundsLang().size(); i++) {
\r
365 this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());
\r
369 private void debug(final FMLPostInitializationEvent event) {
\r