From cd1feb4f426b87595cc3df03a88a2053fa43b15b Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 15 Oct 2020 12:14:49 +0100 Subject: [PATCH] Added config.yml autoupdate --- .../ecoenchants/config/ConfigManager.java | 3 +-- ...atingLang.java => UpdatingYamlConfig.java} | 24 ++++++++++++++----- .../ecoenchants/config/configs/Config.java | 6 ++--- .../ecoenchants/config/configs/Lang.java | 6 ++--- Plugin/src/main/resources/config.yml | 2 -- 5 files changed, 25 insertions(+), 16 deletions(-) rename Plugin/src/main/java/com/willfp/ecoenchants/config/{UpdatingLang.java => UpdatingYamlConfig.java} (71%) diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/ConfigManager.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/ConfigManager.java index 8f115754..76d14ad6 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/ConfigManager.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/ConfigManager.java @@ -12,7 +12,6 @@ import java.util.Set; public class ConfigManager { public static final HashMap configVersions = new HashMap() {{ - put("config", 5.0); put("target", 1.0); put("rarity", 1.0); }}; @@ -29,7 +28,7 @@ public class ConfigManager { */ public static void updateConfigs() { LANG.update(); - CONFIG.reload(); + CONFIG.update(); TARGET.reload(); RARITY.reload(); updateEnchantmentConfigs(); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingLang.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java similarity index 71% rename from Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingLang.java rename to Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java index bcc94c52..5491e4e3 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingLang.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java @@ -11,34 +11,38 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -public abstract class UpdatingLang { +public abstract class UpdatingYamlConfig { public YamlConfiguration config; private File configFile; + private final String name; + private final boolean removeUnused; - public UpdatingLang() { + public UpdatingYamlConfig(String name, boolean removeUnused) { + this.name = name + ".yml"; + this.removeUnused = removeUnused; init(); } private void init() { - if (!new File(EcoEnchantsPlugin.getInstance().getDataFolder(), "lang.yml").exists()) { + if (!new File(EcoEnchantsPlugin.getInstance().getDataFolder(), name).exists()) { createFile(); } - this.configFile = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), "lang.yml"); + this.configFile = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), name); this.config = YamlConfiguration.loadConfiguration(configFile); update(); } private void createFile() { - EcoEnchantsPlugin.getInstance().saveResource("lang.yml", false); + EcoEnchantsPlugin.getInstance().saveResource(name, false); } public void update() { try { config.load(configFile); - InputStream newIn = EcoEnchantsPlugin.getInstance().getResource("lang.yml"); + InputStream newIn = EcoEnchantsPlugin.getInstance().getResource(name); BufferedReader reader = new BufferedReader(new InputStreamReader(newIn, StandardCharsets.UTF_8)); YamlConfiguration newConfig = new YamlConfiguration(); newConfig.load(reader); @@ -52,6 +56,14 @@ public abstract class UpdatingLang { } })); + if(this.removeUnused) { + config.getKeys(true).forEach((s -> { + if(!newConfig.getKeys(true).contains(s)) { + config.set(s, null); + } + })); + } + config.save(configFile); } catch (IOException | InvalidConfigurationException e) { e.printStackTrace(); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Config.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Config.java index 60f6e99b..7ffce3de 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Config.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Config.java @@ -1,6 +1,6 @@ package com.willfp.ecoenchants.config.configs; -import com.willfp.ecoenchants.config.YamlConfig; +import com.willfp.ecoenchants.config.UpdatingYamlConfig; import org.bukkit.inventory.ItemStack; import java.util.List; @@ -8,9 +8,9 @@ import java.util.List; /** * Wrapper for config.yml */ -public class Config extends YamlConfig { +public class Config extends UpdatingYamlConfig { public Config() { - super("config"); + super("config", true); } public int getInt(String path) { diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Lang.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Lang.java index bc985669..fed1ac93 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Lang.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/Lang.java @@ -1,6 +1,6 @@ package com.willfp.ecoenchants.config.configs; -import com.willfp.ecoenchants.config.UpdatingLang; +import com.willfp.ecoenchants.config.UpdatingYamlConfig; import com.willfp.ecoenchants.util.StringUtils; import java.util.List; @@ -8,9 +8,9 @@ import java.util.List; /** * Wrapper for lang.yml */ -public class Lang extends UpdatingLang { +public class Lang extends UpdatingYamlConfig { public Lang() { - super(); + super("lang", false); } public String getString(String path) { diff --git a/Plugin/src/main/resources/config.yml b/Plugin/src/main/resources/config.yml index 2416eff6..7469327e 100644 --- a/Plugin/src/main/resources/config.yml +++ b/Plugin/src/main/resources/config.yml @@ -3,8 +3,6 @@ # by Auxilor # -config-version: 5.0 # Don't edit this. - anvil: allow-unsafe-levels: false # Allow unsafe enchantments like Sharpness 6 by combining 2 Sharp 5. allow-combining-unsafe: true # Allow further combining unsafe levels, eg Sharp 6 + Sharp 6 = Sharp 7.