1 package asia.tcrs.ccnp.chemicraftnext.base;
3 import java.util.ArrayList;
4 import java.util.Iterator;
7 import net.minecraft.block.Block;
8 import net.minecraft.block.BlockDispenser;
9 import net.minecraft.creativetab.CreativeTabs;
10 import net.minecraft.item.Item;
11 import net.minecraft.item.ItemStack;
12 import net.minecraftforge.common.Configuration;
13 import net.minecraftforge.common.Property;
14 import net.minecraftforge.oredict.OreDictionary;
16 import asia.tcrs.ccnp.chemicraftnext.ChemiCraft;
17 import asia.tcrs.ccnp.chemicraftnext.ChemiCraftConfiguration;
18 import asia.tcrs.ccnp.chemicraftnext.ChemiCraftRegister;
19 import asia.tcrs.ccnp.chemicraftnext.EnumLoggingType;
20 import asia.tcrs.ccnp.chemicraftnext.base.creativetab.CreativeTabAtomOres;
21 import asia.tcrs.ccnp.chemicraftnext.base.dispenser.DispenserBehaviorAtomsGrenade;
22 import asia.tcrs.ccnp.chemicraftnext.base.system.CommonProxy;
23 import asia.tcrs.ccnp.chemicraftnext.base.system.PacketHandler;
24 import asia.tcrs.ccnp.chemicraftnext.core.ChemiCraftCore;
26 import cpw.mods.fml.common.Loader;
27 import cpw.mods.fml.common.LoaderState.ModState;
28 import cpw.mods.fml.common.Mod;
29 import cpw.mods.fml.common.Mod.Instance;
30 import cpw.mods.fml.common.Mod.PostInit;
31 import cpw.mods.fml.common.Mod.PreInit;
32 import cpw.mods.fml.common.ModContainer;
33 import cpw.mods.fml.common.SidedProxy;
34 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
35 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
36 import cpw.mods.fml.common.network.NetworkMod;
37 import cpw.mods.fml.common.registry.GameRegistry;
38 import cpw.mods.fml.common.registry.LanguageRegistry;
41 @Mod(modid = "ChemiCraftNextBase", name = "ChemiCraftNextBase", version = "Beta1")
42 @NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.5", channels = "chemicraftbase", packetHandler = PacketHandler.class)
43 public class ChemiCraftBase extends ChemiCraft {
46 * this is ChemiCraft instance.
48 @Instance("ChemiCraftNextBase")
49 public static ChemiCraftBase instance;
52 * proxy of ChemiCraft.
54 @SidedProxy(clientSide = "asia.tcrs.ccnp.chemicraftnext.base.client.ClientProxy", serverSide = "asia.tcrs.ccnp.chemicraftnext.base.system.CommonProxy")
55 public static CommonProxy proxy;
60 public ChemiCraftBaseAPI apiBase = ChemiCraftBaseAPI.instance();
63 * CreativeTab of ChemiCraft.
65 public static final CreativeTabs creativeTabAtomOres = new CreativeTabAtomOres("AtomOres");
70 public int atomIngotsID;
71 public int atomGrenadeID;
72 public int blackSmokeID;
73 public int oreSerarcherID;
75 public int radiationGunID;
76 public int radiationBalletID;
77 public int raditionGunDataChipID;
82 public int[] atomOresID = new int[4];
85 * Variables of Block type.
87 public Block[] blockAtomOres = new Block[atomOresID.length];
90 * Variables of Item type.
92 public Item itemAtomIngots;
93 public Item itemAtomGrenade;
94 public Item itemBlackSmoke;
96 public Item itemRadiationGun;
97 public Item itemRadiationBallet;
98 public Item itemOreSearcher;
99 public Item itemRaditionGunDataChip;
102 * the Register Instances.
104 public ChemiCraftRegister registerCompounds;
105 public ChemiCraftRegister registerCompoundsHandler;
106 public ChemiCraftRegister registerItem;
107 public ChemiCraftRegister registerChemicalRecipe;
108 public ChemiCraftRegister registerBlock;
109 public ChemiCraftRegister registerRecipe;
110 public ChemiCraftRegister registerEntitys;
115 public static final String INGOT = ChemiCraft.TEXTURE + "atom_ingots_";
116 public static final String ORE = ChemiCraft.TEXTURE + "atom_ores_";
118 public ChemiCraftBase() {
119 this.registerCompounds = new ChemiCraftRegisterCompounds(this);
120 this.registerCompoundsHandler = new ChemiCraftRegisterCompoundsHandler(this);
121 this.registerItem = new ChemiCraftRegisterItem(this);
122 this.registerChemicalRecipe = new ChemiCraftRegisterChemicalRecipe(this);
123 this.registerBlock = new ChemiCraftRegisterBlock(this);
124 this.registerRecipe = new ChemiCraftRegisterBaseRecipe(this);
125 this.registerEntitys = new ChemiCraftRegisterEntitys(this);
129 public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
130 this.thread = new Thread(this);
136 } catch (InterruptedException e) {
140 proxy.registerRenderInformation();
147 if (proxy != null && instance != null) {
148 this.settingProcessing((FMLPostInitializationEvent) event);
153 Thread loadCheckThread = new Thread() {
157 List<ModContainer> mod = Loader.instance().getModList();
158 ModContainer finalMod = mod.get(mod.size()-1);
159 ModState finalModState = Loader.instance().getModState(finalMod);
160 if (finalModState == ModState.POSTINITIALIZED) {
161 ChemiCraftCore.logger.write("ChemiCraftBase>APIProcessing", EnumLoggingType.INFO);
162 apiProcessing((FMLPostInitializationEvent) event);
168 loadCheckThread.start();
175 * @param event アノテーション呼び出しにより呼び出す必要なし
178 public void chemiPreLoadMethod(FMLPreInitializationEvent event) {
179 Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
182 Property baseBlockID = cfg.get("BlockID", "Base of Block ID", 2500);
183 Property baseItemID = cfg.get("ItemID", "Base of Item ID", 25500);
185 ChemiCraftConfiguration ccfgBlock = new ChemiCraftConfiguration(baseBlockID.getInt());
186 ChemiCraftConfiguration ccfgItem = new ChemiCraftConfiguration(baseItemID.getInt());
188 for (int i = 0; i < atomOresID.length; i++) {
189 this.atomOresID[i] = ccfgBlock.additionID();
192 this.atomIngotsID = ccfgItem.additionID();
193 this.atomGrenadeID = ccfgItem.additionID();
194 this.dustID = ccfgItem.additionID();
195 this.radiationGunID = ccfgItem.additionID();
196 this.radiationBalletID = ccfgItem.additionID();
197 this.blackSmokeID = ccfgItem.additionID();
198 this.oreSerarcherID = ccfgItem.additionID();
203 protected void settingProcessing(FMLPostInitializationEvent event) {
204 this.registerCompounds.start();
205 this.registerCompoundsHandler.start();
206 this.registerItem.start();
207 this.registerBlock.start();
208 this.registerChemicalRecipe.start();
209 this.registerRecipe.start();
210 this.registerEntitys.start();
212 BlockDispenser.dispenseBehaviorRegistry.putObject(this.itemAtomGrenade, new DispenserBehaviorAtomsGrenade());
216 private void apiProcessing(final FMLPostInitializationEvent event) {
218 for (int i = 0; i < this.apiBase.getAtomOres().size(); i++) {
219 OreDictionary.registerOre("ore" + this.apiBase.getAtomOresAtomName().get(i), new ItemStack(this.blockAtomOres[i / 16], 1, i % 16));
220 OreDictionary.registerOre("ingot" + this.apiBase.getAtomOresAtomName().get(i), new ItemStack(this.itemAtomIngots, 1, i ));
221 GameRegistry.registerWorldGenerator(this.apiBase.getAtomOres().get(i));
224 Iterator<String> langoresItr = this.apiBase.getAtomOresName().iterator();
225 while (langoresItr.hasNext()){
226 String lang = langoresItr.next();
227 ArrayList<String> oresName = this.apiBase.getAtomOresName().get(lang);
228 ArrayList<String> ingotsName = this.apiBase.getAtomIngotsName().get(lang);
229 for (int i = 0; i < oresName.size(); i++) {
230 ChemiCraftCore.logger.write("AtomOresAddName:" + "IngotName-" + ingotsName.get(i) + "OreName-" + oresName.get(i) + "ID-" + (i / 16)+ "/Damage-" + (i - i / 16 * 16) + "/Lang-" + lang,
231 EnumLoggingType.INFO);
233 LanguageRegistry.instance().addNameForObject(
234 new ItemStack(this.atomOresID[i / 16], 1, i % 16),
240 LanguageRegistry.instance().addNameForObject(
241 new ItemStack(this.atomIngotsID, 1, i),