ConfigLoader.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.gmail.nossr50.config;
  2. import com.gmail.nossr50.mcMMO;
  3. import org.bukkit.configuration.file.FileConfiguration;
  4. import org.bukkit.configuration.file.YamlConfiguration;
  5. import java.io.File;
  6. import java.util.List;
  7. public abstract class ConfigLoader {
  8. protected static final mcMMO plugin = mcMMO.p;
  9. protected String fileName;
  10. private File configFile;
  11. protected FileConfiguration config;
  12. public ConfigLoader(String relativePath, String fileName) {
  13. this.fileName = fileName;
  14. configFile = new File(plugin.getDataFolder(), relativePath + File.separator + fileName);
  15. loadFile();
  16. }
  17. public ConfigLoader(String fileName) {
  18. this.fileName = fileName;
  19. configFile = new File(plugin.getDataFolder(), fileName);
  20. loadFile();
  21. }
  22. protected void loadFile() {
  23. if (!configFile.exists()) {
  24. plugin.debug("Creating mcMMO " + fileName + " File...");
  25. try {
  26. plugin.saveResource(fileName, false); // Normal files
  27. }
  28. catch (IllegalArgumentException ex) {
  29. plugin.saveResource(configFile.getParentFile().getName() + File.separator + fileName, false); // Mod files
  30. }
  31. }
  32. else {
  33. plugin.debug("Loading mcMMO " + fileName + " File...");
  34. }
  35. config = YamlConfiguration.loadConfiguration(configFile);
  36. }
  37. protected abstract void loadKeys();
  38. protected boolean validateKeys() {
  39. return true;
  40. }
  41. protected boolean noErrorsInConfig(List<String> issues) {
  42. for (String issue : issues) {
  43. plugin.getLogger().warning(issue);
  44. }
  45. return issues.isEmpty();
  46. }
  47. protected void validate() {
  48. if (validateKeys()) {
  49. plugin.debug("No errors found in " + fileName + "!");
  50. }
  51. else {
  52. plugin.getLogger().warning("Errors were found in " + fileName + "! mcMMO was disabled!");
  53. plugin.getServer().getPluginManager().disablePlugin(plugin);
  54. plugin.noErrorsInConfigFiles = false;
  55. }
  56. }
  57. public File getFile() {
  58. return configFile;
  59. }
  60. public void backup() {
  61. plugin.getLogger().warning("You are using an old version of the " + fileName + " file.");
  62. plugin.getLogger().warning("Your old file has been renamed to " + fileName + ".old and has been replaced by an updated version.");
  63. configFile.renameTo(new File(configFile.getPath() + ".old"));
  64. if (plugin.getResource(fileName) != null) {
  65. plugin.saveResource(fileName, true);
  66. }
  67. plugin.getLogger().warning("Reloading " + fileName + " with new values...");
  68. loadFile();
  69. loadKeys();
  70. }
  71. }