From 3e9c40c160d1243c8e5f54c2becdee67445f25bf Mon Sep 17 00:00:00 2001 From: rockyhawk64 Date: Thu, 11 Apr 2024 01:13:32 +1000 Subject: [PATCH] 3.20.1.0 #3 --- .../floodgatecp/OpenFloodgateGUI.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/me/rockyhawk/commandpanels/floodgatecp/OpenFloodgateGUI.java b/src/me/rockyhawk/commandpanels/floodgatecp/OpenFloodgateGUI.java index 8301b08..7af4b5f 100644 --- a/src/me/rockyhawk/commandpanels/floodgatecp/OpenFloodgateGUI.java +++ b/src/me/rockyhawk/commandpanels/floodgatecp/OpenFloodgateGUI.java @@ -18,7 +18,9 @@ import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.player.FloodgatePlayer; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; public class OpenFloodgateGUI implements Listener { private CommandPanels plugin; @@ -71,13 +73,12 @@ public class OpenFloodgateGUI implements Listener { } private List processButtons(ConfigurationSection fgPanel, SimpleForm.Builder form, Panel panel, Player p) { - List commandsOrder = new ArrayList<>(); - fgPanel.getKeys(false).stream() + return fgPanel.getKeys(false).stream() .filter(key -> key.matches("\\d+")) - .sorted() - .forEach(key -> { + .sorted(Comparator.comparingInt(Integer::parseInt)) // Ensure numeric sorting + .map(key -> { ConfigurationSection buttonConfig = fgPanel.getConfigurationSection(key); - if (buttonConfig == null) return; + if (buttonConfig == null) return null; String buttonContent = plugin.tex.placeholders(panel, null, p, buttonConfig.getString("text")); if (!buttonConfig.contains("icon")) { @@ -87,9 +88,10 @@ public class OpenFloodgateGUI implements Listener { String texture = plugin.tex.placeholders(panel, null, p, buttonConfig.getString("icon.texture")); form.button(buttonContent, type, texture); } - commandsOrder.add(key); - }); - return commandsOrder; + return key; + }) + .filter(key -> key != null) + .collect(Collectors.toList()); } private void createAndSendCustomForm(PanelOpenedEvent e, FloodgatePlayer fgPlayer, ConfigurationSection fgPanel) {