1 package pcc.chemicraft.base;
5 import net.minecraft.block.Block;
6 import net.minecraft.creativetab.CreativeTabs;
7 import net.minecraft.item.Item;
8 import net.minecraft.item.ItemStack;
9 import net.minecraftforge.common.Configuration;
10 import net.minecraftforge.common.Property;
11 import net.minecraftforge.oredict.OreDictionary;
12 import pcc.chemicraft.ChemiCraft;
13 import pcc.chemicraft.ChemiCraftConfiguration;
14 import pcc.chemicraft.ChemiCraftRegister;
15 import pcc.chemicraft.EnumLoggingType;
16 import pcc.chemicraft.base.creativetab.CreativeTabAtomOres;
17 import pcc.chemicraft.base.system.CommonProxy;
18 import pcc.chemicraft.base.system.PacketHandler;
19 import pcc.chemicraft.core.ChemiCraftCore;
20 import cpw.mods.fml.common.Loader;
21 import cpw.mods.fml.common.LoaderState.ModState;
22 import cpw.mods.fml.common.Mod;
23 import cpw.mods.fml.common.Mod.Instance;
24 import cpw.mods.fml.common.Mod.PostInit;
25 import cpw.mods.fml.common.Mod.PreInit;
26 import cpw.mods.fml.common.ModContainer;
27 import cpw.mods.fml.common.SidedProxy;
28 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
29 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
30 import cpw.mods.fml.common.network.NetworkMod;
31 import cpw.mods.fml.common.registry.GameRegistry;
33 @Mod(modid = "ChemiCraftBase", name = "ChemiCraftBase", version = "beta1")
34 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.7", channels = "chemicraftbase", packetHandler = PacketHandler.class)
35 public class ChemiCraftBase extends ChemiCraft {
38 * this is ChemiCraft instance.
40 @Instance("ChemiCraftBase")
41 public static ChemiCraftBase instance;
44 * proxy of ChemiCraft.
46 @SidedProxy(clientSide = "pcc.chemicraft.base.client.ClientProxy", serverSide = "pcc.chemicraft.base.system.CommonProxy")
47 public static CommonProxy proxy;
52 public ChemiCraftBaseAPI apiBase = ChemiCraftBaseAPI.instance();
55 * CreativeTab of ChemiCraft.
57 public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomOres("AtomsOre");
62 public int atomGrenadeID;
63 public int blackSmokeID;
65 public int radiationGunID;
66 public int radiationBalletID;
67 public int oreSerarcherID;
72 public int[] atomOresID = new int[4];
75 * Variables of Block type.
77 public Block[] blockAtomOres = new Block[atomOresID.length];
80 * Variables of Item type.
82 public Item itemAtomGrenade;
83 public Item itemBlackSmoke;
85 public Item itemRadiationGun;
86 public Item itemRadiationBallet;
87 public Item itemOreSearcher;
90 * the Register Instances.
92 public ChemiCraftRegister registerCompounds;
93 public ChemiCraftRegister registerCompoundsHandler;
94 public ChemiCraftRegister registerItem;
95 public ChemiCraftRegister registerChemicalRecipe;
96 public ChemiCraftRegister registerBlock;
97 public ChemiCraftRegister registerRecipe;
98 public ChemiCraftRegister registerEntitys;
100 public ChemiCraftBase() {
101 this.registerCompounds = new ChemiCraftRegisterCompounds(this);
102 this.registerCompoundsHandler = new ChemiCraftRegisterCompoundsHandler(this);
103 this.registerItem = new ChemiCraftRegisterItem(this);
104 this.registerChemicalRecipe = new ChemiCraftRegisterChemicalRecipe(this);
105 this.registerBlock = new ChemiCraftRegisterBlock(this);
106 this.registerRecipe = new ChemiCraftRegisterBaseRecipe(this);
107 this.registerEntitys = new ChemiCraftRegisterEntitys(this);
111 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
112 this.thread = new Thread(this);
118 } catch (InterruptedException e) {
122 proxy.registerRenderInformation();
129 if (proxy != null && instance != null) {
130 this.settingProcessing((FMLPostInitializationEvent) event);
131 this.apiProcessing((FMLPostInitializationEvent) event);
136 Thread loadCheckThread = new Thread() {
140 List<ModContainer> mod = Loader.instance().getModList();
141 ModContainer finalMod = mod.get(mod.size()-1);
142 ModState finalModState = Loader.instance().getModState(finalMod);
143 if (finalModState == ModState.POSTINITIALIZED) {
144 ChemiCraftCore.logger.write("ChemiCraftBase>APIProcessing", EnumLoggingType.INFO);
145 apiProcessing((FMLPostInitializationEvent) event);
151 loadCheckThread.start();
158 * @param event アノテーション呼び出しにより呼び出す必要なし
161 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
162 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
165 Property baseBlockID = cfg.get("BlockID", "Base of Block ID", 2500);
166 Property baseItemID = cfg.get("ItemID", "Base of Item ID", 25500);
168 ChemiCraftConfiguration ccfgBlock = new ChemiCraftConfiguration(baseBlockID.getInt());
169 ChemiCraftConfiguration ccfgItem = new ChemiCraftConfiguration(baseItemID.getInt());
171 for (int i = 0; i < atomOresID.length; i++) {
172 this.atomOresID[i] = ccfgBlock.additionID();
175 this.atomGrenadeID = ccfgItem.additionID();
176 this.dustID = ccfgItem.additionID();
177 this.radiationGunID = ccfgItem.additionID();
178 this.radiationBalletID = ccfgItem.additionID();
179 this.blackSmokeID = ccfgItem.additionID();
180 this.oreSerarcherID = ccfgItem.additionID();
185 protected void settingProcessing(FMLPostInitializationEvent event) {
186 this.registerCompounds.start();
187 this.registerCompoundsHandler.start();
188 this.registerItem.start();
189 this.registerBlock.start();
190 this.registerChemicalRecipe.start();
191 this.registerRecipe.start();
192 this.registerEntitys.start();
195 private void apiProcessing(final FMLPostInitializationEvent event) {
197 for (int i = 0; i < apiBase.getAtomOresName().sizeKeysList(); i++) {
198 for (int j = 0; j < apiBase.getAtomOresName().sizeElementsList(apiBase.getAtomOresName().getKeyList(i)); j++) {
199 ChemiCraftCore.logger.write("OreAddName:" + "Name-" + apiBase.getAtomOresName().get(apiBase.getAtomOresName().getKeyList(i), j) +
200 "/Lang-" + apiBase.getAtomOresLanguage().get(apiBase.getAtomOresName().getKeyList(i), j),
201 EnumLoggingType.INFO);
203 this.nameAuxiliary.addName(
205 blockAtomOres[i / 16], 0, i - i / 16 * 16),
206 apiBase.getAtomOresLanguage().get(apiBase.getAtomOresName().getKeyList(i), j),
207 apiBase.getAtomOresName().get(apiBase.getAtomOresName().getKeyList(i), j));
208 OreDictionary.registerOre("ore" + apiBase.getAtomOresName().getKeyList(i),
209 new ItemStack(blockAtomOres[i / 16], 1, i - i / 16 * 16));
210 GameRegistry.registerWorldGenerator(apiBase.getAtomOres().get(i));