OSDN Git Service

Merge branch 'master' of https://scm.sourceforge.jp/gitroot/chemicraft/chemicraft
[chemicraft/chemicraft.git] / common / pcc / chemicraft / core / ChemiCraftCore.java
index dbfc825..1c27401 100644 (file)
@@ -1,39 +1,52 @@
 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{
 
        /**
@@ -78,11 +91,6 @@ 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;
@@ -135,12 +143,23 @@ public class ChemiCraftCore extends ChemiCraft{
        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();
        }
 
@@ -158,7 +177,7 @@ public class ChemiCraftCore extends ChemiCraft{
                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();
@@ -170,6 +189,7 @@ public class ChemiCraftCore extends ChemiCraft{
                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);
@@ -197,8 +217,8 @@ public class ChemiCraftCore extends ChemiCraft{
 
 
 
-       @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();
@@ -219,17 +239,34 @@ public class ChemiCraftCore extends ChemiCraft{
        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();
@@ -239,30 +276,24 @@ public class ChemiCraftCore extends ChemiCraft{
                // 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));
                        }
                }
 
@@ -270,16 +301,23 @@ public class ChemiCraftCore extends ChemiCraft{
 
 
 
-       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();
        }
 
 }