package com.jaquadro.minecraft.gardencommon.integration;
import com.jaquadro.minecraft.gardencommon.integration.mods.AgriCraft;
import com.jaquadro.minecraft.gardencommon.integration.mods.BiomesOPlenty;
import com.jaquadro.minecraft.gardencommon.integration.mods.Botania;
import com.jaquadro.minecraft.gardenstuff.GardenStuff;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import org.apache.logging.log4j.Level;
import java.util.ArrayList;
import java.util.List;
public class IntegrationRegistry
{
private static IntegrationRegistry instance;
private List<IntegrationModule> registry;
static {
IntegrationRegistry reg = instance();
if (Loader.isModLoaded("AgriCraft"))
reg.add(new AgriCraft());
if (Loader.isModLoaded("BiomesOPlenty"))
reg.add(new BiomesOPlenty());
if (Loader.isModLoaded("Botania"))
reg.add(new Botania());
}
private IntegrationRegistry () {
registry = new ArrayList<IntegrationModule>();
}
public static IntegrationRegistry instance () {
if (instance == null)
instance = new IntegrationRegistry();
return instance;
}
public void add (IntegrationModule module) {
registry.add(module);
}
public void init () {
for (int i = 0; i < registry.size(); i++) {
IntegrationModule module = registry.get(i);
if (module.getModID() != null && !Loader.isModLoaded(module.getModID())) {
registry.remove(i--);
continue;
}
try {
module.init();
}
catch (Throwable t) {
registry.remove(i--);
FMLLog.log(GardenStuff.MOD_ID, Level.INFO, "Could not load integration module: " + module.getClass().getName() + " (init)");
}
}
}
public void postInit () {
for (int i = 0; i < registry.size(); i++) {
IntegrationModule module = registry.get(i);
try {
module.postInit();
}
catch (Throwable t) {
registry.remove(i--);
FMLLog.log(GardenStuff.MOD_ID, Level.INFO, "Could not load integration module: " + module.getClass().getName() + " (post-init)");
}
}
}
}