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:
TDSTOS
2026-04-11 23:09:55 +02:00
parent 05957f59dc
commit cdef2315d0
2 changed files with 22 additions and 7 deletions

View File

@@ -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)

View File

@@ -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(