001    package cpw.mods.fml.common.event;
002    
003    import java.io.File;
004    import java.util.Properties;
005    
006    import cpw.mods.fml.common.LoaderState.ModState;
007    import cpw.mods.fml.common.FMLModContainer;
008    import cpw.mods.fml.common.ModContainer;
009    import cpw.mods.fml.common.ModMetadata;
010    import cpw.mods.fml.common.discovery.ASMDataTable;
011    
012    public class FMLPreInitializationEvent extends FMLStateEvent
013    {
014        private ModMetadata modMetadata;
015        private File sourceFile;
016        private File configurationDir;
017        private File suggestedConfigFile;
018        private ASMDataTable asmData;
019        private ModContainer modContainer;
020    
021        public FMLPreInitializationEvent(Object... data)
022        {
023            super(data);
024            this.asmData = (ASMDataTable)data[0];
025            this.configurationDir = (File)data[1];
026        }
027    
028        @Override
029        public ModState getModState()
030        {
031            return ModState.PREINITIALIZED;
032        }
033    
034        @Override
035        public void applyModContainer(ModContainer activeContainer)
036        {
037            this.modContainer = activeContainer;
038            this.modMetadata = activeContainer.getMetadata();
039            this.sourceFile = activeContainer.getSource();
040            this.suggestedConfigFile = new File(configurationDir, activeContainer.getModId()+".cfg");
041        }
042    
043        public File getSourceFile()
044        {
045            return sourceFile;
046        }
047    
048        public ModMetadata getModMetadata()
049        {
050            return modMetadata;
051        }
052    
053        public File getModConfigurationDirectory()
054        {
055            return configurationDir;
056        }
057    
058        public File getSuggestedConfigurationFile()
059        {
060            return suggestedConfigFile;
061        }
062    
063        public ASMDataTable getAsmData()
064        {
065            return asmData;
066        }
067    
068        public Properties getVersionProperties()
069        {
070            if (this.modContainer instanceof FMLModContainer)
071            {
072                return ((FMLModContainer)this.modContainer).searchForVersionProperties();
073            }
074    
075            return null;
076        }
077    }