From 1da6a1fc6c21fde4fbe69fb72aaef9d070988c8b Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 25 Aug 2012 21:26:41 -0400 Subject: [PATCH] Add in a convenience method for getting a class instance based on existence of another Mod. Useful for soft dependencies. --- .../event/FMLPostInitializationEvent.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/fml/common/cpw/mods/fml/common/event/FMLPostInitializationEvent.java b/fml/common/cpw/mods/fml/common/event/FMLPostInitializationEvent.java index f60fe1f4e0..816778cdfb 100644 --- a/fml/common/cpw/mods/fml/common/event/FMLPostInitializationEvent.java +++ b/fml/common/cpw/mods/fml/common/event/FMLPostInitializationEvent.java @@ -1,5 +1,8 @@ package cpw.mods.fml.common.event; +import com.google.common.base.Throwables; + +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.LoaderState.ModState; public class FMLPostInitializationEvent extends FMLStateEvent @@ -15,4 +18,21 @@ public class FMLPostInitializationEvent extends FMLStateEvent return ModState.POSTINITIALIZED; } + public Object buildSoftDependProxy(String modId, String className) + { + if (Loader.isModLoaded(modId)) + { + try + { + Class clz = Class.forName(className,true,Loader.instance().getModClassLoader()); + return clz.newInstance(); + } + catch (Exception e) + { + Throwables.propagateIfPossible(e); + return null; + } + } + return null; + } }