1 package pcc.chemicraft;
3 import net.minecraft.block.Block;
4 import net.minecraft.block.material.Material;
5 import net.minecraft.creativetab.CreativeTabs;
6 import net.minecraft.item.Item;
7 import net.minecraft.item.ItemStack;
8 import net.minecraftforge.common.Configuration;
9 import net.minecraftforge.common.Property;
10 import net.minecraftforge.oredict.OreDictionary;
11 import pcc.chemicraft.block.BlockChemicalCombinationTable;
12 import pcc.chemicraft.block.BlockChemicalCraftingTable;
13 import pcc.chemicraft.block.BlockElectrolysisTable;
14 import pcc.chemicraft.block.BlockPyrolysisTable;
15 import pcc.chemicraft.block.BlockToolAndWeaponCraftingTable;
16 import pcc.chemicraft.compounds.CompoundDebug;
17 import pcc.chemicraft.compounds.CompoundWater;
18 import pcc.chemicraft.creativetab.CreativeTabAtomOres;
19 import pcc.chemicraft.creativetab.CreativeTabChemiCraft;
20 import pcc.chemicraft.debug.CommandDeleteItem;
21 import pcc.chemicraft.debug.CommandGenDebugRoom;
22 import pcc.chemicraft.debug.CommandSetTile;
23 import pcc.chemicraft.item.ItemAtoms;
24 import pcc.chemicraft.item.ItemAtomsGrenade;
25 import pcc.chemicraft.item.ItemChemiCell;
26 import pcc.chemicraft.item.ItemCompounds;
27 import pcc.chemicraft.item.ItemGasCollectingBottle;
28 import pcc.chemicraft.ore.BlockAtomOres;
29 import pcc.chemicraft.ore.ItemAtomOres;
30 import pcc.chemicraft.system.CommonProxy;
31 import pcc.chemicraft.system.PacketHandler;
32 import pcc.chemicraft.tileentity.TileEntityChemicalCombinationTable;
33 import pcc.chemicraft.tileentity.TileEntityChemicalCraftingTable;
34 import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
35 import pcc.chemicraft.tileentity.TileEntityPyrolysisTable;
36 import pcc.chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
37 import pcc.chemicraft.util.Auxiliary;
38 import pcc.chemicraft.util.Auxiliary.ArrayAuxiliary;
39 import pcc.chemicraft.util.Auxiliary.NameAuxiliary;
40 import pcc.chemicraft.util.NBTRecipeGrenade;
41 import cpw.mods.fml.common.Mod;
42 import cpw.mods.fml.common.SidedProxy;
43 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
44 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
45 import cpw.mods.fml.common.event.FMLServerStartingEvent;
46 import cpw.mods.fml.common.network.NetworkMod;
47 import cpw.mods.fml.common.network.NetworkRegistry;
48 import cpw.mods.fml.common.registry.GameRegistry;
54 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
55 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
56 public class ChemiCraft implements Runnable {
58 public static final String[] ATOMSNAME = {
59 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
60 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
61 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
62 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
63 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
64 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
65 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
66 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
68 public static final String[] ATOMSNAMEJP = {
69 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
70 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
71 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
72 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
73 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
74 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
79 @Mod.Instance("chemiCraft")
80 public static ChemiCraft instance;
85 @SidedProxy(clientSide = "pcc.chemicraft.client.ClientProxy", serverSide = "pcc.chemicraft.system.CommonProxy")
86 public static CommonProxy proxy;
89 * ChemiCraftのCreativeTab.
91 public static final CreativeTabs creativeTabChemiCraft = new CreativeTabChemiCraft("ChemiCraft");
92 public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomOres("AtomsOre");
98 public int compoundsID;
99 public int gasCollectingBottleID;
100 public int atomGrenadeID;
101 public int chemicalCellsID;
106 public int pyrolysisTableID;
107 public int electrolysisTableID;
108 public int chemicalConbinationTableID;
109 public int toolAndWeaponCraftingTableID;
110 public int chemicalCraftingTableID;
112 public int[] atomOresID = new int[3];
117 public int guiPyrolysisTableID;
118 public int guiElectrolysisTableID;
119 public int guiChemicalCombinationTableID;
120 public int guiToolAndWeaponCraftingTableID;
121 public int guiChemicalCraftingTableID;
126 public Block blockPyrolysisTable;
127 public Block blockElectrolysisTable;
128 public Block blockChemicalCombinationTable;
129 public Block blockToolAndWeaponCraftingTable;
130 public Block blockChemicalCraftingTable;
132 public Block[] blockAtomOres = new Block[atomOresID.length];
137 public Item itemAtoms;
138 public Item itemCompounds;
139 public Item itemGasCollectingBottle;
140 public Item itemAtomGrenade;
141 public Item itemChemicalCells;
144 * このmodで使用するTextureのパス.
146 public final String ITEM_ATOMS_TEXTURE = "/pcc/chemicraft/items/Atoms.png";
147 public final String ITEM_COMPOUNDS_TEXTURE = "/pcc/chemicraft/items/Compounds.png";
148 public final String ITEM_VEGETABLES_TEXTURE = "/pcc/chemicraft/items/Vegetables.png";
149 public final String ITEM_TEXTURE = "/pcc/chemicraft/items/items.png";
150 public final String BLOCK_CHEMICAL_CRAFTING_TABLE_TEXTURE = "/pcc/chemicraft/blocks/cctable.png";
151 public final String BLOCK_ATOMS_ORE_TEXTURE = "/pcc/chemicraft/blocks/AtomsOre.png";
152 public final String BLOCK_VEGETABLES_TEXTURE = "/pcc/chemicraft/blocks/Vegetables.png";
153 public final String GUI_PYROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Pyrolysis.png";
154 public final String GUI_ELECTROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Electrolysis.png";
155 public final String GUI_CHEMICALCOMBINATION_TEXTURE = "/pcc/chemicraft/guis/ChemicalCombination.png";
156 public final String GUI_TOOLANDWEAPONCRAFTING_TEXTURE = "/pcc/chemicraft/guis/ToolAndWeaponCrafting.png";
157 public final String GUI_CHEMICALCRAFTING_TEXTURE = "/pcc/chemicraft/guis/MaterialCrafting.png";
160 * このmodに必要な補助クラスのインスタンス.
162 public Auxiliary auxiliary = new Auxiliary();
163 public NameAuxiliary nameAuxiliary = new NameAuxiliary();
164 public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
166 private ChemiCraftAPI api = ChemiCraftAPI.instance();
167 private ChemiCraftData chemicalData = new ChemiCraftData();
172 private Thread thread;
175 * Eventのインスタンス(PostInit以降)
177 private FMLPostInitializationEvent event;
180 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
181 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
184 Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);
185 Property electrolysisTableIDProp = cfg.getBlock("ElectrolysisTable", 2401);
186 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2402);
187 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2403);
188 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2404);
190 Property[] atomOresIDProp = new Property[this.atomOresID.length];
191 for (int i = 0; i < atomOresIDProp.length; i++) {
192 atomOresIDProp[i] = cfg.getBlock("AtomsOreID:" + i, 2500 + i);
195 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
196 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
197 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
198 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
199 Property chemicalCellsIDProp = cfg.getItem("ChemicalCellID", 25004);
201 Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
202 Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
203 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1002);
204 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1003);
205 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1004);
208 this.pyrolysisTableID = pyrolysisTableIDProp.getInt();
209 this.electrolysisTableID = electrolysisTableIDProp.getInt();
210 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
211 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
212 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
213 for (int i = 0; i < atomOresID.length; i++) {
214 this.atomOresID[i] = atomOresIDProp[i].getInt();
217 this.atomsID = atomsIDProp.getInt();
218 this.compoundsID = compoundsIDProp.getInt();
219 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
220 this.atomGrenadeID = atomGrenadeIDProp.getInt();
221 this.chemicalCellsID = chemicalCellsIDProp.getInt();
223 this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();
224 this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
225 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
226 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
227 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
233 public void serverStarting(final FMLServerStartingEvent event) {
234 event.registerServerCommand(new CommandSetTile());
235 event.registerServerCommand(new CommandDeleteItem());
236 event.registerServerCommand(new CommandGenDebugRoom());
240 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
241 this.thread = new Thread(this);
245 } catch (InterruptedException e1) {
246 e1.printStackTrace();
251 } catch (InterruptedException e) {
254 proxy.registerRenderInformation();
261 if (proxy != null && instance != null) {
262 this.settingProcessing(event);
263 this.apiProcessing(event);
270 private void settingProcessing(final FMLPostInitializationEvent event) {
273 this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).
276 setStepSound(Block.soundStoneFootstep).
277 setBlockName("PyrolysisTable");
278 this.blockElectrolysisTable = new BlockElectrolysisTable(this.electrolysisTableID, 1, Material.ground).
281 setStepSound(Block.soundStoneFootstep).
282 setBlockName("ElectrolysisTable");
283 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 2, Material.ground).
286 setStepSound(Block.soundStoneFootstep).
287 setBlockName("ChemicalCombinationTable");
288 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 3, Material.ground).
291 setStepSound(Block.soundStoneFootstep).
292 setBlockName("ToolAndWeaponCraftingTable");
293 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(this.chemicalCraftingTableID, 4, Material.ground).
296 setStepSound(Block.soundStoneFootstep).
297 setBlockName("ChemicalCraftingTable");
299 for (int i = 0; i < blockAtomOres.length; i++)
301 this.blockAtomOres[i] = new BlockAtomOres(this.atomOresID[i]).
304 setStepSound(Block.soundStoneFootstep).
305 setBlockName("AtomsOre" + i);
306 GameRegistry.registerBlock(blockAtomOres[i], ItemAtomOres.class, "AtomsOre" + i);
310 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
311 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
312 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
313 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
314 this.itemChemicalCells = new ItemChemiCell(this.chemicalCellsID).setItemName("chemiCell").setIconIndex(3);
316 // BlockをMinecraftに登録します
317 GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");
318 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
319 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
320 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
321 GameRegistry.registerBlock(this.blockElectrolysisTable, "BlockElectrolysisTable");
324 this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");
325 this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");
326 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
327 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
328 this.nameAuxiliary.addName(this.blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
329 this.nameAuxiliary.addName(this.blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
330 this.nameAuxiliary.addName(this.blockChemicalCraftingTable, "ChemicalCraftingTable");
331 this.nameAuxiliary.addName(this.blockChemicalCraftingTable, "ja_JP", "素材製作台");
332 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ElectrolysisTable");
333 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ja_JP", "電気分解台");
336 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
337 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
338 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
339 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
340 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
341 this.nameAuxiliary.addName(this.itemAtomGrenade, "ja_JP", "元素手榴弾");
344 GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");
345 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
346 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
347 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
348 GameRegistry.registerTileEntity(TileEntityElectrolysisTable.class, "TileEntityElectrolysisTable");
351 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
354 GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),
357 Character.valueOf('X'), new ItemStack(Item.ingotIron),
358 Character.valueOf('Y'), new ItemStack(Block.workbench),
359 Character.valueOf('Z'), new ItemStack(Block.stone),
360 Character.valueOf('A'), new ItemStack(Item.bucketLava),
362 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
365 Character.valueOf('X'), new ItemStack(Item.ingotIron),
366 Character.valueOf('Y'), new ItemStack(Block.workbench),
367 Character.valueOf('Z'), new ItemStack(Block.stone),
368 Character.valueOf('A'), new ItemStack(Block.obsidian),
370 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
373 Character.valueOf('X'), new ItemStack(Item.ingotIron),
374 Character.valueOf('Y'), new ItemStack(Block.workbench),
375 Character.valueOf('Z'), new ItemStack(Block.stone),
376 Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
378 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
381 Character.valueOf('X'), new ItemStack(Item.ingotIron),
382 Character.valueOf('Y'), new ItemStack(Block.workbench),
383 Character.valueOf('Z'), new ItemStack(Block.stone),
384 Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
388 api.addChemicalCell(itemChemicalCells, "ChemicalCell", 1000);
389 api.addChemicalCellLanguage("ChemicalCell", "ja_JP", "化学電池");
394 api.addAtomOres("Petalite", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 4, 10}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi4O10
395 api.addAtomOresLanguage("Petalite", "ペタル石", "ja_JP");
396 api.addAtomOres("Spodumene", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 2, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi2O6
397 api.addAtomOresLanguage("Spodumene", "リチア輝石", "ja_JP");
400 api.addAtomOres("Beryl", new String[]{"Be", "Al", "Si", "O"}, new Integer[]{3, 2, 6, 18}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Be3Al2Si6O18
401 api.addAtomOresLanguage("Beryl", "緑柱石", "ja_JP");
402 api.addAtomOres("Chrysoberyl", new String[]{"Be", "Al", "O"}, new Integer[]{1, 2, 4}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // BeAl2O4
403 api.addAtomOresLanguage("Chrysoberyl", "金緑石", "ja_JP");
406 api.addAtomOres("Ulexite", new String[]{"Na", "Ca", "B", "O", "H"}, new Integer[]{1, 1, 5, 17, 16}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // NaCaB5O6(OH)6・5H2O
407 api.addAtomOresLanguage("Ulexite", "ウレキサイト", "ja_JP");
410 api.addAtomOres("Fluorite", new String[]{"Ca", "F"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaF2
411 api.addAtomOresLanguage("Fluorite", "蛍石", "ja_JP");
412 api.addAtomOres("Cryolite", new String[]{"Na", "Al", "F"}, new Integer[]{3, 1, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Na3AlF6
413 api.addAtomOresLanguage("Cryolite", "氷晶石", "ja_JP");
416 api.addAtomOres("RockSalt", new String[]{"Na", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // NaCl
417 api.addAtomOresLanguage("RockSalt", "岩塩", "ja_JP");
420 api.addAtomOres("Dolomite", new String[]{"Ca", "Mg", "C", "O"}, new Integer[]{1, 1, 2, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaMg(CO3)2
421 api.addAtomOresLanguage("Dolomite", "苦灰石", "ja_JP");
422 api.addAtomOres("Magnesite", new String[]{"Mg", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // MgCO3
423 api.addAtomOresLanguage("Magnesite", "菱苦土石", "ja_JP");
426 api.addAtomOres("Gibbsite", new String[]{"Al", "O", "H"}, new Integer[]{3, 3, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al(OH)3
427 api.addAtomOresLanguage("Gibbsite", "ギブス石", "ja_JP");
428 api.addAtomOres("Ruby", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
429 api.addAtomOresLanguage("Ruby", "ルビー", "ja_JP");
430 api.addAtomOres("Sapphire", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
431 api.addAtomOresLanguage("Sapphire", "サファイア", "ja_JP");
434 api.addAtomOres("Quartz", new String[]{"Si", "O"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // SiO2
435 api.addAtomOresLanguage("Quartz", "石英", "ja_JP");
438 api.addAtomOres("Fluorapatite", new String[]{"Ca", "P", "O", "F"}, new Integer[]{5, 3, 12, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3F
439 api.addAtomOresLanguage("Fluorapatite", "フッ素リン灰石", "ja_JP");
440 api.addAtomOres("Chlorapatite", new String[]{"Ca", "P", "O", "Cl"}, new Integer[]{5, 3, 12, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3Cl
441 api.addAtomOresLanguage("Chlorapatite", "塩素燐灰石", "ja_JP");
442 api.addAtomOres("Hydroxylapatite", new String[]{"Ca", "P", "O", "H"}, new Integer[]{5, 3, 13, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Ca5(PO4)3(OH)
443 api.addAtomOresLanguage("Hydroxylapatite", "水酸燐灰石", "ja_JP");
446 api.addAtomOres("Sylvite", new String[]{"K", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // KCl
447 api.addAtomOresLanguage("Sylvite", "カリ岩塩", "ja_JP");
450 api.addAtomOres("Calcite", new String[]{"Ca", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaCO3
451 api.addAtomOresLanguage("Calcite", "方解石", "ja_JP");
453 // api.addAtomOres("元素名(英)", new String[]{"元素"}, new Integer[]{<数>}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // 化学式
454 // api.addAtomOresLanguage("元素名(英)", "元素名(他国語)", "言語");
457 this.api.addCompound("ja_JP", "ChlorousAcid", "亜塩素酸");
458 this.api.addCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
459 this.api.addCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
460 this.api.addCompound("ja_JP", "Water", "水");
461 this.api.addCompound("ja_JP", "SodiumChloride", "塩化ナトリウム");
462 this.api.addCompound("ja_JP", "SodiumBicarbonate", "重曹");
465 this.api.settingCompoundHandler("Water", new CompoundWater());
468 this.api.addChemicalCombinationRecipe(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("SodiumChloride")));
469 this.api.addChemicalCombinationRecipe(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("ChlorousAcid")));
470 this.api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")));
473 this.api.addMaterialRecipe(new ItemStack[] {
477 new ItemStack(this.itemAtoms, 1, ChemiCraftData.ZINC),
479 new ItemStack(this.itemAtoms, 1, ChemiCraftData.COPPER),
480 new ItemStack(Item.bucketWater),
481 new ItemStack(Item.bucketWater),
482 new ItemStack(Item.bucketWater),
484 new ItemStack(this.itemChemicalCells, 1, 0),
488 this.api.addMaterialRecipe(new ItemStack[] {
490 new ItemStack(Block.stone),
492 new ItemStack(Block.stone),
493 new ItemStack(Item.gunpowder),
494 new ItemStack(Block.stone),
496 new ItemStack(Block.stone),
499 new ItemStack(this.itemAtomGrenade, 16, 0),
500 new NBTRecipeGrenade()
503 this.api.addPyrolysisDecompositionRecipe(new ItemStack(Item.potion, 1, 0),
504 new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
505 new Integer[] {2, 1});
507 this.api.addPyrolysisDecompositionRecipe(new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")),
508 new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
509 new Integer[] {2, 1});
511 for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++){
512 this.api.addPyrolysisDecompositionRecipe(new ItemStack(this.blockAtomOres[i / 16], 1, i - i / 16 * 16),
513 api.getAtomOresAtoms().get(api.getAtomOresName().getKeyList(i)),
514 api.getAtomOresAmounts().get(api.getAtomOresName().getKeyList(i)));
517 this.api.addPyrolysisDecompositionFuel(new ItemStack(Item.coal), 2000*8);
520 private void apiProcessing(final FMLPostInitializationEvent event) {
522 for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++)
524 for (int j = 0; j < api.getAtomOresName().sizeElementsList(api.getAtomOresName().getKeyList(i)); j++)
526 this.nameAuxiliary.addName(new ItemStack(blockAtomOres[i / 16], 0, i - i / 16 * 16), api.getAtomOresLanguage().get(api.getAtomOresName().getKeyList(i), j), api.getAtomOresName().get(api.getAtomOresName().getKeyList(i), j));
527 OreDictionary.registerOre("ore" + api.getAtomOresName().getKeyList(i), new ItemStack(blockAtomOres[i / 16], 1, i - i / 16 * 16));
531 for (int i = 0; i < api.getAtomOres().size(); i++)
533 GameRegistry.registerWorldGenerator(api.getAtomOres().get(i));
536 for (int i = 0; i < api.getChemicalCellsName().sizeKeysList(); i++)
538 for (int j = 0; j < api.getChemicalCellsName().sizeElementsList(api.getChemicalCellsName().getKeyList(i)); j++)
540 this.nameAuxiliary.addName(new ItemStack(itemChemicalCells, 0, i), api.getChemicalCellsLanguage().get(api.getChemicalCellsName().getKeyList(i), j), api.getChemicalCellsName().get(api.getChemicalCellsName().getKeyList(i), j));
544 for (int i = 0; i < api.getCompoundsName().sizeKeysList(); i++)
546 for (int j = 0; j < api.getCompoundsName().sizeElementsList(api.getCompoundsName().getKeyList(i)); j++)
548 this.nameAuxiliary.addName(new ItemStack(itemCompounds, 0, i), api.getCompoundsLang().get(api.getCompoundsName().getKeyList(i), j), api.getCompoundsName().get(api.getCompoundsName().getKeyList(i), j));
554 private void debug(final FMLPostInitializationEvent event) {
555 this.proxy.registerTickHandler();
556 this.api.addCompound("Debug");
557 this.api.settingCompoundHandler("Debug", new CompoundDebug());
559 this.api.addToolAndWeaponRecipe(new ItemStack[] {
560 new ItemStack(Block.stone, 1, 1)
562 new ItemStack(Block.dirt, 1, 0));