From cfe0faf4561c92a606e4f54a40439f28a3a3135b Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:31:59 +0200 Subject: [PATCH] Automaticly add default value when value is absent --- .../cuanvil/update/PluginSetDefault.java | 61 +++++++++++++++++++ src/main/kotlin/io/delilaheve/CustomAnvil.kt | 4 ++ .../io/delilaheve/util/ConfigOptions.kt | 4 +- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/main/java/xyz/alexcrea/cuanvil/update/PluginSetDefault.java diff --git a/src/main/java/xyz/alexcrea/cuanvil/update/PluginSetDefault.java b/src/main/java/xyz/alexcrea/cuanvil/update/PluginSetDefault.java new file mode 100644 index 0000000..248cc5f --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/update/PluginSetDefault.java @@ -0,0 +1,61 @@ +package xyz.alexcrea.cuanvil.update; + +import io.delilaheve.CustomAnvil; +import io.delilaheve.util.ConfigOptions; +import org.bukkit.configuration.file.FileConfiguration; +import org.jetbrains.annotations.NotNull; +import xyz.alexcrea.cuanvil.config.ConfigHolder; +import xyz.alexcrea.cuanvil.config.WorkPenaltyType; + +public class PluginSetDefault { + + public static void reAddMissingDefault(){ + FileConfiguration config = ConfigHolder.DEFAULT_CONFIG.getConfig(); + + int nbSet = 0; + + nbSet+= trySetDefault(config, ConfigOptions.CAP_ANVIL_COST, ConfigOptions.DEFAULT_CAP_ANVIL_COST); + nbSet+= trySetDefault(config, ConfigOptions.MAX_ANVIL_COST, ConfigOptions.DEFAULT_MAX_ANVIL_COST); + nbSet+= trySetDefault(config, ConfigOptions.REMOVE_ANVIL_COST_LIMIT, ConfigOptions.DEFAULT_REMOVE_ANVIL_COST_LIMIT); + nbSet+= trySetDefault(config, ConfigOptions.REPLACE_TOO_EXPENSIVE, ConfigOptions.DEFAULT_REPLACE_TOO_EXPENSIVE); + nbSet+= trySetDefault(config, ConfigOptions.ITEM_REPAIR_COST, ConfigOptions.DEFAULT_ITEM_REPAIR_COST); + nbSet+= trySetDefault(config, ConfigOptions.UNIT_REPAIR_COST, ConfigOptions.DEFAULT_UNIT_REPAIR_COST); + nbSet+= trySetDefault(config, ConfigOptions.ITEM_RENAME_COST, ConfigOptions.DEFAULT_ITEM_RENAME_COST); + nbSet+= trySetDefault(config, ConfigOptions.SACRIFICE_ILLEGAL_COST, ConfigOptions.DEFAULT_SACRIFICE_ILLEGAL_COST); + nbSet+= trySetDefault(config, ConfigOptions.ALLOW_COLOR_CODE, ConfigOptions.DEFAULT_ALLOW_COLOR_CODE); + nbSet+= trySetDefault(config, ConfigOptions.ALLOW_HEXADECIMAL_COLOR, ConfigOptions.DEFAULT_ALLOW_HEXADECIMAL_COLOR); + nbSet+= trySetDefault(config, ConfigOptions.PERMISSION_NEEDED_FOR_COLOR, ConfigOptions.DEFAULT_PERMISSION_NEEDED_FOR_COLOR); + nbSet+= trySetDefault(config, ConfigOptions.USE_OF_COLOR_COST, ConfigOptions.DEFAULT_USE_OF_COLOR_COST); + nbSet+= trySetDefault(config, ConfigOptions.WORK_PENALTY_TYPE, WorkPenaltyType.DEFAULT.configName()); + nbSet+= trySetDefault(config, ConfigOptions.DEFAULT_LIMIT_PATH, ConfigOptions.DEFAULT_ENCHANT_LIMIT); + + if(nbSet > 0){ + CustomAnvil.instance.getLogger().info("Adding " + nbSet + " absent default config values."); + ConfigHolder.DEFAULT_CONFIG.saveToDisk(true); + } + + } + + private static int trySetDefault(@NotNull FileConfiguration config, @NotNull String path, @NotNull String value){ + if(config.isSet(path)) return 0; + + config.set(path, value); + return 1; + } + + private static int trySetDefault(@NotNull FileConfiguration config, @NotNull String path, int value){ + if(config.isSet(path)) return 0; + + config.set(path, value); + return 1; + } + + private static int trySetDefault(@NotNull FileConfiguration config, @NotNull String path, boolean value){ + if(config.isSet(path)) return 0; + + config.set(path, value); + return 1; + } + + +} diff --git a/src/main/kotlin/io/delilaheve/CustomAnvil.kt b/src/main/kotlin/io/delilaheve/CustomAnvil.kt index e247098..935a104 100644 --- a/src/main/kotlin/io/delilaheve/CustomAnvil.kt +++ b/src/main/kotlin/io/delilaheve/CustomAnvil.kt @@ -14,6 +14,7 @@ import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry import xyz.alexcrea.cuanvil.gui.config.MainConfigGui import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant import xyz.alexcrea.cuanvil.listener.ChatEventListener +import xyz.alexcrea.cuanvil.update.PluginSetDefault import xyz.alexcrea.cuanvil.update.Update_1_21 import xyz.alexcrea.cuanvil.util.Metrics import java.io.File @@ -146,6 +147,9 @@ class CustomAnvil : JavaPlugin() { MainConfigGui.getInstance().init(DependencyManager.packetManager) GuiSharedConstant.loadConstants() + // Finally, re add default we may be missing + PluginSetDefault.reAddMissingDefault() + } fun reloadResource( diff --git a/src/main/kotlin/io/delilaheve/util/ConfigOptions.kt b/src/main/kotlin/io/delilaheve/util/ConfigOptions.kt index 9d8a822..37fdf5a 100644 --- a/src/main/kotlin/io/delilaheve/util/ConfigOptions.kt +++ b/src/main/kotlin/io/delilaheve/util/ConfigOptions.kt @@ -36,7 +36,7 @@ object ConfigOptions { const val WORK_PENALTY_TYPE = "work_penalty_type" - private const val DEFAULT_LIMIT_PATH = "default_limit" + const val DEFAULT_LIMIT_PATH = "default_limit" const val ENCHANT_LIMIT_ROOT = "enchant_limits" const val ENCHANT_VALUES_ROOT = "enchant_values" @@ -72,7 +72,7 @@ object ConfigOptions { const val DEFAULT_PERMISSION_NEEDED_FOR_COLOR = true const val DEFAULT_USE_OF_COLOR_COST = 0 - private const val DEFAULT_ENCHANT_LIMIT = 5 + const val DEFAULT_ENCHANT_LIMIT = 5 // Debug flag private const val DEFAULT_DEBUG_LOG = false