diff --git a/src/main/java/net/knarcraft/knarlib/config/StargateYamlConfiguration.java b/src/main/java/net/knarcraft/knarlib/config/StargateYamlConfiguration.java index 03b1044..122e2b8 100644 --- a/src/main/java/net/knarcraft/knarlib/config/StargateYamlConfiguration.java +++ b/src/main/java/net/knarcraft/knarlib/config/StargateYamlConfiguration.java @@ -64,14 +64,14 @@ public class StargateYamlConfiguration extends YamlConfiguration { /** * Loads the configuration of the given plugin * - * @param plugin
The plugin to load the configuration from
+ * @param pluginThe plugin to load the configuration from
+ * @param copyDefaultsWhether to copy default values when loading
* @returnThe loaded configuration, or null if unsuccessful
*/ - @SuppressWarnings("unused") @Nullable - public static StargateYamlConfiguration loadConfiguration(@NotNull Plugin plugin) { + public static StargateYamlConfiguration loadConfiguration(@NotNull Plugin plugin, boolean copyDefaults) { StargateYamlConfiguration configuration = new StargateYamlConfiguration(); - configuration.options().copyDefaults(true); + configuration.options().copyDefaults(copyDefaults); try { configuration.load(new File(plugin.getDataFolder(), ConfigHelper.getConfigFile())); return configuration; @@ -88,7 +88,6 @@ public class StargateYamlConfiguration extends YamlConfiguration { * @param configurationThe configuration to save
* @returnTrue if the configuration was successfully saved
*/ - @SuppressWarnings("unused") public static boolean saveConfiguration(@NotNull Plugin plugin, @NotNull FileConfiguration configuration) { try { configuration.save(new File(plugin.getDataFolder(), ConfigHelper.getConfigFile())); diff --git a/src/main/java/net/knarcraft/knarlib/util/ConfigHelper.java b/src/main/java/net/knarcraft/knarlib/util/ConfigHelper.java index d11b11d..c458c0a 100644 --- a/src/main/java/net/knarcraft/knarlib/util/ConfigHelper.java +++ b/src/main/java/net/knarcraft/knarlib/util/ConfigHelper.java @@ -3,12 +3,12 @@ package net.knarcraft.knarlib.util; import net.knarcraft.knarlib.config.StargateYamlConfiguration; import net.knarcraft.knarlib.property.ColorConversion; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; @@ -64,32 +64,23 @@ public final class ConfigHelper { public static boolean migrateConfig(@NotNull Plugin plugin) { File dataFolder = plugin.getDataFolder(); File config = new File(dataFolder, CONFIG_FILE); - + + // Load the old configuration as a normal configuration to prevent old comments from being retained + FileConfiguration oldConfiguration = StargateYamlConfiguration.loadConfiguration(plugin, false); + if (oldConfiguration == null) { + return false; + } + //Save the old config just in case something goes wrong try { - StargateYamlConfiguration currentConfiguration = new StargateYamlConfiguration(); - currentConfiguration.load(config); - currentConfiguration.save(new File(dataFolder, BACKUP_CONFIG_FILE)); - } catch (IOException | InvalidConfigurationException exception) { + oldConfiguration.save(new File(dataFolder, BACKUP_CONFIG_FILE)); + } catch (IOException exception) { plugin.getLogger().log(Level.WARNING, "Unable to save old backup and do migration"); return false; } - //Load old and new configuration - plugin.reloadConfig(); - FileConfiguration oldConfiguration; - try { - oldConfiguration = new YamlConfiguration(); - oldConfiguration.load(config); - } catch (IOException | InvalidConfigurationException exception) { - plugin.getLogger().log(Level.WARNING, "Unable to load old configuration and do migration"); - return false; - } - - InputStream configStream = FileHelper.getInputStreamForInternalFile("/" + CONFIG_FILE); + InputStream configStream = loadInternalFile(plugin, CONFIG_FILE, "internal configuration"); if (configStream == null) { - plugin.getLogger().log(Level.SEVERE, "Could not migrate the configuration, as the internal " + - "configuration could not be read!"); return false; } YamlConfiguration newConfiguration = StargateYamlConfiguration.loadConfiguration( @@ -98,10 +89,8 @@ public final class ConfigHelper { //Read all available config migrations MapThe plugin to load the file from
+ * @param fileNameThe file to load
+ * @param fileDescriptionThe file description to use in error messages
+ * @returnAn input stream for the file, or null if the file could not be read
+ */ + @Nullable + private static InputStream loadInternalFile(@NotNull Plugin plugin, @NotNull String fileName, + @NotNull String fileDescription) { + InputStream configStream = FileHelper.getInputStreamForInternalFile("/" + fileName); + if (configStream == null) { + plugin.getLogger().log(Level.SEVERE, "Could not migrate the configuration, as the " + fileDescription + + " could not be read!"); + return null; + } else { + return configStream; + } + } + }