/** * Copyright (c) Lambda Innovation, 2013-2015 * 本作品版权由Lambda Innovation所有。 * http://www.li-dev.cn/ * * This project is open-source, and it is distributed under * the terms of GNU General Public License. You can modify * and distribute freely as long as you follow the license. * 本项目是一个开源项目,且遵循GNU通用公共授权协议。 * 在遵照该协议的情况下,您可以自由传播和修改。 * http://www.gnu.org/licenses/gpl.html */ package cn.annoreg; import java.util.HashMap; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import cn.annoreg.core.RegistrationManager; import cn.annoreg.mc.network.Future; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; import cpw.mods.fml.common.DummyModContainer; import cpw.mods.fml.common.LoadController; import cpw.mods.fml.common.ModMetadata; import cpw.mods.fml.common.discovery.ASMDataTable; import cpw.mods.fml.common.event.FMLConstructionEvent; import cpw.mods.fml.common.event.FMLLoadCompleteEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; public class ARModContainer extends DummyModContainer { public static Logger log = LogManager.getLogger("AnnotationRegistry"); public static final String MODID = "AnnoReg"; private static ModMetadata getModMetadata() { HashMap def = new HashMap(); def.put("name", MODID); def.put("version", "2.0a"); return AnnoRegCorePlugin.mc.getMetadataForId(MODID, def); } public ARModContainer() { super(getModMetadata()); } @Override public boolean registerBus(EventBus bus, LoadController controller) { bus.register(this); return true; } @Subscribe public void constructMod(FMLConstructionEvent event) { log.info("AnnotationRegistry is loading."); //Get annotation information from forge asm data table. //This must be done before PreInit stage. ASMDataTable dt = event.getASMHarvestedData(); RegistrationManager.INSTANCE.addRegistryTypes(dt.getAll("cn.annoreg.core.RegistryTypeDecl")); RegistrationManager.INSTANCE.annotationList(dt.getAll("cn.annoreg.core.Registrant")); RegistrationManager.INSTANCE.addAnnotationMod(dt.getAll("cn.annoreg.core.RegistrationMod")); // Well, might this be a bit of dirty? Future.init(); } @Subscribe public void loadComplete(FMLLoadCompleteEvent event) { log.info("AnnotationRegistry is loaded. Checking states."); RegistrationManager.INSTANCE.checkLoadState(); } }