Sort kits and perks by ID
Ensure kits and perks are displayed in alphabetical order by their ID. KitSelectorMenu.getFilteredKits now returns a sorted list (preserving search filtering) and PerkSelectorMenu uses a new getFilteredPerks() helper that returns perks sorted by id, improving menu ordering and consistency.
This commit is contained in:
@@ -191,16 +191,25 @@ class KitSelectorMenu(
|
||||
|
||||
private fun getFilteredKits(): List<Kit> {
|
||||
val allKits = plugin.kitManager.getRegisteredKits().toList()
|
||||
if (searchQuery.isEmpty()) return allKits
|
||||
|
||||
val result = if ( searchQuery.isEmpty() )
|
||||
{
|
||||
allKits
|
||||
}
|
||||
else
|
||||
{
|
||||
val q = searchQuery.lowercase()
|
||||
return allKits.filter { kit ->
|
||||
allKits.filter { kit ->
|
||||
kit.id.lowercase().contains( q ) ||
|
||||
net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer
|
||||
.plainText().serialize( kit.displayName ).lowercase().contains( q )
|
||||
}
|
||||
}
|
||||
|
||||
// Sortiert die Liste alphabetisch nach der Kit-ID
|
||||
return result.sortedBy { kit -> kit.id.lowercase() }
|
||||
}
|
||||
|
||||
private fun getKitAtSlot(slot: Int): Kit? {
|
||||
val absoluteIndex = currentPage * kitSlots + slot
|
||||
return getFilteredKits().getOrNull(absoluteIndex)
|
||||
|
||||
@@ -64,7 +64,7 @@ class PerkSelectorMenu(
|
||||
FILLER_ROW.forEach { inv.setItem(it, filler) }
|
||||
|
||||
// Perks in Reihen 1 + 2
|
||||
plugin.perkManager.getRegisteredPerks().forEachIndexed { index, perk ->
|
||||
getFilteredPerks().forEachIndexed { index, perk ->
|
||||
if (index in PERK_SLOTS) inv.setItem(index, buildPerkItem(perk))
|
||||
}
|
||||
|
||||
@@ -225,6 +225,12 @@ class PerkSelectorMenu(
|
||||
editMeta { it.displayName(Component.text(" ").decoration(TextDecoration.ITALIC, false)) }
|
||||
}
|
||||
|
||||
private fun getFilteredPerks(): List<Perk>
|
||||
{
|
||||
val kits = plugin.perkManager.getRegisteredPerks().toList()
|
||||
return kits.sortedBy { perk -> perk.id.lowercase() }
|
||||
}
|
||||
|
||||
private fun buildCloseItem() = ItemStack(Material.DARK_OAK_DOOR).apply {
|
||||
editMeta { meta ->
|
||||
meta.displayName(
|
||||
|
||||
Reference in New Issue
Block a user