package openeye.logic; import com.google.common.collect.ImmutableSet; import java.io.File; import java.util.Set; import openeye.Log; import openeye.config.ConfigProcessing; import openeye.config.ConfigProperty; public class Config { @ConfigProperty(category = "debug") public static boolean crashOnStartup = false; @ConfigProperty(category = "data") public static Set<String> tags = ImmutableSet.of(); @ConfigProperty(category = "data", comment = "Send only basic information about files instead of full analytics. Only works when 'sendModList' is set to true") public static boolean scanOnly = false; @ConfigProperty(category = "data", comment = "If false, skips sending any mod list - ether basic file information or analytics. OpenEye will respond with information about files unknown to server") public static boolean sendModList = true; @ConfigProperty(category = "data", comment = "If false, skips sending pending crash reports. Please note that pending crashe reports will not be automatically removed.") public static boolean sendCrashes = true; @ConfigProperty(category = "data", comment = "Maximum number of crash reports from single category stored per single run") public static int storeCrashReportsLimit = 20; @ConfigProperty(category = "data", comment = "Maximum number of crash reports to sent (including pending) per single run") public static int sentCrashReportsLimitTotal = 1000; @ConfigProperty(category = "debug") public static boolean pingOnInitialReport = false; @ConfigProperty(category = "debug") public static boolean dontSend = false; @ConfigProperty(category = "debug") public static boolean debugSanitizer = false; @ConfigProperty(category = "features") public static Set<String> reportsBlacklist = ImmutableSet.of(); @ConfigProperty(category = "features") public static Set<String> responseBlacklist = ImmutableSet.of(); @ConfigProperty(category = "gui", comment = "Enables OpenEye additions to main menu screen") public static boolean mainScreenNotes = true; @ConfigProperty(category = "gui", comment = "Enables extra line in main menu screen under buttons (if true, only note button will be displayed)") public static boolean mainScreenExtraLine = true; @ConfigProperty(category = "gui", comment = "X coordinate of notes button") public static int notesButtonPosX = 104; @ConfigProperty(category = "gui", comment = "Y coordinate of notes button") public static int notesButtonPosY = 96; @ConfigProperty(category = "gui", comment = "If false, X and Y coordinates of notes button will be measured from screen width/2 and height/4 (standard MC algorithm)") public static boolean isNotesButtonPosAbsolute = false; @ConfigProperty(category = "gui", comment = "X coordinate of notification line") public static int extraLinePosX = 0; @ConfigProperty(category = "gui", comment = "Y coordinate of notification line") public static int extraLinePosY = 120; @ConfigProperty(category = "gui", comment = "If false, X and Y coordinates of notification line will be measured from screen width/2 and height/4 (standard MC algorithm)") public static boolean isExtraLinePosAbsolute = false; public static void load(File mcLocation) { try { File configFolder = new File(mcLocation, "config"); configFolder.mkdir(); File configFile = new File(configFolder, "OpenEye.json"); ConfigProcessing.processConfig(configFile, Config.class, ConfigProcessing.GSON); } catch (Exception e) { Log.warn(e, "Failed to load config"); } } }