package com.gmail.nossr50.config; import com.gmail.nossr50.mcMMO; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; import java.util.List; public abstract class ConfigLoader { protected static final mcMMO plugin = mcMMO.p; protected String fileName; private final File configFile; protected FileConfiguration config; public ConfigLoader(String relativePath, String fileName) { this.fileName = fileName; configFile = new File(plugin.getDataFolder(), relativePath + File.separator + fileName); loadFile(); } public ConfigLoader(String fileName) { this.fileName = fileName; configFile = new File(plugin.getDataFolder(), fileName); loadFile(); } protected void loadFile() { if (!configFile.exists()) { plugin.debug("Creating mcMMO " + fileName + " File..."); try { plugin.saveResource(fileName, false); // Normal files } catch (IllegalArgumentException ex) { plugin.saveResource(configFile.getParentFile().getName() + File.separator + fileName, false); // Mod files } } else { plugin.debug("Loading mcMMO " + fileName + " File..."); } config = YamlConfiguration.loadConfiguration(configFile); } protected abstract void loadKeys(); protected boolean validateKeys() { return true; } protected boolean noErrorsInConfig(List issues) { for (String issue : issues) { plugin.getLogger().warning(issue); } return issues.isEmpty(); } protected void validate() { if (validateKeys()) { plugin.debug("No errors found in " + fileName + "!"); } else { plugin.getLogger().warning("Errors were found in " + fileName + "! mcMMO was disabled!"); plugin.getServer().getPluginManager().disablePlugin(plugin); plugin.noErrorsInConfigFiles = false; } } public File getFile() { return configFile; } public void backup() { plugin.getLogger().warning("You are using an old version of the " + fileName + " file."); plugin.getLogger().warning("Your old file has been renamed to " + fileName + ".old and has been replaced by an updated version."); configFile.renameTo(new File(configFile.getPath() + ".old")); if (plugin.getResource(fileName) != null) { plugin.saveResource(fileName, true); } plugin.getLogger().warning("Reloading " + fileName + " with new values..."); loadFile(); loadKeys(); } }