package gregtech.loaders.preload;
import static gregtech.GT_Mod.GT_FML_LOGGER;
import static gregtech.api.enums.Mods.CraftTweaker;
import static gregtech.api.enums.Mods.EnderIO;
import static gregtech.api.enums.Mods.GalacticraftCore;
import static gregtech.api.enums.Mods.GregTech;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.launchwrapper.Launch;
import net.minecraftforge.common.config.Configuration;
import org.apache.commons.lang3.StringUtils;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.discovery.ASMDataTable;
import cpw.mods.fml.common.discovery.ModDiscoverer;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.ConfigCategories;
import gregtech.api.enums.Dyes;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.recipe.RecipeCategory;
import gregtech.api.recipe.RecipeCategoryHolder;
import gregtech.api.recipe.RecipeCategorySetting;
import gregtech.api.util.GT_Config;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_RecipeBuilder;
import gregtech.api.util.GT_Utility;
import gregtech.common.GT_Proxy;
import gregtech.common.tileentities.machines.long_distance.GT_MetaTileEntity_LongDistancePipelineBase;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
public class GT_PreLoad {
public static void sortToTheEnd() {
if (GT_Mod.gregtechproxy.mSortToTheEnd) {
try {
GT_FML_LOGGER.info("GT_Mod: Sorting GregTech to the end of the Mod List for further processing.");
LoadController tLoadController = (LoadController) GT_Utility
.getFieldContent(Loader.instance(), "modController", true, true);
assert tLoadController != null;
List<ModContainer> tModList = tLoadController.getActiveModList();
List<ModContainer> tNewModsList = new ArrayList<>();
ModContainer tGregTech = null;
short tModList_sS = (short) tModList.size();
for (short i = 0; i < tModList_sS; i = (short) (i + 1)) {
ModContainer tMod = tModList.get(i);
if (tMod.getModId()
.equalsIgnoreCase(GregTech.ID)) {
tGregTech = tMod;
} else {
tNewModsList.add(tMod);
}
}
if (tGregTech != null) {
tNewModsList.add(tGregTech);
}
Objects.requireNonNull(GT_Utility.getField(tLoadController, "activeModList", true, true))
.set(tLoadController, tNewModsList);
} catch (Throwable e) {
GT_Mod.logStackTrace(e);
}
}
}
public static void initLocalization(File languageDir) {
GT_FML_LOGGER.info("GT_Mod: Generating Lang-File");
if (FMLCommonHandler.instance()
.getEffectiveSide()
.isClient()) {
String userLang = Minecraft.getMinecraft()
.getLanguageManager()
.getCurrentLanguage()
.getLanguageCode();
GT_FML_LOGGER.info("User lang is " + userLang);
if (userLang.equals("en_US")) {
GT_FML_LOGGER.info("Loading GregTech.lang");
GT_LanguageManager.isEN_US = true;
GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang"));
} else {
String l10nFileName = "GregTech_" + userLang + ".lang";
File l10nFile = new File(languageDir, l10nFileName);
if (l10nFile.isFile()) {
GT_FML_LOGGER.info("Loading l10n file: " + l10nFileName);
GT_LanguageManager.sEnglishFile = new Configuration(l10nFile);
} else {
GT_FML_LOGGER.info("Cannot find l10n file " + l10nFileName + ", fallback to GregTech.lang");
GT_LanguageManager.isEN_US = true;
GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang"));
}
}
} else {
GT_LanguageManager.isEN_US = true;
GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang"));
}
GT_LanguageManager.sEnglishFile.load();
Materials.getMaterialsMap()
.values()
.parallelStream()