From 9b3402e45f1f79a7d3b50192b855345c7ee03f0e Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Wed, 24 Jul 2024 16:49:07 +0200 Subject: [PATCH] Fix sorted list depending on GuiSharedConstant initialisation --- .../cuanvil/enchant/CAEnchantmentRegistry.java | 14 ++++++++++++++ .../config/global/AbstractEnchantConfigGui.java | 3 ++- .../cuanvil/gui/util/GuiSharedConstant.java | 9 +-------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java index f4d3dec..3b285c1 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java @@ -24,6 +24,8 @@ public class CAEnchantmentRegistry { private final HashMap byKeyMap; private final HashMap byNameMap; + private final SortedSet nameSortedEnchantments; + private final List unoptimisedGetValues; private final List unoptimisedCleanValues; @@ -34,6 +36,8 @@ public class CAEnchantmentRegistry { byKeyMap = new HashMap<>(); byNameMap = new HashMap<>(); + nameSortedEnchantments = new TreeSet<>(Comparator.comparing(CAEnchantment::getName)); + unoptimisedGetValues = new ArrayList<>(); unoptimisedCleanValues = new ArrayList<>(); @@ -82,6 +86,7 @@ public class CAEnchantmentRegistry { byKeyMap.put(enchantment.getKey(), enchantment); byNameMap.put(enchantment.getName(), enchantment); + nameSortedEnchantments.add(enchantment); if(!enchantment.isGetOptimised()){ unoptimisedGetValues.add(enchantment); @@ -109,6 +114,8 @@ public class CAEnchantmentRegistry { byKeyMap.remove(enchantment.getKey()); byNameMap.remove(enchantment.getName()); + nameSortedEnchantments.remove(enchantment); + unoptimisedGetValues.remove(enchantment); unoptimisedCleanValues.remove(enchantment); return true; @@ -185,4 +192,11 @@ public class CAEnchantmentRegistry { return optimisedGetOperators; } + /** + * Get custom anvil enchantment sorted by name. + * @return An immutable sorted set of every registered enchantment sorted by name. + */ + public SortedSet getNameSortedEnchantments() { + return Collections.unmodifiableSortedSet(nameSortedEnchantments); + } } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/AbstractEnchantConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/AbstractEnchantConfigGui.java index 369924b..5ba5691 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/AbstractEnchantConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/AbstractEnchantConfigGui.java @@ -4,6 +4,7 @@ import com.github.stefvanschie.inventoryframework.gui.GuiItem; import com.github.stefvanschie.inventoryframework.pane.util.Pattern; import org.bukkit.event.inventory.InventoryClickEvent; import xyz.alexcrea.cuanvil.enchant.CAEnchantment; +import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; import xyz.alexcrea.cuanvil.gui.config.list.SettingGuiListConfigGui; import xyz.alexcrea.cuanvil.gui.config.settings.SettingGui; @@ -37,7 +38,7 @@ public abstract class AbstractEnchantConfigGui getEveryDisplayableInstanceOfGeneric() { - return GuiSharedConstant.SORTED_ENCHANTMENT_LIST; + return CAEnchantmentRegistry.getInstance().getNameSortedEnchantments(); } @Override diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java b/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java index bcab7fa..c2bccf9 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java @@ -7,20 +7,13 @@ import com.github.stefvanschie.inventoryframework.pane.util.Pattern; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import xyz.alexcrea.cuanvil.enchant.CAEnchantment; -import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; import xyz.alexcrea.cuanvil.gui.config.MainConfigGui; import java.util.*; public class GuiSharedConstant { - public static final List SORTED_ENCHANTMENT_LIST; - - static { - SORTED_ENCHANTMENT_LIST = new ArrayList<>(CAEnchantmentRegistry.getInstance().values()); - SORTED_ENCHANTMENT_LIST.sort(Comparator.comparing(ench -> ench.getKey().getKey())); - } + private GuiSharedConstant(){} public static final Material SECONDARY_BACKGROUND_MATERIAL = Material.BLACK_STAINED_GLASS_PANE; public static final GuiItem SECONDARY_BACKGROUND_ITEM = GuiGlobalItems.backgroundItem(GuiSharedConstant.SECONDARY_BACKGROUND_MATERIAL);