From 10665082338fd056e6be6d7efc30a4a3f71d047c Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:57:27 +0200 Subject: [PATCH] Hotfix: Fix custom enchantments max level from supported enchantments resetting every restart. --- build.gradle.kts | 2 +- .../alexcrea/cuanvil/api/EnchantmentApi.java | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7a6e684..8dafea2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ plugins { } group = "xyz.alexcrea" -version = "1.6.4" +version = "1.6.5" repositories { // EcoEnchants diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/EnchantmentApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/EnchantmentApi.java index 26dc35c..76f1ac2 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/EnchantmentApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/EnchantmentApi.java @@ -170,27 +170,37 @@ public class EnchantmentApi { */ public static boolean writeDefaultConfig(CAEnchantment enchantment, boolean override){ FileConfiguration config = ConfigHolder.DEFAULT_CONFIG.getConfig(); - if(!override && containEnchantment(config, enchantment)) return false; - writeDefaultConfig(config, enchantment); - - prepareSaveTask(); + if(tryWriteDefaultConfig(config, enchantment, override)){ + prepareSaveTask(); + } return true; } - private static boolean containEnchantment(FileConfiguration config, CAEnchantment enchantment) { - return config.contains(enchantment.getName()) || config.contains(enchantment.getKey().toString()); - } + private static boolean tryWriteDefaultConfig(FileConfiguration defaultConfig, CAEnchantment enchantment, boolean override) { + boolean hasChange = false; - - private static void writeDefaultConfig(FileConfiguration defaultConfig, CAEnchantment enchantment) { - defaultConfig.set("enchant_limits." + enchantment.getKey(), enchantment.defaultMaxLevel()); + String levelPath = "enchant_limits." + enchantment.getKey(); + if(override || !defaultConfig.isSet(levelPath)){ + defaultConfig.set(levelPath, enchantment.defaultMaxLevel()); + hasChange = true; + } String basePath = "enchant_values." + enchantment.getKey(); EnchantmentRarity rarity = enchantment.defaultRarity(); - defaultConfig.set(basePath + ".item", rarity.getItemValue()); - defaultConfig.set(basePath + ".book", rarity.getBookValue()); + String itemPath = basePath + ".item"; + String bookPath = basePath + ".book"; + if(override || !defaultConfig.isSet(itemPath)){ + defaultConfig.set(itemPath, rarity.getItemValue()); + hasChange = true; + } + if(override || !defaultConfig.isSet(bookPath)){ + defaultConfig.set(bookPath, rarity.getBookValue()); + hasChange = true; + } + + return hasChange; } /**