3 import net.minecraft.block.Block;
\r
4 import net.minecraft.block.material.Material;
\r
5 import net.minecraft.client.audio.SoundManager;
\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.Configuration;
\r
10 import net.minecraftforge.common.Property;
\r
11 import chemicraft.block.BlockChemicalCombinationTable;
\r
12 import chemicraft.block.BlockChemicalCraftingTable;
\r
13 import chemicraft.block.BlockPyrolysisTable;
\r
14 import chemicraft.block.BlockToolAndWeaponCraftingTable;
\r
15 import chemicraft.compounds.CompoundDebug;
\r
16 import chemicraft.compounds.CompoundWater;
\r
17 import chemicraft.debug.CommandDeleteItem;
\r
18 import chemicraft.debug.CommandGenDebugRoom;
\r
19 import chemicraft.debug.CommandSetTile;
\r
20 import chemicraft.item.ItemAtoms;
\r
21 import chemicraft.item.ItemAtomsGrenade;
\r
22 import chemicraft.item.ItemCompounds;
\r
23 import chemicraft.item.ItemGasCollectingBottle;
\r
24 import chemicraft.system.CommonProxy;
\r
25 import chemicraft.system.PacketHandler;
\r
26 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
\r
27 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
\r
28 import chemicraft.tileentity.TileEntityPyrolysisTable;
\r
29 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
\r
30 import chemicraft.util.Auxiliary;
\r
31 import chemicraft.util.Auxiliary.ArrayAuxiliary;
\r
32 import chemicraft.util.Auxiliary.NameAuxiliary;
\r
33 import chemicraft.util.CreativeTabAtoms;
\r
34 import chemicraft.util.NBTRecipeGrenade;
\r
35 import cpw.mods.fml.common.Mod;
\r
36 import cpw.mods.fml.common.SidedProxy;
\r
37 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
\r
38 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
\r
39 import cpw.mods.fml.common.event.FMLServerStartingEvent;
\r
40 import cpw.mods.fml.common.network.NetworkMod;
\r
41 import cpw.mods.fml.common.network.NetworkRegistry;
\r
42 import cpw.mods.fml.common.registry.GameRegistry;
\r
49 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
\r
50 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
\r
51 public class ChemiCraft {
\r
53 public static final String[] ATOMSNAME = {
\r
54 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
\r
55 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
\r
56 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
\r
57 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
\r
58 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
\r
59 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
\r
60 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
\r
61 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
\r
63 public static final String[] ATOMSNAMEJP = {
\r
64 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
\r
65 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
\r
66 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
\r
67 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
\r
68 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
\r
69 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
\r
74 @Mod.Instance("chemiCraft")
\r
75 public static ChemiCraft instance;
\r
80 @SidedProxy(clientSide = "chemicraft.client.ClientProxy", serverSide = "chemicraft.system.CommonProxy")
\r
81 public static CommonProxy proxy;
\r
84 * ChemiCraftのCreativeTab.
\r
86 public static final CreativeTabs creativeTab = new CreativeTabAtoms("ChemiCraft");
\r
92 public int compoundsID;
\r
93 public int gasCollectingBottleID;
\r
94 public int atomGrenadeID;
\r
99 public int pyrolysisTableID;
\r
100 public int chemicalConbinationTableID;
\r
101 public int toolAndWeaponCraftingTableID;
\r
102 public int chemicalCraftingTableID;
\r
107 public int guiPyrolysisTableID;
\r
108 public int guiChemicalCombinationTableID;
\r
109 public int guiToolAndWeaponCraftingTableID;
\r
110 public int guiChemicalCraftingTableID;
\r
115 public Block blockPyrolysisTable;
\r
116 public Block blockChemicalCombinationTable;
\r
117 public Block blockToolAndWeaponCraftingTable;
\r
118 public Block blockChemicalCraftingTable;
\r
123 public Item itemAtoms;
\r
124 public Item itemCompounds;
\r
125 public Item itemGasCollectingBottle;
\r
126 public Item itemAtomGrenade;
\r
129 * このmodで使用するTextureのパス.
\r
131 public String itemAtomsTexture = "/chemicraft/items/Atoms.png";
\r
132 public String itemCompoundsTexture = "/chemicraft/items/Compounds.png";
\r
133 public String itemTexture = "/chemicraft/items/items.png";
\r
134 public String blockChemicalCraftingTableTexture = "/chemicraft/blocks/cctable.png";
\r
135 public String guiPyrolysisTexture = "/chemicraft/guis/Pyrolysis.png";
\r
136 public String guiChemicalCombinationTexture = "/chemicraft/guis/ChemicalCombination.png";
\r
137 public String guiToolAndWeaponCraftingTexture = "/chemicraft/guis/ToolAndWeaponCrafting.png";
\r
138 public String guiChemicalCraftingTexture = "/chemicraft/guis/MaterialCrafting.png";
\r
141 * このmodに必要な補助クラスのインスタンス.
\r
143 public Auxiliary auxiliary = new Auxiliary();
\r
144 public NameAuxiliary nameAuxiliary = new NameAuxiliary();
\r
145 public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
\r
147 private ChemiCraftAPI api = ChemiCraftAPI.getInstance();
\r
148 private ChemiCraftData chemicalData = new ChemiCraftData();
\r
151 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
\r
152 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
\r
155 Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);
\r
156 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2401);
\r
157 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2402);
\r
158 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2403);
\r
160 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
\r
161 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
\r
162 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
\r
163 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
\r
165 Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
\r
166 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1001);
\r
167 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1002);
\r
168 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1003);
\r
171 this.pyrolysisTableID = pyrolysisTableIDProp.getInt();
\r
172 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
\r
173 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
\r
174 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
\r
175 this.atomsID = atomsIDProp.getInt();
\r
176 this.compoundsID = compoundsIDProp.getInt();
\r
177 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
\r
178 this.atomGrenadeID = atomGrenadeIDProp.getInt();
\r
179 this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();
\r
180 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
\r
181 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
\r
182 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
\r
187 @Mod.ServerStarting
\r
188 public void serverStarting(final FMLServerStartingEvent event) {
\r
189 event.registerServerCommand(new CommandSetTile());
\r
190 event.registerServerCommand(new CommandDeleteItem());
\r
191 event.registerServerCommand(new CommandGenDebugRoom());
\r
195 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
\r
196 this.settingProcessing(event);
\r
197 this.apiProcessing(event);
\r
201 private void settingProcessing(final FMLPostInitializationEvent event) {
\r
204 this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).
\r
206 setResistance(0.0F).
\r
207 setStepSound(Block.soundStoneFootstep).
\r
208 setBlockName("PyrolysisTable");
\r
209 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 0, Material.ground).
\r
211 setResistance(0.0F).
\r
212 setStepSound(Block.soundStoneFootstep).
\r
213 setBlockName("ChemicalCombinationTable");
\r
214 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 0, Material.ground).
\r
216 setResistance(0.0F).
\r
217 setStepSound(Block.soundStoneFootstep).
\r
218 setBlockName("ToolAndWeaponCraftingTable");
\r
219 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(chemicalCraftingTableID, 0, Material.ground).
\r
221 setResistance(0.0F).
\r
222 setStepSound(Block.soundStoneFootstep).
\r
223 setBlockName("ChemicalCraftingTable");
\r
226 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
\r
227 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
\r
228 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
\r
229 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
\r
231 // BlockをMinecraftに登録します
\r
232 GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");
\r
233 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
\r
234 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
\r
235 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
\r
238 this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");
\r
239 this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");
\r
240 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
\r
241 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
\r
242 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
\r
243 this.nameAuxiliary.addName(blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
\r
244 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ChemicalCraftingTable");
\r
245 this.nameAuxiliary.addName(blockChemicalCraftingTable, "ja_JP", "素材製作台");
\r
248 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
\r
249 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
\r
250 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
\r
251 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
\r
252 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
\r
253 this.nameAuxiliary.addName(this.itemAtomGrenade, "元素手榴弾");
\r
255 // TileEntityを追加します
\r
256 GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");
\r
257 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
\r
258 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
\r
259 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
\r
262 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
\r
265 proxy.registerRenderInformation();
\r
268 GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),
\r
270 "XYX", "ZAZ", "ZZZ",
\r
271 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
272 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
273 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
274 Character.valueOf('A'), new ItemStack(Item.bucketLava),
\r
276 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
\r
278 "XYX", "ZAZ", "ZZZ",
\r
279 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
280 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
281 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
282 Character.valueOf('A'), new ItemStack(Block.obsidian),
\r
284 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
\r
286 "XYX", "ZAZ", "ZZZ",
\r
287 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
288 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
289 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
290 Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
\r
292 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
\r
294 "XYX", "ZAZ", "ZZZ",
\r
295 Character.valueOf('X'), new ItemStack(Item.ingotIron),
\r
296 Character.valueOf('Y'), new ItemStack(Block.workbench),
\r
297 Character.valueOf('Z'), new ItemStack(Block.stone),
\r
298 Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
\r
302 api.addLangCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
\r
303 api.addLangCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
\r
304 api.addLangCompound("ja_JP", "Water", "水");
\r
307 //化合物のHandlerを設定します
\r
308 api.settingCompoundHandler("Water", new CompoundWater());
\r
311 api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, api.getCompound("Water")));
\r
314 api.addMaterialRecipe(new ItemStack[] {
\r
316 new ItemStack(Block.stone),
\r
318 new ItemStack(Block.stone),
\r
319 new ItemStack(Item.gunpowder),
\r
320 new ItemStack(Block.stone),
\r
322 new ItemStack(Block.stone),
\r
325 new ItemStack(this.itemAtomGrenade, 16, 0),
\r
326 new NBTRecipeGrenade()
\r
329 api.addDecompositionRecipe(new ItemStack(Item.potion, 1, 0),
\r
330 new int[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
\r
333 api.addDecompositionRecipe(new ItemStack(this.itemCompounds, 1, api.getCompound("Water")),
\r
334 new int[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
\r
337 api.addDecompositionFuel(new ItemStack(Item.coal), 2000*8);
\r
340 private void apiProcessing(final FMLPostInitializationEvent event) {
\r
342 this.nameAuxiliary.addName(itemCompounds, api.getInstance().getCompoundsName().toArray());
\r
343 for (int i = 0; i < api.getCompoundsLang().size(); i++) {
\r
344 this.nameAuxiliary.addName(itemCompounds, api.getCompoundsLang().get(i), api.getInstance().getCompoundsLangName().toArray());
\r
348 private void debug(final FMLPostInitializationEvent event) {
\r
350 this.proxy.registerTickHandler();
\r
351 api.addCompound("Debug");
\r
352 this.api.settingCompoundHandler("Debug", new CompoundDebug());
\r