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.minecraft.src.ModLoader;
9 import net.minecraftforge.common.Configuration;
10 import net.minecraftforge.common.Property;
11 import net.minecraftforge.oredict.OreDictionary;
12 import pcc.chemicraft.block.BlockChemicalCombinationTable;
13 import pcc.chemicraft.block.BlockChemicalCraftingTable;
14 import pcc.chemicraft.block.BlockElectrolysisTable;
15 import pcc.chemicraft.block.BlockPyrolysisTable;
16 import pcc.chemicraft.block.BlockToolAndWeaponCraftingTable;
17 import pcc.chemicraft.compounds.CompoundDebug;
18 import pcc.chemicraft.compounds.CompoundWater;
19 import pcc.chemicraft.creativetab.CreativeTabAtomOres;
20 import pcc.chemicraft.creativetab.CreativeTabChemiCraft;
21 import pcc.chemicraft.debug.CommandDeleteItem;
22 import pcc.chemicraft.debug.CommandGenDebugRoom;
23 import pcc.chemicraft.debug.CommandSetTile;
24 import pcc.chemicraft.entity.EntityDust;
25 import pcc.chemicraft.gen.EnumOreSpawnFrequency;
26 import pcc.chemicraft.item.ItemAtoms;
27 import pcc.chemicraft.item.ItemAtomsGrenade;
28 import pcc.chemicraft.item.ItemChemiCell;
29 import pcc.chemicraft.item.ItemCompounds;
30 import pcc.chemicraft.item.ItemDust;
31 import pcc.chemicraft.item.ItemGasCollectingBottle;
32 import pcc.chemicraft.ore.BlockAtomOres;
33 import pcc.chemicraft.ore.ItemAtomOres;
34 import pcc.chemicraft.system.CommonProxy;
35 import pcc.chemicraft.system.PacketHandler;
36 import pcc.chemicraft.tileentity.TileEntityChemicalCombinationTable;
37 import pcc.chemicraft.tileentity.TileEntityChemicalCraftingTable;
38 import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
39 import pcc.chemicraft.tileentity.TileEntityPyrolysisTable;
40 import pcc.chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
41 import pcc.chemicraft.util.Auxiliary;
42 import pcc.chemicraft.util.Auxiliary.ArrayAuxiliary;
43 import pcc.chemicraft.util.Auxiliary.NameAuxiliary;
44 import pcc.chemicraft.util.NBTRecipeGrenade;
45 import cpw.mods.fml.common.Mod;
46 import cpw.mods.fml.common.SidedProxy;
47 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
48 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
49 import cpw.mods.fml.common.event.FMLServerStartingEvent;
50 import cpw.mods.fml.common.network.NetworkMod;
51 import cpw.mods.fml.common.network.NetworkRegistry;
52 import cpw.mods.fml.common.registry.EntityRegistry;
53 import cpw.mods.fml.common.registry.GameRegistry;
54 import cpw.mods.fml.common.registry.LanguageRegistry;
60 @Mod(modid = "chemiCraft", name = "ChemiCraft", version = "beta")
61 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraft", packetHandler = PacketHandler.class)
62 public class ChemiCraft implements Runnable {
64 public static final String[] ATOMSNAME = {
65 "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon",
66 "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium",
67 "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttorium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium",
68 "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium",
69 "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum",
70 "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium",
71 "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium",
72 "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Ununtrium", "Ununquadium", "Ununpentium", "Ununhexium", "Ununseptium", "Ununoctium" };
74 public static final String[] ATOMSNAMEJP = {
75 "水素", "ヘリウム", "リチウム", "ベリウム", "ホウ素", "炭素", "窒素", "酸素", "フッ素", "ネオン", "ナトリウム", "マグネシウム", "アルミニウム", "ケイ素", "リン", "硫黄", "塩素", "アルゴン", "カリウム", "カルシウム", "スカンジウム",
76 "チタン", "バナジウム", "クロム", "マンガン", "鉄", "コバルト", "ニッケル", "銅", "亜鉛", "ガリウム", "ゲルマニウム", "ヒ素", "セレン", "臭素", "クリプトン", "ルビジウム", "ストロンチウム", "イットリウム", "ジルコニウム", "ニオブ", "モリブデン", "テクネチウム", "ルテニウム",
77 "ロジウム", "パラジウム", "銀", "カドミウム", "インジウム", "スズ", "アンチモン", "テルル", "ヨウ素", "キセノン", "セシウム", "バリウム", "ランタン", "セリウム", "プラセオジム", "ネオジム", "プロメチウム", "サマリウム", "ユウロビウム", "ガドリニウム", "テルビウム", "ジスプロニウム",
78 "ホルミウム", "エルビウム", "ツリウム", "イッテルビウム", "ルテチウム", "ハフニウム", "タンタル", "タングステン", "レニウム", "オスミウム", "イリジウム", "白金", "金", "水銀", "タリウム", "鉛", "ビスマス", "ポロニウム", "アスタチン", "ラドン", "フランシウム", "ラジウム",
79 "アクチニウム", "トリウム", "プロトアクチウム", "ウラン", "ネプツニウム", "プルトニウム", "アメリシウム", "キュリウム", "バークリウム", "カルホルニウム", "アインスタイニウム", "フェルミウム", "メンデレビウム", "ノーベリウム", "ローレンシウム", "ラサホージウム", "ドブニウム", "シーボーギウム",
80 "ボーリウム", "ハッシウム", "マイトネリウム", "ダームスタチウム", "レントゲニウム", "コペルニシウム", "ウンウントリウム", "ウンウンクアジウム", "ウンウンペンチウム", "ウンウンヘキシウム", "ウンウンセプチウム", "ウンウンオクチウム" };
85 @Mod.Instance("chemiCraft")
86 public static ChemiCraft instance;
91 @SidedProxy(clientSide = "pcc.chemicraft.client.ClientProxy", serverSide = "pcc.chemicraft.system.CommonProxy")
92 public static CommonProxy proxy;
95 * ChemiCraftのCreativeTab.
97 public static final CreativeTabs creativeTabChemiCraft = new CreativeTabChemiCraft("ChemiCraft");
98 public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomOres("AtomsOre");
104 public int compoundsID;
105 public int gasCollectingBottleID;
106 public int atomGrenadeID;
107 public int chemicalCellsID;
112 public int pyrolysisTableID;
113 public int electrolysisTableID;
114 public int chemicalConbinationTableID;
115 public int toolAndWeaponCraftingTableID;
116 public int chemicalCraftingTableID;
118 public int[] atomOresID = new int[3];
123 public int guiPyrolysisTableID;
124 public int guiElectrolysisTableID;
125 public int guiChemicalCombinationTableID;
126 public int guiToolAndWeaponCraftingTableID;
127 public int guiChemicalCraftingTableID;
132 public Block blockPyrolysisTable;
133 public Block blockElectrolysisTable;
134 public Block blockChemicalCombinationTable;
135 public Block blockToolAndWeaponCraftingTable;
136 public Block blockChemicalCraftingTable;
138 public Block[] blockAtomOres = new Block[atomOresID.length];
143 public Item itemAtoms;
144 public Item itemCompounds;
145 public Item itemGasCollectingBottle;
146 public Item itemAtomGrenade;
147 public Item itemChemicalCells;
148 public Item itemDust;
151 * このmodで使用するTextureのパス.
153 public final String ITEM_ATOMS_TEXTURE = "/pcc/chemicraft/items/Atoms.png";
154 public final String ITEM_COMPOUNDS_TEXTURE = "/pcc/chemicraft/items/Compounds.png";
155 public final String ITEM_VEGETABLES_TEXTURE = "/pcc/chemicraft/items/Vegetables.png";
156 public final String ITEM_TEXTURE = "/pcc/chemicraft/items/items.png";
157 public final String BLOCK_CHEMICAL_CRAFTING_TABLE_TEXTURE = "/pcc/chemicraft/blocks/cctable.png";
158 public final String BLOCK_ATOMS_ORE_TEXTURE = "/pcc/chemicraft/blocks/AtomsOre.png";
159 public final String BLOCK_VEGETABLES_TEXTURE = "/pcc/chemicraft/blocks/Vegetables.png";
160 public final String GUI_PYROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Pyrolysis.png";
161 public final String GUI_ELECTROLYSIS_TEXTURE = "/pcc/chemicraft/guis/Electrolysis.png";
162 public final String GUI_CHEMICALCOMBINATION_TEXTURE = "/pcc/chemicraft/guis/ChemicalCombination.png";
163 public final String GUI_TOOLANDWEAPONCRAFTING_TEXTURE = "/pcc/chemicraft/guis/ToolAndWeaponCrafting.png";
164 public final String GUI_CHEMICALCRAFTING_TEXTURE = "/pcc/chemicraft/guis/MaterialCrafting.png";
165 public final String ENTITY_PARTICLE_TEXRURE = "/pcc/chemicraft/entityParticles/dust.png";
168 * このmodに必要な補助クラスのインスタンス.
170 public Auxiliary auxiliary = new Auxiliary();
171 public NameAuxiliary nameAuxiliary = new NameAuxiliary();
172 public ArrayAuxiliary arrayAuxiliary = new ArrayAuxiliary();
174 private ChemiCraftAPI api = ChemiCraftAPI.instance();
175 private ChemiCraftData chemicalData = new ChemiCraftData();
180 private Thread thread;
183 * Eventのインスタンス(PostInit以降)
185 private FMLPostInitializationEvent event;
188 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
189 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
192 Property pyrolysisTableIDProp = cfg.getBlock("PyrolysisTable", 2400);
193 Property electrolysisTableIDProp = cfg.getBlock("ElectrolysisTable", 2401);
194 Property chemicalCombinationTableIDProp = cfg.getBlock("ChemicalCombinationID", 2402);
195 Property toolAndWeaponCraftingTableIDProp = cfg.getBlock("ToolAndWeaponCraftingTableID", 2403);
196 Property chemicalCraftingTableIDProp = cfg.getBlock("ChemicalCraftingTableID", 2404);
198 Property[] atomOresIDProp = new Property[this.atomOresID.length];
199 for (int i = 0; i < atomOresIDProp.length; i++) {
200 atomOresIDProp[i] = cfg.getBlock("AtomsOreID:" + i, 2500 + i);
203 Property atomsIDProp = cfg.getItem("AtomsID", 25000);
204 Property compoundsIDProp = cfg.getItem("CompoundsID", 25001);
205 Property gasCollectingBottleIDProp = cfg.getItem("gasCollectingBottleID", 25002);
206 Property atomGrenadeIDProp = cfg.getItem("AtomGrenadeID", 25003);
207 Property chemicalCellsIDProp = cfg.getItem("ChemicalCellID", 25004);
209 Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
210 Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
211 Property guiChemicalCombinationTableIDProp = cfg.get("GUI", "GUIChemicalCombinationTableID", 1002);
212 Property guiToolAndWeaponCraftingTableIDProp = cfg.get("GUI", "GUIToolAndWeaponCraftingTableID", 1003);
213 Property guiChemicalCraftingTableIDProp = cfg.get("GUI", "GUIChemicalCraftingTableID", 1004);
216 this.pyrolysisTableID = pyrolysisTableIDProp.getInt();
217 this.electrolysisTableID = electrolysisTableIDProp.getInt();
218 this.chemicalConbinationTableID = chemicalCombinationTableIDProp.getInt();
219 this.toolAndWeaponCraftingTableID = toolAndWeaponCraftingTableIDProp.getInt();
220 this.chemicalCraftingTableID = chemicalCraftingTableIDProp.getInt();
221 for (int i = 0; i < atomOresID.length; i++) {
222 this.atomOresID[i] = atomOresIDProp[i].getInt();
225 this.atomsID = atomsIDProp.getInt();
226 this.compoundsID = compoundsIDProp.getInt();
227 this.gasCollectingBottleID = gasCollectingBottleIDProp.getInt();
228 this.atomGrenadeID = atomGrenadeIDProp.getInt();
229 this.chemicalCellsID = chemicalCellsIDProp.getInt();
231 this.guiPyrolysisTableID = guiPyrolysisTableIDProp.getInt();
232 this.guiElectrolysisTableID = guiElectrolysisTableIDProp.getInt();
233 this.guiChemicalCombinationTableID = guiChemicalCombinationTableIDProp.getInt();
234 this.guiToolAndWeaponCraftingTableID = guiToolAndWeaponCraftingTableIDProp.getInt();
235 this.guiChemicalCraftingTableID = guiChemicalCraftingTableIDProp.getInt();
241 public void serverStarting(final FMLServerStartingEvent event) {
242 event.registerServerCommand(new CommandSetTile());
243 event.registerServerCommand(new CommandDeleteItem());
244 event.registerServerCommand(new CommandGenDebugRoom());
248 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
249 this.thread = new Thread(this);
253 } catch (InterruptedException e1) {
254 e1.printStackTrace();
259 } catch (InterruptedException e) {
262 proxy.registerRenderInformation();
269 if (proxy != null && instance != null) {
270 this.settingProcessing(event);
271 this.apiProcessing(event);
278 private void settingProcessing(final FMLPostInitializationEvent event) {
281 this.blockPyrolysisTable = new BlockPyrolysisTable(this.pyrolysisTableID, 0, Material.ground).
284 setStepSound(Block.soundStoneFootstep).
285 setBlockName("PyrolysisTable");
286 this.blockElectrolysisTable = new BlockElectrolysisTable(this.electrolysisTableID, 1, Material.ground).
289 setStepSound(Block.soundStoneFootstep).
290 setBlockName("ElectrolysisTable");
291 this.blockChemicalCombinationTable = new BlockChemicalCombinationTable(this.chemicalConbinationTableID, 2, Material.ground).
294 setStepSound(Block.soundStoneFootstep).
295 setBlockName("ChemicalCombinationTable");
296 this.blockToolAndWeaponCraftingTable = new BlockToolAndWeaponCraftingTable(this.toolAndWeaponCraftingTableID, 3, Material.ground).
299 setStepSound(Block.soundStoneFootstep).
300 setBlockName("ToolAndWeaponCraftingTable");
301 this.blockChemicalCraftingTable = new BlockChemicalCraftingTable(this.chemicalCraftingTableID, 4, Material.ground).
304 setStepSound(Block.soundStoneFootstep).
305 setBlockName("ChemicalCraftingTable");
307 for (int i = 0; i < blockAtomOres.length; i++)
309 this.blockAtomOres[i] = new BlockAtomOres(this.atomOresID[i]).
312 setStepSound(Block.soundStoneFootstep).
313 setBlockName("AtomsOre" + i);
314 GameRegistry.registerBlock(blockAtomOres[i], ItemAtomOres.class, "AtomsOre" + i);
318 this.itemAtoms = new ItemAtoms(this.atomsID).setItemName("atoms");
319 this.itemCompounds = new ItemCompounds(this.compoundsID).setItemName("compounds");
320 this.itemGasCollectingBottle = new ItemGasCollectingBottle(this.gasCollectingBottleID).setItemName("gasCollectingBottle").setIconIndex(0);
321 this.itemAtomGrenade = new ItemAtomsGrenade(this.atomGrenadeID).setItemName("grenade").setIconIndex(1);
322 this.itemChemicalCells = new ItemChemiCell(this.chemicalCellsID).setItemName("chemiCell").setIconIndex(3);
323 this.itemDust = new ItemDust(15000).setItemName("dust").setIconIndex(12);
325 // BlockをMinecraftに登録します
326 GameRegistry.registerBlock(this.blockPyrolysisTable, "BlockPyrolysisTable");
327 GameRegistry.registerBlock(this.blockChemicalCombinationTable, "BlockChemicalCombinationTable");
328 GameRegistry.registerBlock(this.blockToolAndWeaponCraftingTable, "BlockToolAndWeaponCraftingTable");
329 GameRegistry.registerBlock(this.blockChemicalCraftingTable, "BlockMaterialCraftingTable");
330 GameRegistry.registerBlock(this.blockElectrolysisTable, "BlockElectrolysisTable");
333 this.nameAuxiliary.addName(this.blockPyrolysisTable, "PyrolysisTable");
334 this.nameAuxiliary.addName(this.blockPyrolysisTable, "ja_JP", "熱分解台");
335 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ChemicalCombinationTable");
336 this.nameAuxiliary.addName(this.blockChemicalCombinationTable, "ja_JP", "化合台");
337 this.nameAuxiliary.addName(this.blockToolAndWeaponCraftingTable, "ToolAndWeaponCraftingTable");
338 this.nameAuxiliary.addName(this.blockToolAndWeaponCraftingTable, "ja_JP", "ツール&武器製作台");
339 this.nameAuxiliary.addName(this.blockChemicalCraftingTable, "ChemicalCraftingTable");
340 this.nameAuxiliary.addName(this.blockChemicalCraftingTable, "ja_JP", "素材製作台");
341 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ElectrolysisTable");
342 this.nameAuxiliary.addName(this.blockElectrolysisTable, "ja_JP", "電気分解台");
345 this.nameAuxiliary.addName(this.itemAtoms, ATOMSNAME);
346 this.nameAuxiliary.addName(this.itemAtoms, "ja_JP", ATOMSNAMEJP);
347 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "GasCollectingBottle");
348 this.nameAuxiliary.addName(this.itemGasCollectingBottle, "ja_JP", "集気瓶");
349 this.nameAuxiliary.addName(this.itemAtomGrenade, "AtomGrenade");
350 this.nameAuxiliary.addName(this.itemAtomGrenade, "ja_JP", "元素手榴弾");
351 this.nameAuxiliary.addName(this.itemDust, "dust");
352 this.nameAuxiliary.addName(this.itemDust, "ja_JP", "粉塵");
355 GameRegistry.registerTileEntity(TileEntityPyrolysisTable.class, "TileEntityPyrolysisTable");
356 GameRegistry.registerTileEntity(TileEntityChemicalCombinationTable.class, "TileEntityChemicalCombinationTable");
357 GameRegistry.registerTileEntity(TileEntityToolAndWeaponCraftingTable.class, "TileEntityToolAndWeaponCraftingTable");
358 GameRegistry.registerTileEntity(TileEntityChemicalCraftingTable.class, "TileEntityChemicalCraftingTable");
359 GameRegistry.registerTileEntity(TileEntityElectrolysisTable.class, "TileEntityElectrolysisTable");
362 NetworkRegistry.instance().registerGuiHandler(instance, proxy);
365 GameRegistry.addRecipe(new ItemStack(this.blockPyrolysisTable),
368 Character.valueOf('X'), new ItemStack(Item.ingotIron),
369 Character.valueOf('Y'), new ItemStack(Block.workbench),
370 Character.valueOf('Z'), new ItemStack(Block.stone),
371 Character.valueOf('A'), new ItemStack(Item.bucketLava),
373 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCombinationTable),
376 Character.valueOf('X'), new ItemStack(Item.ingotIron),
377 Character.valueOf('Y'), new ItemStack(Block.workbench),
378 Character.valueOf('Z'), new ItemStack(Block.stone),
379 Character.valueOf('A'), new ItemStack(Block.obsidian),
381 GameRegistry.addRecipe(new ItemStack(this.blockToolAndWeaponCraftingTable),
384 Character.valueOf('X'), new ItemStack(Item.ingotIron),
385 Character.valueOf('Y'), new ItemStack(Block.workbench),
386 Character.valueOf('Z'), new ItemStack(Block.stone),
387 Character.valueOf('A'), new ItemStack(Item.pickaxeSteel),
389 GameRegistry.addRecipe(new ItemStack(this.blockChemicalCraftingTable),
392 Character.valueOf('X'), new ItemStack(Item.ingotIron),
393 Character.valueOf('Y'), new ItemStack(Block.workbench),
394 Character.valueOf('Z'), new ItemStack(Block.stone),
395 Character.valueOf('A'), new ItemStack(this.itemAtoms, 1, 0),
399 api.addChemicalCell(itemChemicalCells, "ChemicalCell", 1000);
400 api.addChemicalCellLanguage("ChemicalCell", "ja_JP", "化学電池");
405 api.addAtomOres("Petalite", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 4, 10}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi4O10
406 api.addAtomOresLanguage("Petalite", "ペタル石", "ja_JP");
407 api.addAtomOres("Spodumene", new String[]{"Li", "Al", "Si", "O"}, new Integer[]{1, 1, 2, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // LiAlSi2O6
408 api.addAtomOresLanguage("Spodumene", "リチア輝石", "ja_JP");
411 api.addAtomOres("Beryl", new String[]{"Be", "Al", "Si", "O"}, new Integer[]{3, 2, 6, 18}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Be3Al2Si6O18
412 api.addAtomOresLanguage("Beryl", "緑柱石", "ja_JP");
413 api.addAtomOres("Chrysoberyl", new String[]{"Be", "Al", "O"}, new Integer[]{1, 2, 4}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // BeAl2O4
414 api.addAtomOresLanguage("Chrysoberyl", "金緑石", "ja_JP");
417 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
418 api.addAtomOresLanguage("Ulexite", "ウレキサイト", "ja_JP");
421 api.addAtomOres("Fluorite", new String[]{"Ca", "F"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaF2
422 api.addAtomOresLanguage("Fluorite", "蛍石", "ja_JP");
423 api.addAtomOres("Cryolite", new String[]{"Na", "Al", "F"}, new Integer[]{3, 1, 6}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Na3AlF6
424 api.addAtomOresLanguage("Cryolite", "氷晶石", "ja_JP");
427 api.addAtomOres("RockSalt", new String[]{"Na", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // NaCl
428 api.addAtomOresLanguage("RockSalt", "岩塩", "ja_JP");
431 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
432 api.addAtomOresLanguage("Dolomite", "苦灰石", "ja_JP");
433 api.addAtomOres("Magnesite", new String[]{"Mg", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // MgCO3
434 api.addAtomOresLanguage("Magnesite", "菱苦土石", "ja_JP");
437 api.addAtomOres("Gibbsite", new String[]{"Al", "O", "H"}, new Integer[]{3, 3, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al(OH)3
438 api.addAtomOresLanguage("Gibbsite", "ギブス石", "ja_JP");
439 api.addAtomOres("Ruby", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
440 api.addAtomOresLanguage("Ruby", "ルビー", "ja_JP");
441 api.addAtomOres("Sapphire", new String[]{"Al", "O"}, new Integer[]{2, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // Al2O3
442 api.addAtomOresLanguage("Sapphire", "サファイア", "ja_JP");
445 api.addAtomOres("Quartz", new String[]{"Si", "O"}, new Integer[]{1, 2}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // SiO2
446 api.addAtomOresLanguage("Quartz", "石英", "ja_JP");
449 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
450 api.addAtomOresLanguage("Fluorapatite", "フッ素リン灰石", "ja_JP");
451 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
452 api.addAtomOresLanguage("Chlorapatite", "塩素燐灰石", "ja_JP");
453 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)
454 api.addAtomOresLanguage("Hydroxylapatite", "水酸燐灰石", "ja_JP");
457 api.addAtomOres("Sylvite", new String[]{"K", "Cl"}, new Integer[]{1, 1}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // KCl
458 api.addAtomOresLanguage("Sylvite", "カリ岩塩", "ja_JP");
461 api.addAtomOres("Calcite", new String[]{"Ca", "C", "O"}, new Integer[]{1, 1, 3}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // CaCO3
462 api.addAtomOresLanguage("Calcite", "方解石", "ja_JP");
465 api.addAtomOres("Thortveitite", new String[]{"Sc", "Y", "Si", "O"}, new Integer[]{2, 2, 2, 7}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // (Sc,Y)2Si2O7
466 api.addAtomOresLanguage("Thortveitite", "トルトベイト石", "ja_JP");
468 // api.addAtomOres("元素名(英)", new String[]{"元素"}, new Integer[]{<数>}, this.atomOresID[api.getAtomOresLastIndex()], 5, 1, 50); // 化学式
469 // api.addAtomOresLanguage("元素名(英)", "元素名(他国語)", "言語");
472 this.api.addCompound("ja_JP", "ChlorousAcid", "亜塩素酸");
473 this.api.addCompound("ja_JP", "CarbonMonoxide", "一酸化炭素");
474 this.api.addCompound("ja_JP", "CarbonDioxide", "二酸化炭素");
475 this.api.addCompound("ja_JP", "Water", "水");
476 this.api.addCompound("ja_JP", "SodiumChloride", "塩化ナトリウム");
477 this.api.addCompound("ja_JP", "SodiumBicarbonate", "重曹");
480 this.api.settingCompoundHandler("Water", new CompoundWater());
483 this.api.addChemicalCombinationRecipe(new String[]{"Na", "O", "H"}, new Integer[]{1, 1, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("SodiumChloride")));
484 this.api.addChemicalCombinationRecipe(new String[]{"H", "O", "Cl"}, new Integer[]{1, 2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("ChlorousAcid")));
485 this.api.addChemicalCombinationRecipe(new String[]{"H", "O"}, new Integer[]{2, 1}, new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")));
488 this.api.addMaterialRecipe(new ItemStack[] {
492 new ItemStack(this.itemAtoms, 1, ChemiCraftData.ZINC),
494 new ItemStack(this.itemAtoms, 1, ChemiCraftData.COPPER),
495 new ItemStack(Item.bucketWater),
496 new ItemStack(Item.bucketWater),
497 new ItemStack(Item.bucketWater),
499 new ItemStack(this.itemChemicalCells, 1, 0),
503 this.api.addMaterialRecipe(new ItemStack[] {
505 new ItemStack(Block.stone),
507 new ItemStack(Block.stone),
508 new ItemStack(Item.gunpowder),
509 new ItemStack(Block.stone),
511 new ItemStack(Block.stone),
514 new ItemStack(this.itemAtomGrenade, 16, 0),
515 new NBTRecipeGrenade()
518 this.api.addPyrolysisDecompositionRecipe(new ItemStack(Item.potion, 1, 0),
519 new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
520 new Integer[] {2, 1});
522 this.api.addPyrolysisDecompositionRecipe(new ItemStack(this.itemCompounds, 1, this.api.getCompound("Water")),
523 new Integer[] {ChemiCraftData.HYDROGEN, ChemiCraftData.OXYGEN},
524 new Integer[] {2, 1});
526 for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++){
527 this.api.addPyrolysisDecompositionRecipe(new ItemStack(this.blockAtomOres[i / 16], 1, i - i / 16 * 16),
528 api.getAtomOresAtoms().get(api.getAtomOresName().getKeyList(i)),
529 api.getAtomOresAmounts().get(api.getAtomOresName().getKeyList(i)));
533 LanguageRegistry.instance().addStringLocalization("entity.Dust.name", "en_US", "Dust");
534 EntityRegistry.registerModEntity(EntityDust.class,
536 ModLoader.getUniqueEntityId(),
542 this.api.addPyrolysisDecompositionFuel(new ItemStack(Item.coal), 2000*8);
545 private void apiProcessing(final FMLPostInitializationEvent event) {
547 for (int i = 0; i < api.getAtomOresName().sizeKeysList(); i++)
549 for (int j = 0; j < api.getAtomOresName().sizeElementsList(api.getAtomOresName().getKeyList(i)); j++)
551 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));
552 OreDictionary.registerOre("ore" + api.getAtomOresName().getKeyList(i), new ItemStack(blockAtomOres[i / 16], 1, i - i / 16 * 16));
556 for (int i = 0; i < api.getAtomOres().size(); i++)
558 GameRegistry.registerWorldGenerator(api.getAtomOres().get(i));
561 for (int i = 0; i < api.getChemicalCellsName().sizeKeysList(); i++)
563 for (int j = 0; j < api.getChemicalCellsName().sizeElementsList(api.getChemicalCellsName().getKeyList(i)); j++)
565 this.nameAuxiliary.addName(new ItemStack(itemChemicalCells, 0, i), api.getChemicalCellsLanguage().get(api.getChemicalCellsName().getKeyList(i), j), api.getChemicalCellsName().get(api.getChemicalCellsName().getKeyList(i), j));
569 for (int i = 0; i < api.getCompoundsName().sizeKeysList(); i++)
571 for (int j = 0; j < api.getCompoundsName().sizeElementsList(api.getCompoundsName().getKeyList(i)); j++)
573 this.nameAuxiliary.addName(new ItemStack(itemCompounds, 0, i), api.getCompoundsLang().get(api.getCompoundsName().getKeyList(i), j), api.getCompoundsName().get(api.getCompoundsName().getKeyList(i), j));
579 private void debug(final FMLPostInitializationEvent event) {
580 this.proxy.registerTickHandler();
581 this.api.addCompound("Debug");
582 this.api.settingCompoundHandler("Debug", new CompoundDebug());
584 this.api.addToolAndWeaponRecipe(new ItemStack[] {
585 new ItemStack(Block.stone, 1, 1)
587 new ItemStack(Block.dirt, 1, 0));