001 package cpw.mods.fml.common.event; 002 003 import java.io.File; 004 import java.util.Properties; 005 import java.util.logging.Logger; 006 007 import cpw.mods.fml.common.FMLLog; 008 import cpw.mods.fml.common.LoaderState.ModState; 009 import cpw.mods.fml.common.FMLModContainer; 010 import cpw.mods.fml.common.ModContainer; 011 import cpw.mods.fml.common.ModMetadata; 012 import cpw.mods.fml.common.discovery.ASMDataTable; 013 014 public class FMLPreInitializationEvent extends FMLStateEvent 015 { 016 private ModMetadata modMetadata; 017 private File sourceFile; 018 private File configurationDir; 019 private File suggestedConfigFile; 020 private ASMDataTable asmData; 021 private ModContainer modContainer; 022 023 public FMLPreInitializationEvent(Object... data) 024 { 025 super(data); 026 this.asmData = (ASMDataTable)data[0]; 027 this.configurationDir = (File)data[1]; 028 } 029 030 @Override 031 public ModState getModState() 032 { 033 return ModState.PREINITIALIZED; 034 } 035 036 @Override 037 public void applyModContainer(ModContainer activeContainer) 038 { 039 this.modContainer = activeContainer; 040 this.modMetadata = activeContainer.getMetadata(); 041 this.sourceFile = activeContainer.getSource(); 042 this.suggestedConfigFile = new File(configurationDir, activeContainer.getModId()+".cfg"); 043 } 044 045 public File getSourceFile() 046 { 047 return sourceFile; 048 } 049 050 public ModMetadata getModMetadata() 051 { 052 return modMetadata; 053 } 054 055 public File getModConfigurationDirectory() 056 { 057 return configurationDir; 058 } 059 060 public File getSuggestedConfigurationFile() 061 { 062 return suggestedConfigFile; 063 } 064 065 public ASMDataTable getAsmData() 066 { 067 return asmData; 068 } 069 070 public Properties getVersionProperties() 071 { 072 if (this.modContainer instanceof FMLModContainer) 073 { 074 return ((FMLModContainer)this.modContainer).searchForVersionProperties(); 075 } 076 077 return null; 078 } 079 080 /** 081 * Get a logger instance configured to write to the FML Log as a parent, identified by modid. Handy for mod logging! 082 * 083 * @return A logger 084 */ 085 public Logger getModLog() 086 { 087 Logger log = Logger.getLogger(modContainer.getModId()); 088 log.setParent(FMLLog.getLogger()); 089 return log; 090 } 091 }