From ac7f975b022bfae74d649393636583057b18ab2c Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Thu, 11 Jul 2024 00:52:13 +0200 Subject: [PATCH] Fix value written as set in yml. Fix material group not being added at to the registry. Fix EnchantmentSquared restriction not having enchantment. Added plugin's instance as conflict source. --- .../xyz/alexcrea/cuanvil/api/ConflictAPI.java | 13 ++++------ .../alexcrea/cuanvil/api/ConflictBuilder.java | 14 +++++------ .../cuanvil/api/MaterialGroupApi.java | 25 +++++++++++++------ .../EnchantmentSquaredDependency.kt | 5 ++-- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java index 4bdb6d2..28fccd2 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java @@ -9,10 +9,7 @@ import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; import xyz.alexcrea.cuanvil.gui.config.global.EnchantConflictGui; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * Custom Anvil api for conflict registry. @@ -82,8 +79,8 @@ public class ConflictAPI { String basePath = name + "."; - Set enchantments = extractEnchantments(builder); - Set excludedGroups = builder.getExcludedGroupNames(); + List enchantments = extractEnchantments(builder); + List excludedGroups = new ArrayList<>(builder.getExcludedGroupNames()); if(!enchantments.isEmpty()) config.set(basePath + "enchantments", enchantments); if(!excludedGroups.isEmpty()) config.set(basePath + "notAffectedGroups", excludedGroups); if(builder.getMaxBeforeConflict() > 0) config.set(basePath + "maxEnchantmentBeforeConflict", builder.getMaxBeforeConflict()); @@ -101,8 +98,8 @@ public class ConflictAPI { * @return Builder's stored enchantment. */ @NotNull - private static Set extractEnchantments(@NotNull ConflictBuilder builder){ - Set result = new HashSet<>(builder.getEnchantmentNames()); + private static List extractEnchantments(@NotNull ConflictBuilder builder){ + List result = new ArrayList<>(builder.getEnchantmentNames()); for (NamespacedKey enchantmentKey : builder.getEnchantmentKeys()) { result.add(enchantmentKey.getKey()); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java index 2786dd9..3e63b36 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java @@ -325,24 +325,24 @@ public class ConflictBuilder { */ @NotNull public ConflictBuilder copy() { - ConflictBuilder clone = new ConflictBuilder(this.name, this.source); + ConflictBuilder copy = new ConflictBuilder(this.name, this.source); setMaxBeforeConflict(this.maxBeforeConflict); // Set Enchantments for (NamespacedKey key : this.enchantmentKeys) { - clone.addEnchantment(key); + copy.addEnchantment(key); } - for (String name : this.enchantmentNames) { - clone.addEnchantment(name); + for (String enchantName : this.enchantmentNames) { + copy.addEnchantment(enchantName); } // Set Groups - for (String name : this.excludedGroupNames) { - clone.addExcludedGroup(name); + for (String groupName : this.excludedGroupNames) { + copy.addExcludedGroup(groupName); } - return clone; + return copy; } /** * Build a new Enchant conflict group by this builder. diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java index 769b0bf..b3283aa 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java @@ -1,6 +1,7 @@ package xyz.alexcrea.cuanvil.api; import io.delilaheve.CustomAnvil; +import io.delilaheve.util.ConfigOptions; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; @@ -13,10 +14,7 @@ import xyz.alexcrea.cuanvil.group.IncludeGroup; import xyz.alexcrea.cuanvil.group.ItemGroupManager; import xyz.alexcrea.cuanvil.gui.config.global.GroupConfigGui; -import java.util.Collections; -import java.util.EnumSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Custom Anvil api for material group registry. @@ -39,6 +37,7 @@ public class MaterialGroupApi { public static boolean addMaterialGroup(@NotNull AbstractMaterialGroup group){ ItemGroupManager itemGroupManager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager(); if(itemGroupManager.get(group.getName()) != null) return false; + itemGroupManager.getGroupMap().put(group.getName(), group); if(!writeMaterialGroup(group, false)) return false; @@ -46,6 +45,10 @@ public class MaterialGroupApi { GroupConfigGui.INSTANCE.updateValueForGeneric(includeGroup, true); } + if(ConfigOptions.INSTANCE.getVerboseDebugLog()){ + CustomAnvil.instance.getLogger().info("Registered group " + group.getName()); + } + return true; } @@ -100,10 +103,10 @@ public class MaterialGroupApi { config.set(basePath + ItemGroupManager.GROUP_TYPE_PATH, groupType); if(!materialSet.isEmpty()){ - config.set(basePath + ItemGroupManager.MATERIAL_LIST_PATH, materialSet); + config.set(basePath + ItemGroupManager.MATERIAL_LIST_PATH, materialSetToStringList(materialSet)); } if(!groupSet.isEmpty()){ - config.set(basePath + ItemGroupManager.GROUP_LIST_PATH, groupSet); + config.set(basePath + ItemGroupManager.GROUP_LIST_PATH, materialGroupSEtToStringList(groupSet)); } } @@ -116,11 +119,19 @@ public class MaterialGroupApi { config.set(basePath + ItemGroupManager.GROUP_TYPE_PATH, "include"); if(!materials.isEmpty()){ - config.set(basePath + ItemGroupManager.MATERIAL_LIST_PATH, materials); + config.set(basePath + ItemGroupManager.MATERIAL_LIST_PATH, materialSetToStringList(materials)); } } + public static List materialSetToStringList(@NotNull Set materials){ + return materials.stream().map(material -> material.getKey().getKey().toLowerCase()).toList(); + } + + public static List materialGroupSEtToStringList(@NotNull Set groups){ + return groups.stream().map(AbstractMaterialGroup::getName).toList(); + } + /** * Remove a material group. * Caution ! It will not be removed from depending conflict or other material group at runtime. diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt index 3eacc2e..e2618ae 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/EnchantmentSquaredDependency.kt @@ -110,7 +110,8 @@ class EnchantmentSquaredDependency(private val enchantmentSquaredPlugin: Plugin) private fun writeMaterialRestriction(esEnchantments: List){ for (enchantment in esEnchantments) { - val conflict = ConflictBuilder("restriction_${enchantment.key.key}") + val conflict = ConflictBuilder("restriction_${enchantment.key.key}", CustomAnvil.instance) + conflict.addEnchantment(enchantment) // enchanted book is allowed in any case. conflict.addExcludedGroup("enchanted_book") @@ -146,7 +147,7 @@ class EnchantmentSquaredDependency(private val enchantmentSquaredPlugin: Plugin) } private fun writeConflict(enchantment1: CAEnchantment, enchantment2: CAEnchantment){ - val conflict = ConflictBuilder("${enchantment1.name}_with_${enchantment2.name}_conflict") + val conflict = ConflictBuilder("${enchantment1.name}_with_${enchantment2.name}_conflict", CustomAnvil.instance) conflict.addEnchantment(enchantment1).addEnchantment(enchantment2)