Fix sorted list depending on GuiSharedConstant initialisation

This commit is contained in:
alexcrea 2024-07-24 16:49:07 +02:00
parent 526e6a3528
commit 9b3402e45f
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
3 changed files with 17 additions and 9 deletions

View file

@ -24,6 +24,8 @@ public class CAEnchantmentRegistry {
private final HashMap<NamespacedKey, CAEnchantment> byKeyMap; private final HashMap<NamespacedKey, CAEnchantment> byKeyMap;
private final HashMap<String, CAEnchantment> byNameMap; private final HashMap<String, CAEnchantment> byNameMap;
private final SortedSet<CAEnchantment> nameSortedEnchantments;
private final List<CAEnchantment> unoptimisedGetValues; private final List<CAEnchantment> unoptimisedGetValues;
private final List<CAEnchantment> unoptimisedCleanValues; private final List<CAEnchantment> unoptimisedCleanValues;
@ -34,6 +36,8 @@ public class CAEnchantmentRegistry {
byKeyMap = new HashMap<>(); byKeyMap = new HashMap<>();
byNameMap = new HashMap<>(); byNameMap = new HashMap<>();
nameSortedEnchantments = new TreeSet<>(Comparator.comparing(CAEnchantment::getName));
unoptimisedGetValues = new ArrayList<>(); unoptimisedGetValues = new ArrayList<>();
unoptimisedCleanValues = new ArrayList<>(); unoptimisedCleanValues = new ArrayList<>();
@ -82,6 +86,7 @@ public class CAEnchantmentRegistry {
byKeyMap.put(enchantment.getKey(), enchantment); byKeyMap.put(enchantment.getKey(), enchantment);
byNameMap.put(enchantment.getName(), enchantment); byNameMap.put(enchantment.getName(), enchantment);
nameSortedEnchantments.add(enchantment);
if(!enchantment.isGetOptimised()){ if(!enchantment.isGetOptimised()){
unoptimisedGetValues.add(enchantment); unoptimisedGetValues.add(enchantment);
@ -109,6 +114,8 @@ public class CAEnchantmentRegistry {
byKeyMap.remove(enchantment.getKey()); byKeyMap.remove(enchantment.getKey());
byNameMap.remove(enchantment.getName()); byNameMap.remove(enchantment.getName());
nameSortedEnchantments.remove(enchantment);
unoptimisedGetValues.remove(enchantment); unoptimisedGetValues.remove(enchantment);
unoptimisedCleanValues.remove(enchantment); unoptimisedCleanValues.remove(enchantment);
return true; return true;
@ -185,4 +192,11 @@ public class CAEnchantmentRegistry {
return optimisedGetOperators; return optimisedGetOperators;
} }
/**
* Get custom anvil enchantment sorted by name.
* @return An immutable sorted set of every registered enchantment sorted by name.
*/
public SortedSet<CAEnchantment> getNameSortedEnchantments() {
return Collections.unmodifiableSortedSet(nameSortedEnchantments);
}
} }

View file

@ -4,6 +4,7 @@ import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.pane.util.Pattern; import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantment;
import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.config.list.SettingGuiListConfigGui; import xyz.alexcrea.cuanvil.gui.config.list.SettingGuiListConfigGui;
import xyz.alexcrea.cuanvil.gui.config.settings.SettingGui; import xyz.alexcrea.cuanvil.gui.config.settings.SettingGui;
@ -37,7 +38,7 @@ public abstract class AbstractEnchantConfigGui<T extends SettingGui.SettingGuiFa
@Override @Override
protected Collection<CAEnchantment> getEveryDisplayableInstanceOfGeneric() { protected Collection<CAEnchantment> getEveryDisplayableInstanceOfGeneric() {
return GuiSharedConstant.SORTED_ENCHANTMENT_LIST; return CAEnchantmentRegistry.getInstance().getNameSortedEnchantments();
} }
@Override @Override

View file

@ -7,20 +7,13 @@ import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; 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 xyz.alexcrea.cuanvil.gui.config.MainConfigGui;
import java.util.*; import java.util.*;
public class GuiSharedConstant { public class GuiSharedConstant {
public static final List<CAEnchantment> SORTED_ENCHANTMENT_LIST; private GuiSharedConstant(){}
static {
SORTED_ENCHANTMENT_LIST = new ArrayList<>(CAEnchantmentRegistry.getInstance().values());
SORTED_ENCHANTMENT_LIST.sort(Comparator.comparing(ench -> ench.getKey().getKey()));
}
public static final Material SECONDARY_BACKGROUND_MATERIAL = Material.BLACK_STAINED_GLASS_PANE; 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); public static final GuiItem SECONDARY_BACKGROUND_ITEM = GuiGlobalItems.backgroundItem(GuiSharedConstant.SECONDARY_BACKGROUND_MATERIAL);