From 3beaf6881508ab984f8179a775767309eae2f52a Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 15 Feb 2026 21:44:36 -0500 Subject: [PATCH] Update GuiNPCAbilities.java --- .../client/gui/advanced/GuiNPCAbilities.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java index e927b088f..2e89d3d49 100644 --- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java +++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java @@ -491,8 +491,31 @@ public class GuiNPCAbilities extends GuiNPCInterface2 implements IScrollData, IC for (int i = 0; i < npcSlots.size(); i++) { list.add(getAbilityListEntry(i)); } + + // Sort: enabled first, then numerically by slot index + Collections.sort(list, new Comparator() { + @Override + public int compare(String a, String b) { + boolean aEnabled = a.startsWith("\u00A7a"); + boolean bEnabled = b.startsWith("\u00A7a"); + if (aEnabled != bEnabled) return aEnabled ? -1 : 1; + return extractIndex(a) - extractIndex(b); + } + + private int extractIndex(String entry) { + String stripped = entry.replaceAll("\u00A7.", "").trim(); + int dotIndex = stripped.indexOf("."); + if (dotIndex > 0) { + try { + return Integer.parseInt(stripped.substring(0, dotIndex).replaceAll("[^0-9]", "")); + } catch (NumberFormatException e) { } + } + return Integer.MAX_VALUE; + } + }); + if (npcAbilitiesScroll != null) { - npcAbilitiesScroll.setList(list); + npcAbilitiesScroll.setUnsortedList(list); } }