TechReborn/src/main/java/techreborn/compat/CompatManager.java

121 lines
2.9 KiB
Java
Raw Normal View History

package techreborn.compat;
2016-03-04 20:47:08 +01:00
import net.minecraftforge.fml.common.FMLCommonHandler;
2015-11-23 15:40:30 +01:00
import net.minecraftforge.fml.common.Loader;
2016-03-04 20:47:08 +01:00
import net.minecraftforge.fml.relauncher.Side;
import techreborn.client.render.parts.ClientPartLoader;
import techreborn.config.ConfigTechReborn;
2016-03-06 15:51:13 +01:00
import techreborn.parts.StandalonePartCompact;
2016-03-19 19:01:34 +01:00
import techreborn.parts.TechRebornParts;
import java.util.ArrayList;
2015-06-12 19:40:08 +02:00
2016-03-25 10:47:34 +01:00
public class CompatManager
{
2015-06-12 19:40:08 +02:00
2016-03-25 10:47:34 +01:00
public static CompatManager INSTANCE = new CompatManager();
public static boolean isIC2Loaded = false;
public static boolean isIC2ClassicLoaded = false;
public static boolean isClassicEnet = false;
public static boolean isGregTechLoaded = false;
public ArrayList<ICompatModule> compatModules = new ArrayList<ICompatModule>();
2015-06-12 19:40:08 +02:00
2016-03-25 10:47:34 +01:00
public CompatManager()
{
isIC2Loaded = Loader.isModLoaded("IC2");
isIC2ClassicLoaded = false;
if (isIC2ClassicLoaded)
{
isClassicEnet = true;
}
if (Loader.isModLoaded("Uncomplication"))
{
isClassicEnet = true;
}
if (Loader.isModLoaded("gregtech"))
{
isGregTechLoaded = true;
}
// registerCompact(MinetweakerCompat.class, "MineTweaker3");
// registerCompact(RecipesBiomesOPlenty.class, "BiomesOPlenty");
// registerCompact(RecipesBuildcraft.class, "BuildCraft|Builders");
// registerCompact(RecipesThaumcraft.class, "Thaumcraft");
registerCompact(TechRebornParts.class, "mcmultipart");
registerCompact(ClientPartLoader.class, "mcmultipart", "@client");
registerCompact(StandalonePartCompact.class, "!mcmultipart");
}
2016-03-25 10:47:34 +01:00
public void registerCompact(Class<? extends ICompatModule> moduleClass, Object... objs)
{
boolean shouldLoad = ConfigTechReborn.config
.get(ConfigTechReborn.CATEGORY_INTEGRATION, "Compat:" + moduleClass.getSimpleName(), true,
"Should the " + moduleClass.getSimpleName() + " be loaded?")
.getBoolean(true);
if (ConfigTechReborn.config.hasChanged())
ConfigTechReborn.config.save();
if (!shouldLoad)
{
return;
}
for (Object obj : objs)
{
if (obj instanceof String)
{
String modid = (String) obj;
if (modid.startsWith("@"))
{
if (modid.equals("@client"))
{
if (FMLCommonHandler.instance().getSide() != Side.CLIENT)
{
return;
}
}
} else if (modid.startsWith("!"))
{
if (Loader.isModLoaded(modid.replaceAll("!", "")))
{
return;
}
} else
{
if (!Loader.isModLoaded(modid))
{
return;
}
}
} else if (obj instanceof Boolean)
{
Boolean boo = (Boolean) obj;
if (boo == false)
{
}
return;
}
}
try
{
compatModules.add((ICompatModule) moduleClass.newInstance());
} catch (InstantiationException e)
{
e.printStackTrace();
} catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
2015-10-07 09:34:24 +02:00
2016-03-25 10:47:34 +01:00
public boolean isForestry4()
{
try
{
Class.forName("forestry.api.arboriculture.EnumWoodType");
return true;
} catch (ClassNotFoundException e)
{
return false;
}
}
2015-11-11 18:08:41 +01:00
}