001 package cpw.mods.fml.relauncher; 002 003 import java.util.Map; 004 005 /** 006 * The base plugin that provides class name meta information to FML to 007 * enhance the classloading lifecycle for mods in FML 008 * 009 * @author cpw 010 * 011 */ 012 public interface IFMLLoadingPlugin 013 { 014 /** 015 * Return a list of classes that implement the ILibrarySet interface 016 * 017 * @return 018 */ 019 String[] getLibraryRequestClass(); 020 /** 021 * Return a list of classes that implements the IClassTransformer interface 022 * @return 023 */ 024 String[] getASMTransformerClass(); 025 026 /** 027 * Return a class name that implements "ModContainer" for injection into the mod list 028 * The "getName" function should return a name that other mods can, if need be, 029 * depend on. 030 * Trivially, this modcontainer will be loaded before all regular mod containers, 031 * which means it will be forced to be "immutable" - not susceptible to normal 032 * sorting behaviour. 033 * All other mod behaviours are available however- this container can receive and handle 034 * normal loading events 035 */ 036 String getModContainerClass(); 037 038 /** 039 * Return the class name of an implementor of "IFMLCallHook", that will be run, in the 040 * main thread, to perform any additional setup this coremod may require. It will be 041 * run <strong>prior</strong> to Minecraft starting, so it CANNOT operate on minecraft 042 * itself. The game will deliberately crash if this code is detected to trigger a 043 * minecraft class loading (TODO: implement crash ;) ) 044 */ 045 String getSetupClass(); 046 047 /** 048 * Inject coremod data into this coremod 049 * This data includes: 050 * "mcLocation" : the location of the minecraft directory, 051 * "coremodList" : the list of coremods 052 * "coremodLocation" : the file this coremod loaded from, 053 */ 054 void injectData(Map<String, Object> data); 055 }