package ttftcuts.physis.common.compat;
import java.util.ArrayList;
import java.util.List;
import ttftcuts.physis.Physis;
import ttftcuts.physis.common.compat.baubles.CompatBaubles;
import ttftcuts.physis.common.compat.thaumcraft.CompatThaumcraft;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
public class PhysisIntegration {
private static List<CompatModule> modules = new ArrayList<CompatModule>();
public static void loadModules() {
registerModule(CompatBaubles.class, "Baubles");
registerModule(CompatTravellersGear.class, "TravellersGear");
registerModule(CompatThaumcraft.class, "Thaumcraft");
registerModule(CompatThaumicTinkerer.class, "ThaumicTinkerer");
}
public static void registerModule(Class<? extends CompatModule> clazz, String modid) {
if (Loader.isModLoaded(modid)) {
try {
modules.add(clazz.newInstance());
Physis.logger.info("Loaded compatibility module: "+modid);
} catch (Exception e) {
Physis.logger.warn("Failed to initialize compat module: "+modid, e);
}
}
}
public static void preInitStart(FMLPreInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.preInitStart(event, client);
}
}
public static void preInitEnd(FMLPreInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.preInitEnd(event, client);
}
}
public static void initStart(FMLInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.initStart(event, client);
}
}
public static void initEnd(FMLInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.initEnd(event, client);
}
}
public static void postInitStart(FMLPostInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.postInitStart(event, client);
}
}
public static void postInitEnd(FMLPostInitializationEvent event, boolean client) {
for (CompatModule module : modules) {
module.postInitEnd(event, client);
}
}
public static void loadFinished(FMLLoadCompleteEvent event, boolean client) {
for (CompatModule module : modules) {
module.loadFinished(event, client);
}
}
}