From 32dc6e86e21b92e1c2dda35326735efa1e1281ca Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 1 Mar 2024 20:51:25 -0500 Subject: [PATCH] Better Party Notifications - Disband, Invite, Kick, Leader, etc --- .../java/noppes/npcs/PacketHandlerServer.java | 10 ++- .../client/gui/player/inventory/GuiParty.java | 2 +- .../npcs/controllers/PartyController.java | 61 +++++++++++++++++-- .../npcs/controllers/data/PlayerData.java | 8 ++- .../assets/customnpcs/lang/en_US.lang | 16 ++--- 5 files changed, 77 insertions(+), 20 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 8fff5336b..b71407580 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -136,8 +136,9 @@ public class PacketHandlerServer{ Party party = PartyController.Instance().getParty(playerData.partyUUID); if (!party.getIsLocked()) { boolean successful = party.removePlayer(kickPlayer); - sendPartyData(player); if(successful){ + sendInviteData((EntityPlayerMP) kickPlayer); + PartyController.Instance().pingPartyUpdate(party); PartyController.Instance().sendKickMessages(party, kickPlayer); } } @@ -150,8 +151,9 @@ public class PacketHandlerServer{ if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); boolean successful = party.removePlayer(leavingPlayer); - sendInviteData((EntityPlayerMP) leavingPlayer); if(successful){ + sendInviteData((EntityPlayerMP) leavingPlayer); + PartyController.Instance().pingPartyUpdate(party); PartyController.Instance().sendLeavingMessages(party, leavingPlayer); } } @@ -168,7 +170,8 @@ public class PacketHandlerServer{ Party party = PartyController.Instance().getParty(playerData.partyUUID); if (!party.getIsLocked()) { party.setLeader(NoppesUtilServer.getPlayerByName(Server.readString(buffer))); - Server.sendData(player, EnumPacketClient.GUI_DATA, party.writeToNBT()); + PartyController.Instance().pingPartyUpdate(party); + // Server.sendData(player, EnumPacketClient.GUI_DATA, party.writeToNBT()); } } } else if (type == EnumPacketServer.PartyInvite) { @@ -180,6 +183,7 @@ public class PacketHandlerServer{ Party party = PartyController.Instance().getParty(senderData.partyUUID); if (!party.getIsLocked()) { invitedData.inviteToParty(party); + sendInviteData((EntityPlayerMP) invitedPlayer); } } } 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 eee544ab1..87821e9dd 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 @@ -126,7 +126,7 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, IT this.addButton(disbandButton); } - //toggle friendly fire + // toggle friendly fire // GuiNpcLabel friendlyFireLabel = new GuiNpcLabel(321, StatCollector.translateToLocal("party.friendlyFire") + ":", guiLeft + xSize / 2 + 10, guiTop + ySize / 2 + 5); diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 06c1f5e44..8d1b02783 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -2,14 +2,22 @@ package noppes.npcs.controllers; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; import noppes.npcs.NoppesUtilServer; import noppes.npcs.Server; import noppes.npcs.constants.EnumPacketClient; +import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.Quest; import java.util.HashMap; import java.util.UUID; +import java.util.Vector; + +import static noppes.npcs.PacketHandlerServer.sendInviteData; public class PartyController { private static PartyController Instance; @@ -41,8 +49,21 @@ public class PartyController { if (party != null) { for (UUID uuid: party.getPlayerUUIDs()) { EntityPlayer player = NoppesUtilServer.getPlayer(uuid); - PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); - playerData.partyUUID = null; + PlayerData playerData; + if(player != null){ + playerData = PlayerDataController.Instance.getPlayerData(player); + } + else { + playerData = PlayerDataController.Instance.getPlayerDataCache(uuid.toString()); + } + if(playerData != null){ + playerData.partyUUID = null; + if(player != null){ + sendInviteData((EntityPlayerMP) player); + Server.sendData((EntityPlayerMP) player, EnumPacketClient.PARTY_MESSAGE, "party.disbandAlert"); + Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "\u00A7c", "party.disbandMessage", "!"); + } + } } this.parties.remove(partyUUID); } @@ -56,11 +77,11 @@ public class PartyController { EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.kickOtherAlert", kickPlayer.getCommandSenderName()); - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7c", kickPlayer.getCommandSenderName(), " \u00A7e", "party.kickOtherChat", "!"); + Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", kickPlayer.getCommandSenderName(), " \u00A74", "party.kickOtherChat", "!"); } } Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.PARTY_MESSAGE, "party.kickYouAlert", ""); - Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.kickYouChat", "!"); + Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A74", "party.kickYouChat", "!"); } public void sendLeavingMessages(Party party, EntityPlayer leavingPlayer){ @@ -71,10 +92,38 @@ public class PartyController { EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName()); - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7a", leavingPlayer.getCommandSenderName(), " \u00A7e", "party.leaveOtherChat", "!"); + Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!"); } } Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.PARTY_MESSAGE, "party.leaveYouAlert", ""); - Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.CHAT, "\u00A7a", "party.leaveYouChat", "!"); + Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.leaveYouChat", "!"); + } + + public void pingPartyUpdate(Party party){ + if(party == null) + return; + + NBTTagCompound compound = party.writeToNBT(); + for(String name : party.getPlayerNames()){ + EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); + if(playerMP != null){ + PlayerData playerData = PlayerDataController.Instance.getPlayerData(playerMP); + if(playerData != null){ + if (party.getQuest() != null) { + Quest quest = (Quest) party.getQuest(); + Vector vector = quest.questInterface.getQuestLogStatus(playerMP); + NBTTagList list = new NBTTagList(); + for (String s : vector) { + list.appendTag(new NBTTagString(s)); + } + compound.setTag("QuestProgress", list); + if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isCompleted(playerData)) { + compound.setString("QuestCompleteWith", quest.completerNpc); + } + } + Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.GUI_DATA, compound); + } + } + } } } diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index 6990cc219..2ae4a4912 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -217,9 +217,11 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { if (uuid != null) { this.partyInvites.remove(uuid); Party party = PartyController.Instance().getParty(uuid); - if (!party.getIsLocked()) { - party.addPlayer(player); - PacketHandlerServer.sendPartyData((EntityPlayerMP) player); + if(party != null){ + if (!party.getIsLocked()) { + party.addPlayer(player); + PartyController.Instance().pingPartyUpdate(party); + } } } } diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 4e2ee4271..44db1a097 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -143,6 +143,13 @@ party.dropQuest=Drop Quest party.friendlyFire=Friendly Fire party.ignore=Ignore party.invite=Invite + +party.kick=Kick +party.kickConfirm=Are you sure you want to kick this player? +party.leader=Leader +party.leaderConfirm=Are you sure you want to make this player the party leader? +party.leaveParty=Leave Party +party.leaveConfirm=Are you sure you want to leave the party? party.inviteAlert=Invited to Party party.inviteChat=You've been invited to a party by party.kickYouChat=You've been kicked from the party @@ -153,13 +160,8 @@ party.leaveYouChat=You've left the party party.leaveYouAlert=Left Party party.leaveOtherChat=has left the party party.leaveOtherAlert=Leaving Player - -party.kick=Kick -party.kickConfirm=Are you sure you want to kick this player? -party.leader=Leader -party.leaderConfirm=Are you sure you want to make this player the party leader? -party.leaveParty=Leave Party -party.leaveConfirm=Are you sure you want to leave the party? +party.disbandAlert=Party Disbanded +party.disbandMessage=The party has been disbanded party.makeLeader=Make Leader party.maxPartySize=Max Party Size party.options=Party Options