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