1 package pcc.chemicraft.base;
3 import java.util.ArrayList;
4 import java.util.Iterator;
7 import net.minecraft.block.Block;
8 import net.minecraft.creativetab.CreativeTabs;
9 import net.minecraft.item.Item;
10 import net.minecraft.item.ItemStack;
11 import net.minecraftforge.common.Configuration;
12 import net.minecraftforge.common.Property;
13 import pcc.chemicraft.ChemiCraft;
14 import pcc.chemicraft.ChemiCraftConfiguration;
15 import pcc.chemicraft.ChemiCraftRegister;
16 import pcc.chemicraft.EnumLoggingType;
17 import pcc.chemicraft.base.creativetab.CreativeTabAtomOres;
18 import pcc.chemicraft.base.system.CommonProxy;
19 import pcc.chemicraft.base.system.PacketHandler;
20 import pcc.chemicraft.core.ChemiCraftCore;
21 import cpw.mods.fml.common.Loader;
22 import cpw.mods.fml.common.LoaderState.ModState;
23 import cpw.mods.fml.common.Mod;
24 import cpw.mods.fml.common.Mod.Instance;
25 import cpw.mods.fml.common.Mod.PostInit;
26 import cpw.mods.fml.common.Mod.PreInit;
27 import cpw.mods.fml.common.ModContainer;
28 import cpw.mods.fml.common.SidedProxy;
29 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
30 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
31 import cpw.mods.fml.common.network.NetworkMod;
32 import cpw.mods.fml.common.registry.LanguageRegistry;
34 @Mod(modid = "ChemiCraftBase", name = "ChemiCraftBase", version = "beta1")
35 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.5", channels = "chemicraftbase", packetHandler = PacketHandler.class)
36 public class ChemiCraftBase extends ChemiCraft {
39 * this is ChemiCraft instance.
41 @Instance("ChemiCraftBase")
42 public static ChemiCraftBase instance;
45 * proxy of ChemiCraft.
47 @SidedProxy(clientSide = "pcc.chemicraft.base.client.ClientProxy", serverSide = "pcc.chemicraft.base.system.CommonProxy")
48 public static CommonProxy proxy;
53 public ChemiCraftBaseAPI apiBase = ChemiCraftBaseAPI.instance();
56 * CreativeTab of ChemiCraft.
58 public static final CreativeTabs creativeTabAtomsOre = new CreativeTabAtomOres("AtomsOre");
63 public int atomGrenadeID;
64 public int blackSmokeID;
66 public int radiationGunID;
67 public int radiationBalletID;
68 public int oreSerarcherID;
73 public int[] atomOresID = new int[4];
76 * Variables of Block type.
78 public Block[] blockAtomOres = new Block[atomOresID.length];
81 * Variables of Item type.
83 public Item itemAtomGrenade;
84 public Item itemBlackSmoke;
86 public Item itemRadiationGun;
87 public Item itemRadiationBallet;
88 public Item itemOreSearcher;
91 * the Register Instances.
93 public ChemiCraftRegister registerCompounds;
94 public ChemiCraftRegister registerCompoundsHandler;
95 public ChemiCraftRegister registerItem;
96 public ChemiCraftRegister registerChemicalRecipe;
97 public ChemiCraftRegister registerBlock;
98 public ChemiCraftRegister registerRecipe;
99 public ChemiCraftRegister registerEntitys;
104 public static final String ORE = ChemiCraft.TEXTURE + "AtomsOre_";
106 public ChemiCraftBase() {
107 this.registerCompounds = new ChemiCraftRegisterCompounds(this);
108 this.registerCompoundsHandler = new ChemiCraftRegisterCompoundsHandler(this);
109 this.registerItem = new ChemiCraftRegisterItem(this);
110 this.registerChemicalRecipe = new ChemiCraftRegisterChemicalRecipe(this);
111 this.registerBlock = new ChemiCraftRegisterBlock(this);
112 this.registerRecipe = new ChemiCraftRegisterBaseRecipe(this);
113 this.registerEntitys = new ChemiCraftRegisterEntitys(this);
117 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
118 this.thread = new Thread(this);
124 } catch (InterruptedException e) {
128 proxy.registerRenderInformation();
135 if (proxy != null && instance != null) {
136 this.settingProcessing((FMLPostInitializationEvent) event);
141 Thread loadCheckThread = new Thread() {
145 List<ModContainer> mod = Loader.instance().getModList();
146 ModContainer finalMod = mod.get(mod.size()-1);
147 ModState finalModState = Loader.instance().getModState(finalMod);
148 if (finalModState == ModState.POSTINITIALIZED) {
149 ChemiCraftCore.logger.write("ChemiCraftBase>APIProcessing", EnumLoggingType.INFO);
150 apiProcessing((FMLPostInitializationEvent) event);
156 loadCheckThread.start();
163 * @param event アノテーション呼び出しにより呼び出す必要なし
166 public void chemiPreLoadMethod(final FMLPreInitializationEvent event) {
167 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
170 Property baseBlockID = cfg.get("BlockID", "Base of Block ID", 2500);
171 Property baseItemID = cfg.get("ItemID", "Base of Item ID", 25500);
173 ChemiCraftConfiguration ccfgBlock = new ChemiCraftConfiguration(baseBlockID.getInt());
174 ChemiCraftConfiguration ccfgItem = new ChemiCraftConfiguration(baseItemID.getInt());
176 for (int i = 0; i < atomOresID.length; i++) {
177 this.atomOresID[i] = ccfgBlock.additionID();
180 this.atomGrenadeID = ccfgItem.additionID();
181 this.dustID = ccfgItem.additionID();
182 this.radiationGunID = ccfgItem.additionID();
183 this.radiationBalletID = ccfgItem.additionID();
184 this.blackSmokeID = ccfgItem.additionID();
185 this.oreSerarcherID = ccfgItem.additionID();
190 protected void settingProcessing(FMLPostInitializationEvent event) {
191 this.registerCompounds.start();
192 this.registerCompoundsHandler.start();
193 this.registerItem.start();
194 this.registerBlock.start();
195 this.registerChemicalRecipe.start();
196 this.registerRecipe.start();
197 this.registerEntitys.start();
200 private void apiProcessing(final FMLPostInitializationEvent event) {
202 Iterator<String> langoresItr = this.apiBase.getAtomOresName().iterator();
203 while (langoresItr.hasNext()){
204 String lang = langoresItr.next();
205 ArrayList<String> names = this.apiBase.getAtomOresName().get(lang);
206 for (int i = 0; i < names.size(); i++) {
207 ChemiCraftCore.logger.write("AtomOresAddName:" + "Name-" + names.get(i) + "ID-" + (i / 16)+ "/Damage-" + (i - i / 16 * 16) + "/Lang-" + lang,
208 EnumLoggingType.INFO);
210 LanguageRegistry.instance().addNameForObject(
211 new ItemStack(this.atomOresID[i / 16], 1, i % 16),