package gregtech.nei; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import com.google.common.collect.ImmutableMap; import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.recipe.GuiCraftingRecipe; import codechicken.nei.recipe.GuiUsageRecipe; import codechicken.nei.recipe.TemplateRecipeHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.event.FMLInterModComms; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_Recipe; import gregtech.common.items.GT_MetaGenerated_Item_01; import gregtech.common.items.GT_MetaGenerated_Item_02; import gregtech.common.items.GT_MetaGenerated_Item_03; import gregtech.nei.dumper.BatchModeSupportDumper; import gregtech.nei.dumper.InputSeparationSupportDumper; import gregtech.nei.dumper.MaterialDumper; import gregtech.nei.dumper.MetaItemDumper; import gregtech.nei.dumper.MetaTileEntityDumper; import gregtech.nei.dumper.RecipeLockingSupportDumper; import gregtech.nei.dumper.VoidProtectionSupportDumper; public class NEI_GT_Config implements IConfigureNEI { /** * This map determines the order in which NEI handlers will be registered and displayed in tabs. * *

* Handlers will be displayed in ascending order of integer value. Any recipe map that is not present in this map * will be assigned a value of 0. Negative values are fine. */ private static final ImmutableMap RECIPE_MAP_ORDERING = ImmutableMap.builder() .put(GT_Recipe.GT_Recipe_Map.sAssemblylineVisualRecipes, 1) .put(GT_Recipe.GT_Recipe_Map.sScannerFakeRecipes, 2) .build(); private static final Comparator RECIPE_MAP_HANDLER_COMPARATOR = Comparator .comparingInt(handler -> RECIPE_MAP_ORDERING.getOrDefault(handler.getRecipeMap(), 0)); public static boolean sIsAdded = true; private static void addHandler(TemplateRecipeHandler handler) { FMLInterModComms.sendRuntimeMessage( GT_Values.GT, "NEIPlugins", "register-crafting-handler", "gregtech@" + handler.getRecipeName() + "@" + handler.getOverlayIdentifier()); GuiCraftingRecipe.craftinghandlers.add(handler); GuiUsageRecipe.usagehandlers.add(handler); } @Override public void loadConfig() { sIsAdded = false; if (FMLCommonHandler.instance() .getEffectiveSide() .isClient()) { List handlers = new ArrayList<>(); for (GT_Recipe.GT_Recipe_Map tMap : GT_Recipe.GT_Recipe_Map.sMappings) { if (tMap.mNEIAllowed) { handlers.add(new GT_NEI_DefaultHandler(tMap)); } } handlers.sort(RECIPE_MAP_HANDLER_COMPARATOR); handlers.forEach(NEI_GT_Config::addHandler); API.addItemListEntry(ItemList.VOLUMETRIC_FLASK.get(1)); API.addOption(new MetaTileEntityDumper()); API.addOption(new MaterialDumper()); API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_01.INSTANCE, "metaitem01")); API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_02.INSTANCE, "metaitem02")); API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_03.INSTANCE, "metaitem03")); API.addOption(new VoidProtectionSupportDumper()); API.addOption(new InputSeparationSupportDumper()); API.addOption(new BatchModeSupportDumper()); API.addOption(new RecipeLockingSupportDumper()); } sIsAdded = true; } @Override public String getName() { return "GregTech NEI Plugin"; } @Override public String getVersion() { return "(5.03a)"; } }