From cdd3f2282696f01c56dac90d6e2db9064baa5bf0 Mon Sep 17 00:00:00 2001 From: luisc Date: Thu, 11 Jan 2024 18:24:33 -0600 Subject: [PATCH] Added functionality to the disband party button --- .../java/noppes/npcs/PacketHandlerServer.java | 9 +++++++++ .../client/gui/player/inventory/GuiParty.java | 8 ++++++++ .../noppes/npcs/constants/EnumPacketServer.java | 2 +- .../noppes/npcs/controllers/PartyController.java | 15 +++++++++++++-- .../java/noppes/npcs/controllers/data/Party.java | 4 ++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 403eefa1e..d163b7a7a 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -131,6 +131,15 @@ public class PacketHandlerServer{ } } Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + } else if (type == EnumPacketServer.DisbandParty) { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + PartyController.Instance().disbandParty(playerData.partyUUID); + } + + NBTTagCompound compound = new NBTTagCompound(); + compound.setBoolean("Disband", true); + Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } if(type.needsNpc && npc == null){ diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java index c1e76f79a..ce7dcfd30 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiParty.java @@ -16,6 +16,7 @@ import org.lwjgl.opengl.GL11; import tconstruct.client.tabs.InventoryTabCustomNpc; import tconstruct.client.tabs.TabRegistry; +import java.util.ArrayList; import java.util.UUID; public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, ITopButtonListener,ICustomScrollListener, IGuiData { @@ -78,6 +79,7 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, IT playerScroll.setSize(150, 160); playerScroll.guiLeft = guiLeft + 5; playerScroll.guiTop = guiTop + 5; + playerScroll.setList(new ArrayList<>(party.getPlayerNames())); this.addScroll(playerScroll); //set leader button @@ -126,6 +128,10 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, IT Client.sendData(EnumPacketServer.CreateParty); receivedData = false; break; + case 335: + Client.sendData(EnumPacketServer.DisbandParty); + receivedData = false; + break; } initGui(); if (guibutton.id == 100 && activeTab != 0) { @@ -193,6 +199,8 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, IT party = ClientCacheHandler.party; } party.readFromNBT(compound); + } else if (compound.hasKey("Disband")) { + ClientCacheHandler.party = null; } initGui(); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 11c4420e7..fb776be91 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -95,7 +95,7 @@ public enum EnumPacketServer { CustomGuiButton,CustomGuiScrollClick,CustomGuiClose,CustomGuiUnfocused, - CreateParty, GetPartyData, + CreateParty, GetPartyData, DisbandParty, ServerUpdateSkinOverlays; diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 42c68989e..78540c4dd 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -1,6 +1,9 @@ package noppes.npcs.controllers; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.data.Party; +import noppes.npcs.controllers.data.PlayerData; import java.util.HashMap; import java.util.UUID; @@ -30,7 +33,15 @@ public class PartyController { return this.parties.get(partyUUID); } - public void deleteParty(UUID partyUUID) { - this.parties.remove(partyUUID); + public void disbandParty(UUID partyUUID) { + Party party = this.parties.get(partyUUID); + if (party != null) { + for (UUID uuid: party.getPlayerUUIDs()) { + EntityPlayer player = NoppesUtilServer.getPlayer(uuid); + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + playerData.partyUUID = null; + } + this.parties.remove(partyUUID); + } } } diff --git a/src/main/java/noppes/npcs/controllers/data/Party.java b/src/main/java/noppes/npcs/controllers/data/Party.java index 0c3728ed6..3f9c95d75 100644 --- a/src/main/java/noppes/npcs/controllers/data/Party.java +++ b/src/main/java/noppes/npcs/controllers/data/Party.java @@ -152,6 +152,10 @@ public class Party { return this.partyMembers.values(); } + public Collection getPlayerUUIDs() { + return this.partyMembers.keySet(); + } + // To Be Called DURING Invite, Leave, Quest Switch, Leader Switch, etc. public static boolean validateQuest(int questID, Collection players){ IQuest quest = QuestController.Instance.get(questID);