package com.fireball1725.twitchnotifier.config;
import com.fireball1725.twitchnotifier.helper.ConfigurationHelper;
import com.fireball1725.twitchnotifier.lib.Reference;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.io.File;
public class ConfigurationFile {
public static Configuration configuration;
public static Configuration init(File configFile) {
if (configuration == null) {
configuration = new Configuration(configFile);
loadConfiguration();
}
return configuration;
}
public static void loadConfiguration() {
// StreamTip Settings
configuration.setCategoryLanguageKey("streamtip", "config.streamtip");
configuration.setCategoryRequiresMcRestart("streamtip", true);
ConfigStreamTipSettings.streamTipEnabled = ConfigurationHelper.getBoolean(configuration, "Enable StreamTip", "streamtip", false, "Enable StreamTip Integration");
ConfigStreamTipSettings.streamTipClientID = ConfigurationHelper.getString(configuration, "StreamTip API ClientID", "streamtip", "", "API Client ID for StreamTip", false);
ConfigStreamTipSettings.streamTipAccessToken = ConfigurationHelper.getString(configuration, "StreamTip API Access Token", "streamtip", "", "API Access Token for StreamTip", false);
ConfigStreamTipSettings.streamTipMinAmountForAlert = ConfigurationHelper.getInt(configuration, "Minimum Amount for Alert", "streamtip", 1, "Minimum Amount for Alert to Show");
ConfigStreamTipSettings.streamTipShowFireworks = ConfigurationHelper.getBoolean(configuration, "Show Fireworks", "streamtip", true, "Show Fireworks on new StreamTip");
ConfigStreamTipSettings.streamTipShowAlertBox = ConfigurationHelper.getBoolean(configuration, "Show Alert Box", "streamtip", true, "Show Alert Box on new StreamTip");
ConfigStreamTipSettings.streamTipNotificationMessage = ConfigurationHelper.getString(configuration, "Notification Message", "streamtip", "New Tip!%%%USERNAME% Just donated %AMOUNT%!%%Message: %MESSAGE%", "Message shown on Alert Box (See readme for variables)", true);
// Twitch Settings
configuration.setCategoryLanguageKey("twitch", "config.twitch");
configuration.setCategoryRequiresMcRestart("twitch", true);
ConfigTwitchSettings.twitchEnabled = ConfigurationHelper.getBoolean(configuration, "Enable Twitch", "twitch", false, "Enable Twitch Integration");
ConfigTwitchSettings.twitchOAuthToken = ConfigurationHelper.getString(configuration, "oAuth Token", "twitch", "See readme for help getting oAuth token", "Twitch oAuth Token", false);
ConfigTwitchSettings.twitchCheckTimer = ConfigurationHelper.getInt(configuration, "Check Timer", "twitch", 3, "Number of seconds to check for new Twitch events");
ConfigTwitchSettings.twitchShowFireworksFollow = ConfigurationHelper.getBoolean(configuration, "Show Fireworks on Follow", "twitch", true, "Show Fireworks on new Follower");
ConfigTwitchSettings.twitchShowAlertBoxFollow = ConfigurationHelper.getBoolean(configuration, "Show Alert Box on Follow", "twitch", true, "Show Alert Box on new Follower");
ConfigTwitchSettings.twitchShowFireworksSubscribe = ConfigurationHelper.getBoolean(configuration, "Show Fireworks on Subscribe", "twitch", false, "Show Fireworks on new Subscriber (Only will work if Twitch partner)");
ConfigTwitchSettings.twitchShowAlertBoxSubscribe = ConfigurationHelper.getBoolean(configuration, "Show Alert Box on Subscribe", "twitch", false, "Show Alert Box on new Subscriber (Only will work if Twitch partner)");
ConfigTwitchSettings.twitchFollowerNotificationMessage = ConfigurationHelper.getString(configuration, "New Follower Notification Message", "twitch", "New Follower!%%%USERNAME% is now following the channel!", "Message shown on Alert Box (See readme for variables)", true);
ConfigTwitchSettings.twitchSubscriberNotificationMessage = ConfigurationHelper.getString(configuration, "New Subscriber Notification Message", "twitch", "New Subscriber!%%%USERNAME% just subscribed to the channel!", "Message shown on Alert Box (See readme for variables)", true);
ConfigTwitchSettings.twitchChannelName = ConfigurationHelper.getString(configuration, "Channel Name", "twitch", "", "Your twitch channel name", true);
ConfigTwitchSettings.twitchQueryLength = ConfigurationHelper.getInt(configuration, "Query Length", "twitch", 50, "How many records to get from twitch with each query");
// AlertBox Settings
configuration.setCategoryLanguageKey("alertbox", "config.alertbox");
ConfigAlertBoxSettings.alertBox_CloseGUI = ConfigurationHelper.getBoolean(configuration, "Close GUI if open", "alertbox", true, "Close any open GUI Windows if there is a new Alert");
ConfigAlertBoxSettings.alertBox_CooldownTime = ConfigurationHelper.getInt(configuration, "Cool Down Timer", "alertbox", 2, "Cool down timer in seconds between alerts");
ConfigAlertBoxSettings.alertBox_ShowTime = ConfigurationHelper.getInt(configuration, "Time to show Alert", "alertbox", 8, "Time to show Alert in seconds");
ConfigAlertBoxSettings.alertBox_ShowBackground = ConfigurationHelper.getBoolean(configuration, "Show Background", "alertbox", true, "Show Background Color");
ConfigAlertBoxSettings.alertBox_BackgroundColor = ConfigurationHelper.getInt(configuration, "Background Color", "alertbox", 0xF0100010, "Background Color (argb)");
ConfigAlertBoxSettings.alertBox_ShowBorder = ConfigurationHelper.getBoolean(configuration, "Show Border", "alertbox", true, "Show Border Color");
ConfigAlertBoxSettings.alertBox_BorderColor = ConfigurationHelper.getInt(configuration, "Border Color", "alertbox", 0xFF00CC00, "Border Color (argb)");
ConfigAlertBoxSettings.alertBox_TextColor = ConfigurationHelper.getInt(configuration, "Text Color", "alertbox", 0x00CC00, "Text Color (rgb)");
ConfigAlertBoxSettings.alertBox_BorderGradient = ConfigurationHelper.getBoolean(configuration, "Enable Border Gradient", "alertbox", true, "Render the border with a gradient");
// Firework Settings
configuration.setCategoryLanguageKey("fireworks", "config.fireworks");
ConfigFireworkSettings.fireworkColors = ConfigurationHelper.getInt(configuration, "Firework Colors", "fireworks", ConfigFireworkSettings.FireworkColors_Default, "Firework Colors (rbg list)");
ConfigFireworkSettings.fireworkLocations = ConfigurationHelper.getInt(configuration, "Firework Locations", "fireworks", ConfigFireworkSettings.FireworkLocations_Default, "Firework Locations (Y Level to player)");
// Spawn Block Settings
configuration.setCategoryLanguageKey("spawnblock", "config.spawnblock");
ConfigBlockSpawnSettings.spawn_block_enabled = ConfigurationHelper.getBoolean(configuration, "Enabled", "spawnblock", false, "Spawn a block when events happen");
ConfigBlockSpawnSettings.spawn_block_blockNames = ConfigurationHelper.getString(configuration, "Block Names", "spawnblock", ConfigBlockSpawnSettings.spawn_block_blockNames_default, "List of block names (ex: minecraft:dirt)");
ConfigBlockSpawnSettings.spawn_block_waitTime = ConfigurationHelper.getInt(configuration, "Wait Time (sec)", "spawnblock", 1, "Time to wait before spawning block (in seconds)");
if (configuration.hasChanged()) {
configuration.save();
}
}
@SubscribeEvent
public void onConfigurationChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) {
if (event.getModID().equalsIgnoreCase(Reference.MOD_ID)) {
loadConfiguration();
}
}
}