package gregtech.asm; import java.io.File; import java.util.List; import java.util.Map; import java.util.Set; import net.minecraftforge.common.config.Configuration; import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; import bartworks.common.configs.ConfigHandler; import cpw.mods.fml.relauncher.FMLInjectionData; import cpw.mods.fml.relauncher.IFMLLoadingPlugin; import gregtech.mixin.Mixin; import gtPlusPlus.preloader.PreloaderCore; import gtPlusPlus.preloader.asm.AsmConfig; import gtPlusPlus.preloader.asm.PreloaderDummyContainer; import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler; @IFMLLoadingPlugin.SortingIndex(Integer.MAX_VALUE) // Load as late as possible (after fastcraft/OptiFine). @IFMLLoadingPlugin.MCVersion("1.7.10") @IFMLLoadingPlugin.TransformerExclusions({ "bartworks.ASM", "gtPlusPlus.preloader", "gregtech.asm" }) @IFMLLoadingPlugin.Name("GregTech 5 Unofficial core plugin") public class GTCorePlugin implements IFMLLoadingPlugin, IEarlyMixinLoader { public static File minecraftDir; private static Boolean islwjgl3Present = null; public GTCorePlugin() { // Injection Code taken from CodeChickenLib if (minecraftDir != null) return; // get called twice, once for IFMLCallHook minecraftDir = (File) FMLInjectionData.data()[6]; // do all the configuration already now... new ConfigHandler(new Configuration(new File(new File(minecraftDir, "config"), "bartworks.cfg"))); } @Override public String[] getASMTransformerClass() { return new String[] { Preloader_Transformer_Handler.class.getName() }; } @Override public String getModContainerClass() { return PreloaderDummyContainer.class.getName(); } @Override public String getSetupClass() { return null; } @Override public void injectData(Map data) { // GT++ PreloaderCore.DEV_ENVIRONMENT = !(boolean) data.get("runtimeDeobfuscationEnabled"); File mcDir = (File) data.get("mcLocation"); if (mcDir != null && mcDir.exists()) { PreloaderCore.setMinecraftDirectory(mcDir); } PreloaderCore.DEBUG_MODE = AsmConfig.debugMode; } @Override public String getAccessTransformerClass() { return null; } @Override public String getMixinConfig() { return "mixins.gregtech.early.json"; } @Override public List getMixins(Set loadedCoreMods) { return Mixin.getEarlyMixins(loadedCoreMods); } public static boolean islwjgl3Present() { if (islwjgl3Present == null) { try { final String className = "org.lwjgl.system.Platform"; islwjgl3Present = ClassLoader.getSystemClassLoader() .getResource(className) != null; } catch (Exception e) { islwjgl3Present = Boolean.FALSE; } } return islwjgl3Present; } }