From ea1f142571cb1d04699ed20e9f6b0311ea379c35 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 20 Feb 2025 00:49:31 -0500 Subject: [PATCH] Fix Packet + Compact Code --- .../PlayerDataRemoveInfoPacket.java | 2 +- .../npcs/client/gui/SubGuiPlayerData.java | 121 ++++++++---------- 2 files changed, 55 insertions(+), 68 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemoveInfoPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemoveInfoPacket.java index 38d4dab7a..50ab6148e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemoveInfoPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/playerdata/PlayerDataRemoveInfoPacket.java @@ -30,7 +30,7 @@ public final class PlayerDataRemoveInfoPacket extends AbstractPacket { @Override public Enum getType() { - return EnumRequestPacket.PlayerDataRemove; + return EnumRequestPacket.PlayerDataDelete; } @Override diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiPlayerData.java b/src/main/java/noppes/npcs/client/gui/SubGuiPlayerData.java index 12e50d7d6..38ac3c162 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiPlayerData.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiPlayerData.java @@ -801,105 +801,71 @@ public class SubGuiPlayerData extends SubGuiInterface implements IPlayerDataInfo if (button.id == 20) { viewMode = (viewMode == 0) ? 1 : 0; initGui(); + return; } // Delete button. - else if (button.id == 30) { + if (button.id == 30) { Integer selectedID = null; EnumPlayerData tabType = null; + // Quest tab if (currentTab == 10) { - if (viewMode == 0) { + if (viewMode == 0) { // Categorical mode if (questCatScroll.getSelected() == null) return; + // Use category + selection key. if (questActiveScroll.getSelected() != null) { - selectedID = questActiveData.get(questCatScroll.getSelected() + ": " + questActiveScroll.getSelected()); - if (selectedID != null) { - questActiveScroll.list.remove(questActiveScroll.selected); - questActiveData.remove(questCatScroll.getSelected() + ": " + questActiveScroll.getSelected()); - } - tabType = EnumPlayerData.Quest; + selectedID = removeSelection(questActiveScroll, questActiveData, questCatScroll.getSelected()); } else if (questFinishedScroll.getSelected() != null) { - selectedID = questFinishedData.get(questCatScroll.getSelected() + ": " + questFinishedScroll.getSelected()); - if (selectedID != null) { - questFinishedScroll.list.remove(questFinishedScroll.selected); - questFinishedData.remove(questCatScroll.getSelected() + ": " + questFinishedScroll.getSelected()); - } - tabType = EnumPlayerData.Quest; + selectedID = removeSelection(questFinishedScroll, questFinishedData, questCatScroll.getSelected()); } - } else { + } else { // Compact mode: key is just the selection. if (questActiveScroll.getSelected() != null) { - selectedID = questActiveData.get(questActiveScroll.getSelected()); - if (selectedID != null) { - questActiveScroll.list.remove(questActiveScroll.selected); - questActiveData.remove(questActiveScroll.getSelected()); - } - tabType = EnumPlayerData.Quest; + selectedID = removeSelection(questActiveScroll, questActiveData, null); } else if (questFinishedScroll.getSelected() != null) { - selectedID = questFinishedData.get(questFinishedScroll.getSelected()); - if (selectedID != null) { - questFinishedScroll.list.remove(questFinishedScroll.selected); - questFinishedData.remove(questFinishedScroll.getSelected()); - } - tabType = EnumPlayerData.Quest; + selectedID = removeSelection(questFinishedScroll, questFinishedData, null); } } - } else if (currentTab == 11) { + tabType = EnumPlayerData.Quest; + } + // Dialog tab + else if (currentTab == 11) { if (viewMode == 0) { if (dialogReadScroll.getSelected() != null && dialogCatScroll.getSelected() != null) { - selectedID = dialogReadData.get(dialogCatScroll.getSelected() + ": " + dialogReadScroll.getSelected()); - if (selectedID != null) { - dialogReadScroll.list.remove(dialogReadScroll.selected); - dialogReadData.remove(dialogCatScroll.getSelected() + ": " + dialogReadScroll.getSelected()); - } - tabType = EnumPlayerData.Dialog; + selectedID = removeSelection(dialogReadScroll, dialogReadData, dialogCatScroll.getSelected()); } } else { if (dialogCompactScroll.getSelected() != null) { - selectedID = dialogReadData.get(dialogCompactScroll.getSelected()); - if (selectedID != null) { - dialogCompactScroll.list.remove(dialogCompactScroll.selected); - dialogReadData.remove(dialogCompactScroll.getSelected()); - } - tabType = EnumPlayerData.Dialog; + selectedID = removeSelection(dialogCompactScroll, dialogReadData, null); } } - } else if (currentTab == 12) { + tabType = EnumPlayerData.Dialog; + } + // Transport tab + else if (currentTab == 12) { if (viewMode == 0) { if (transLocScroll.getSelected() != null && transCatScroll.getSelected() != null) { - selectedID = transLocData.get(transCatScroll.getSelected() + ": " + transLocScroll.getSelected()); - if (selectedID != null) { - transLocScroll.list.remove(transLocScroll.selected); - transLocData.remove(transCatScroll.getSelected() + ": " + transLocScroll.getSelected()); - } - tabType = EnumPlayerData.Transport; + selectedID = removeSelection(transLocScroll, transLocData, transCatScroll.getSelected()); } } else { if (transCompactScroll.getSelected() != null) { - selectedID = transLocData.get(transCompactScroll.getSelected()); - if (selectedID != null) { - transCompactScroll.list.remove(transCompactScroll.selected); - transLocData.remove(transCompactScroll.getSelected()); - } - tabType = EnumPlayerData.Transport; + selectedID = removeSelection(transCompactScroll, transLocData, null); } } - } else if (currentTab == 13) { + tabType = EnumPlayerData.Transport; + } + // Bank tab + else if (currentTab == 13) { if (singleScroll.getSelected() != null) { - selectedID = bankData.get(singleScroll.getSelected()); - if (selectedID != null) { - singleScroll.list.remove(singleScroll.selected); - bankData.remove(singleScroll.getSelected()); - } - tabType = EnumPlayerData.Bank; + selectedID = removeSelection(singleScroll, bankData, null); } - } else if (currentTab == 14) { + tabType = EnumPlayerData.Bank; + } + // Faction tab + else if (currentTab == 14) { if (singleScroll.getSelected() != null) { - selectedID = factionData.get(singleScroll.getSelected()); - if (selectedID != null) { - singleScroll.list.remove(singleScroll.selected); - factionData.remove(singleScroll.getSelected()); - } - tabType = EnumPlayerData.Factions; + selectedID = removeSelection(singleScroll, factionData, null); } + tabType = EnumPlayerData.Factions; } if (selectedID != null) { PacketClient.sendClient(new PlayerDataRemoveInfoPacket(playerName, tabType, selectedID)); @@ -907,6 +873,27 @@ public class SubGuiPlayerData extends SubGuiInterface implements IPlayerDataInfo } } + /** + * Helper method that removes the selected entry from a scroll and its backing data. + * + * @param scroll The GuiCustomScroll in question. + * @param data The backing map holding keys and IDs. + * @param prefix If non-null and non-empty, the key is built as "prefix: " + scroll.getSelected(); otherwise, + * scroll.getSelected() is used. + * @return The ID of the removed item, or null if none was found. + */ + private Integer removeSelection(GuiCustomScroll scroll, Map data, String prefix) { + if (scroll.getSelected() == null) return null; + String key = (prefix == null || prefix.isEmpty()) ? scroll.getSelected() : prefix + ": " + scroll.getSelected(); + Integer id = data.get(key); + if (id != null) { + scroll.list.remove(scroll.selected); + scroll.selected = -1; + data.remove(key); + } + return id; + } + //////////////////////////////////////////////////////////////////////////////// // Data Setting Methods (IPlayerDataInfo) ////////////////////////////////////////////////////////////////////////////////