package tonius.neiintegration.config;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraftforge.common.config.Configuration;
import tonius.neiintegration.IntegrationBase;
import tonius.neiintegration.NEIIntegration;
import cpw.mods.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
public class Config {
public static Configuration config;
public static List<Section> configSections = new ArrayList<Section>();
public static final Section sectionIntegrations = new Section("Integrations", "integrations");
public static final Section sectionHandlers = new Section("Handlers", "handlers");
public static final Section sectionTooltips = new Section("Tooltips", "tooltips");
// handlers
public static boolean handlerFluidRegistry = Defaults.handlerFluidRegistry;
public static boolean handlerOreDictionary = Defaults.handlerOreDictionary;
// tooltips
public static boolean tooltipUnlocalizedName = Defaults.tooltipUnlocalizedName;
public static boolean tooltipUnlocalizedNameShift = Defaults.tooltipUnlocalizedNameShift;
public static boolean tooltipUnlocalizedNameAdvanced = Defaults.tooltipUnlocalizedNameAdvanced;
public static boolean tooltipInternalName = Defaults.tooltipInternalName;
public static boolean tooltipInternalNameShift = Defaults.tooltipInternalNameShift;
public static boolean tooltipInternalNameAdvanced = Defaults.tooltipInternalNameAdvanced;
public static boolean tooltipMaxStack = Defaults.tooltipMaxStack;
public static boolean tooltipMaxStackShift = Defaults.tooltipMaxStackShift;
public static boolean tooltipMaxStackAdvanced = Defaults.tooltipMaxStackAdvanced;
public static boolean tooltipBurnTime = Defaults.tooltipBurnTime;
public static boolean tooltipBurnTimeShift = Defaults.tooltipBurnTimeShift;
public static boolean tooltipBurnTimeAdvanced = Defaults.tooltipBurnTimeAdvanced;
public static boolean tooltipOreDictNames = Defaults.tooltipOreDictNames;
public static boolean tooltipOreDictNamesShift = Defaults.tooltipOreDictNamesShift;
public static boolean tooltipOreDictNamesAdvanced = Defaults.tooltipOreDictNamesAdvanced;
public static boolean tooltipFluidRegInfo = Defaults.tooltipFluidRegInfo;
public static boolean tooltipFluidRegInfoShift = Defaults.tooltipFluidRegInfoShift;
public static boolean tooltipFluidRegInfoAdvanced = Defaults.tooltipFluidRegInfoAdvanced;
public static void preInit(FMLPreInitializationEvent evt) {
FMLCommonHandler.instance().bus().register(new Config());
config = new Configuration(new File(evt.getModConfigurationDirectory(), NEIIntegration.MODID + ".cfg"));
syncConfig();
}
public static void syncConfig() {
NEIIntegration.log.info("Loading configuration files");
try {
processConfig();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (config.hasChanged()) {
config.save();
}
}
}
@SubscribeEvent
public void onConfigChanged(OnConfigChangedEvent evt) {
if (evt.modID.equals(NEIIntegration.MODID)) {
syncConfig();
}
}
public static void processConfig() {
for (Iterator<IntegrationBase> itr = NEIIntegration.integrations.iterator(); itr.hasNext();) {
IntegrationBase integration = itr.next();
String name = integration.getName();
boolean enabledByDefault = integration.isEnabledByDefault();
if (!integration.isValid()) {
itr.remove();
} else if (!config.get(sectionIntegrations.name, name, enabledByDefault, String.format("Whether to enable %s integration. Disable if this part of the mod causes crashes.", name)).setRequiresMcRestart(true).getBoolean(enabledByDefault)) {
itr.remove();
}
}
handlerFluidRegistry = config.get(sectionHandlers.name, "Fluid Registry", Defaults.handlerFluidRegistry, "Shows information about registered fluids when looking them or related items up.").getBoolean(Defaults.handlerFluidRegistry);
handlerOreDictionary = config.get(sectionHandlers.name, "Ore Dictionary", Defaults.handlerOreDictionary, "Shows information about items registered in the Ore Dictionary when looking up item usage.").getBoolean(Defaults.handlerOreDictionary);
tooltipUnlocalizedName = config.get(sectionTooltips.name, "Unlocalized Name", Defaults.tooltipUnlocalizedName, "Show the unlocalized name (example: 'tile.stone') of items.").getBoolean(Defaults.tooltipUnlocalizedName);
tooltipUnlocalizedNameShift = config.get(sectionTooltips.name, "Unlocalized Name Shift", Defaults.tooltipUnlocalizedNameShift, "If unlocalized names are enabled, they will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipUnlocalizedNameShift);
tooltipUnlocalizedNameAdvanced = config.get(sectionTooltips.name, "Unlocalized Name Advanced", Defaults.tooltipUnlocalizedNameAdvanced, "If unlocalized names are enabled, they will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipUnlocalizedNameAdvanced);
tooltipInternalName = config.get(sectionTooltips.name, "Internal Name", Defaults.tooltipInternalName, "Show the internal name (example: 'minecraft:stone') of items.").getBoolean(Defaults.tooltipInternalName);
tooltipInternalNameShift = config.get(sectionTooltips.name, "Internal Name Shift", Defaults.tooltipInternalNameShift, "If internal names are enabled, they will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipInternalNameShift);
tooltipInternalNameAdvanced = config.get(sectionTooltips.name, "Internal Name Advanced", Defaults.tooltipInternalNameAdvanced, "If internal names are enabled, they will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipInternalNameAdvanced);
tooltipMaxStack = config.get(sectionTooltips.name, "Maximum Stack Size", Defaults.tooltipMaxStack, "Show the maximum stack size of items.").getBoolean(Defaults.tooltipMaxStack);
tooltipMaxStackShift = config.get(sectionTooltips.name, "Maximum Stack Size Shift", Defaults.tooltipMaxStackShift, "If maximum stack sizes are enabled, they will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipMaxStackShift);
tooltipMaxStackAdvanced = config.get(sectionTooltips.name, "Maximum Stack Size Advanced", Defaults.tooltipMaxStackAdvanced, "If maximum stack sizes are enabled, they will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipMaxStackAdvanced);
tooltipBurnTime = config.get(sectionTooltips.name, "Burn Time", Defaults.tooltipBurnTime, "Show the burn time of items when used as furnace fuel.").getBoolean(Defaults.tooltipBurnTime);
tooltipBurnTimeShift = config.get(sectionTooltips.name, "Burn Time Shift", Defaults.tooltipBurnTimeShift, "If burn times are enabled, they will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipBurnTimeShift);
tooltipBurnTimeAdvanced = config.get(sectionTooltips.name, "Burn Time Advanced", Defaults.tooltipBurnTimeAdvanced, "If burn times are enabled, they will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipBurnTimeAdvanced);
tooltipOreDictNames = config.get(sectionTooltips.name, "Ore Dictionary Names", Defaults.tooltipOreDictNames, "Show the Ore Dictionary names of items.").getBoolean(Defaults.tooltipOreDictNames);
tooltipOreDictNamesShift = config.get(sectionTooltips.name, "Ore Dictionary Names Shift", Defaults.tooltipOreDictNamesShift, "If Ore Dictionary names are enabled, they will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipOreDictNamesShift);
tooltipOreDictNamesAdvanced = config.get(sectionTooltips.name, "Ore Dictionary Names Advanced", Defaults.tooltipOreDictNamesAdvanced, "If Ore Dictionary names are enabled, they will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipOreDictNamesAdvanced);
tooltipFluidRegInfo = config.get(sectionTooltips.name, "Fluid Registry Info", Defaults.tooltipFluidRegInfo, "Show some fluid info on fluid-related items.").getBoolean(Defaults.tooltipFluidRegInfo);
tooltipFluidRegInfoShift = config.get(sectionTooltips.name, "Fluid Registry Info Shift", Defaults.tooltipFluidRegInfoShift, "If fluid registry info is enabled, it will only be shown if the Shift key is held. Effect stacks with Advanced if enabled.").getBoolean(Defaults.tooltipFluidRegInfoShift);
tooltipFluidRegInfoAdvanced = config.get(sectionTooltips.name, "Fluid Registry Info Advanced", Defaults.tooltipFluidRegInfoAdvanced, "If fluid registry info is enabled, it will only be shown in advanced (F3+H) tooltips. Effect stacks with Shift if enabled.").getBoolean(Defaults.tooltipFluidRegInfoAdvanced);
}
}