package pcc.chemicraft.core;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EntityDamageSource;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import pcc.chemicraft.ChemiCraft;
import pcc.chemicraft.ChemiCraftConfiguration;
+import pcc.chemicraft.ChemiCraftLogging;
import pcc.chemicraft.ChemiCraftRegister;
-import pcc.chemicraft.core.compounds.CompoundDebug;
+import pcc.chemicraft.EnumLoggingType;
import pcc.chemicraft.core.creativetab.CreativeTabChemiCraft;
import pcc.chemicraft.core.debug.CommandDeleteItem;
import pcc.chemicraft.core.debug.CommandGenDebugRoom;
import pcc.chemicraft.core.debug.CommandSetTile;
import pcc.chemicraft.core.system.CommonProxy;
import pcc.chemicraft.core.system.PacketHandler;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.LoaderState.ModState;
import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
-import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.Mod.ServerStarting;
+import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.SidedProxy;
-import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
+import cpw.mods.fml.common.registry.LanguageRegistry;
/**
* ChemiCraft本体
* @author P.C.C.
*/
-@Mod(modid = "ChemiCraft", name = "ChemiCraft", version = "beta")
-@NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.4.6", channels = "chemicraftcore", packetHandler = PacketHandler.class)
+@Mod(modid = "ChemiCraft", name = "ChemiCraft", version = "Beta1")
+@NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "1.5", channels = "chemicraftcore", packetHandler = PacketHandler.class)
public class ChemiCraftCore extends ChemiCraft{
/**
public static final CreativeTabs creativeTabChemiCraft = new CreativeTabChemiCraft("ChemiCraft");
/**
- * API Instance.
- */
- public ChemiCraftAPI api = ChemiCraftAPI.instance();
-
- /**
* the ItemID.
*/
public int atomsID;
public ChemiCraftRegister registerTileEntity;
public ChemiCraftRegister registerRecipe;
+ /**
+ * Logging用のインスタンス
+ */
+ public static final ChemiCraftLogging logger = new ChemiCraftLogging(System.getProperty("user.dir"));
+
+ /**
+ * the Textures
+ */
+ public static final String CCTABLE = ChemiCraft.TEXTURE + "ChemiCraftTable_";
+
public ChemiCraftCore() {
+ this.api.getCompoundsName().createHash("en_US");
this.registerItem = new ChemiCraftRegisterItem(this);
this.registerBlock = new ChemiCraftRegisterBlock(this);
this.registerTileEntity = new ChemiCraftRegisterTileEntity(this);
this.registerRecipe = new ChemiCraftRegisterCoreRecipe(this);
-
+ this.logger.startLogging();
//this.sinVisualizer = new SinVisualizer();
}
Property coreItemID = cfg.get("ItemID", "Base of Item ID", 25000);
ChemiCraftConfiguration ccfgBlock = new ChemiCraftConfiguration(coreBlockID.getInt());
- ChemiCraftConfiguration ccfgItem = new ChemiCraftConfiguration(coreBlockID.getInt());
+ ChemiCraftConfiguration ccfgItem = new ChemiCraftConfiguration(coreItemID.getInt());
this.pyrolysisTableID = ccfgBlock.additionID();
this.electrolysisTableID = ccfgBlock.additionID();
this.compoundsID = ccfgItem.additionID();
this.gasCollectingBottleID = ccfgItem.additionID();
this.chemicalCellsID = ccfgItem.additionID();
+ this.pearID = ccfgItem.additionID();
Property guiPyrolysisTableIDProp = cfg.get("GUI", "GUIPyrolysisID", 1000);
Property guiElectrolysisTableIDProp = cfg.get("GUI", "GUIElectrolysisTableIDProp", 1001);
- @PostInit
- public void chemiPostLoadMethod(final FMLPostInitializationEvent event) {
+ @Init
+ public void chemiPostLoadMethod(final FMLInitializationEvent event) {
this.thread = new Thread(this);
this.event = event;
this.thread.start();
public void run() {
while (true) {
if (proxy != null && instance != null) {
- this.settingProcessing(event);
- this.apiProcessing(event);
- this.debug(event);
+ this.settingProcessing((FMLInitializationEvent) event);
+ this.debug((FMLInitializationEvent) event);
break;
}
}
+
+ Thread loadCheckThread = new Thread() {
+ @Override
+ public void run() {
+ while (true) {
+ List<ModContainer> mod = Loader.instance().getModList();
+ ModContainer finalMod = mod.get(mod.size()-1);
+ ModState finalModState = Loader.instance().getModState(finalMod);
+ if (finalModState == ModState.POSTINITIALIZED) {
+ ChemiCraftCore.logger.write("ChemiCraftCore>APIProcessing", EnumLoggingType.INFO);
+ apiProcessing((FMLInitializationEvent) event);
+ break;
+ }
+ }
+ }
+ };
+ loadCheckThread.start();
+
}
- protected void settingProcessing(final FMLPostInitializationEvent event) {
+ protected void settingProcessing(final FMLInitializationEvent event) {
this.registerItem.start();
this.registerBlock.start();
// GUIを追加します
NetworkRegistry.instance().registerGuiHandler(instance, proxy);
- //電池を追加します
- this.api.addChemicalCell(itemChemicalCells, "ChemicalCell", 1000);
- this.api.addChemicalCellLanguage("ChemicalCell", "ja_JP", "化学電池");
-
this.api.addPyrolysisDecompositionFuel(new ItemStack(Item.coal), 2000*8);
}
- private void apiProcessing(final FMLPostInitializationEvent event) {
-
- for (int i = 0; i < api.getChemicalCellsName().sizeKeysList(); i++)
- {
- for (int j = 0; j < api.getChemicalCellsName().sizeElementsList(api.getChemicalCellsName().getKeyList(i)); j++)
- {
- this.nameAuxiliary.addName(new ItemStack(itemChemicalCells, 0, i), api.getChemicalCellsLanguage().get(api.getChemicalCellsName().getKeyList(i), j), api.getChemicalCellsName().get(api.getChemicalCellsName().getKeyList(i), j));
- }
- }
+ private void apiProcessing(final FMLInitializationEvent event) {
+ Iterator<String> langcompoundsItr = this.api.getCompoundsName().keySet().iterator();
+ while (langcompoundsItr.hasNext()) {
+ String lang = langcompoundsItr.next();
+ ArrayList<String> names = this.api.getCompoundsName().get(lang);
+ for (int i = 0; i < names.size(); i++) {
+ ChemiCraftCore.logger.write("CompoundAddName:" + "Name-" + names.get(i) + "/Damage-" + i + "/Lang-" + lang,
+ EnumLoggingType.INFO);
- for (int i = 0; i < api.getCompoundsName().sizeKeysList(); i++)
- {
- for (int j = 0; j < api.getCompoundsName().sizeElementsList(api.getCompoundsName().getKeyList(i)); j++)
- {
- this.nameAuxiliary.addName(new ItemStack(itemCompounds, 0, i), api.getCompoundsLang().get(api.getCompoundsName().getKeyList(i), j), api.getCompoundsName().get(api.getCompoundsName().getKeyList(i), j));
+ LanguageRegistry.instance().addNameForObject(
+ new ItemStack(this.itemCompounds, 1, i),
+ lang,
+ names.get(i));
}
}
- private void debug(final FMLPostInitializationEvent event) {
- this.proxy.registerTickHandler();
- this.api.addCompound("Debug");
- this.api.settingCompoundHandler("Debug", new CompoundDebug());
+ public static EntityDamageSource getRadiationDamageSource(Entity par1Entity){
+ return new EntityDamageSource("radiation", par1Entity){
+ @Override
+ public String getDeathMessage(EntityLiving par1EntityLiving) {
+ if (par1EntityLiving instanceof EntityPlayer) {
+ return ((EntityPlayer) (par1EntityLiving)).username + " is dead by radiation.";
+ } else {
+ return par1EntityLiving.getEntityName() + " is dead by radiation.";
+ }
+ }
+ };
+ }
+
- this.api.addToolAndWeaponRecipe(new ItemStack[] {
- new ItemStack(Block.stone, 1, 1)
- },
- new ItemStack(Block.dirt, 1, 0));
+ private void debug(final FMLInitializationEvent event) {
+ //this.proxy.registerTickHandler();
}
}