package gregtech.loaders.preload;
import static gregtech.GT_Mod.GT_FML_LOGGER;
import static gregtech.api.enums.GT_Values.MOD_ID_AE;
import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
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.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_Utility;
import gregtech.common.tileentities.machines.long_distance.GT_MetaTileEntity_LongDistancePipelineBase;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintStream;
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.init.Blocks;
import net.minecraftforge.common.config.Configuration;
import org.apache.commons.lang3.StringUtils;
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")) {
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");
GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang"));
GT_LanguageManager.sEnglishFile.load();
if (GT_LanguageManager.sEnglishFile
.get("EnableLangFile", "UseThisFileAsLanguageFile", false)
.getBoolean(false)) {
GT_LanguageManager.sLanguage = GT_LanguageManager.sEnglishFile
.get("EnableLangFile", "Language", "en_US")
.getString();
}
Materials.getMaterialsMap().values().parallelStream()
.filter(Objects::nonNull)
.forEach(aMaterial -> aMaterial.mLocalizedName = GT_LanguageManager.addStringLocalization(
"Material." + aMaterial.mName.toLowerCase(), aMaterial.mDefaultLocalName));
}
public static Configuration getConfiguration(File configDir) {
File tFile = new File(new File(configDir, "GregTech"), "GregTech.cfg");
Configuration tMainConfig = new Configuration(tFile);
tMainConfig.load();
tFile = new File(new File(configDir, "GregTech"), "IDs.cfg");
GT_Config.sConfigFileIDs = new Configuration(tFile);
GT_Config.sConfigFileIDs.load();
GT_Config.sConfigFileIDs.save();
GregTech_API.sRecipeFile =
new GT_Config(new Configuration(new File(new File(configDir, "GregTech"), "Recipes.cfg")));
GregTech_API.sMachineFile =
new GT_Config(new Configuration(new File(new File(configDir, "GregTech"), "MachineStats.cfg")));
GregTech_API.sWorldgenFile =
new GT_Config(new Configuration(new File(new File(configDir