From e4b273803fbe24c1cdfca8a0c11728beb62860c6 Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 1 Mar 2024 20:00:09 -0500 Subject: [PATCH] Party Leave - Lang Update - Leave without being locked - Unique Leave Packet --- .../java/noppes/npcs/PacketHandlerServer.java | 33 ++++++++++--------- .../client/gui/player/inventory/GuiParty.java | 6 +++- .../npcs/constants/EnumPacketServer.java | 2 +- .../npcs/controllers/PartyController.java | 33 +++++++++++++++++++ .../assets/customnpcs/lang/en_US.lang | 5 +++ 5 files changed, 61 insertions(+), 18 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 58789ce70..8fff5336b 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -136,26 +136,27 @@ public class PacketHandlerServer{ Party party = PartyController.Instance().getParty(playerData.partyUUID); if (!party.getIsLocked()) { boolean successful = party.removePlayer(kickPlayer); - if (kickPlayer != player) { - sendPartyData(player); - if(successful){ - for(String name : party.getPlayerNames()){ - 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) kickPlayer, EnumPacketClient.PARTY_MESSAGE, "party.kickYouAlert", ""); - Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.kickYouChat", "!"); - } - } else { - sendInviteData((EntityPlayerMP) kickPlayer); + sendPartyData(player); + if(successful){ + PartyController.Instance().sendKickMessages(party, kickPlayer); } } } } - } else if (type == EnumPacketServer.SavePartyData) { + } else if (type == EnumPacketServer.LeavePlayer) { + EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(Server.readString(buffer)); + if (leavingPlayer != null) { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + if (playerData.partyUUID != null) { + Party party = PartyController.Instance().getParty(playerData.partyUUID); + boolean successful = party.removePlayer(leavingPlayer); + sendInviteData((EntityPlayerMP) leavingPlayer); + if(successful){ + PartyController.Instance().sendLeavingMessages(party, leavingPlayer); + } + } + } + } else if (type == EnumPacketServer.SavePartyData) { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); if (playerData.partyUUID != null) { Party party = PartyController.Instance().getParty(playerData.partyUUID); 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 23793250a..eee544ab1 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 @@ -183,16 +183,20 @@ public class GuiParty extends GuiCNPCInventory implements ITextfieldListener, IT if (flag) { switch (i) { case 0: + // Leader New Player Client.sendData(EnumPacketServer.SetPartyLeader, this.selectedPlayer); break; case 1: + // Kick Other Player Client.sendData(EnumPacketServer.KickPlayer, this.selectedPlayer); break; case 2: + // Disband Party Client.sendData(EnumPacketServer.DisbandParty); break; case 3: - Client.sendData(EnumPacketServer.KickPlayer, this.player.getCommandSenderName()); + // Leave Party + Client.sendData(EnumPacketServer.LeavePlayer, this.player.getCommandSenderName()); break; } receivedData = false; diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index d13ee51a6..237b48b1f 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -109,7 +109,7 @@ public enum EnumPacketServer { CustomGuiButton,CustomGuiScrollClick,CustomGuiClose,CustomGuiUnfocused, - SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, PartyInvite, GetPartyInviteList, AcceptInvite, + SavePartyData, CreateParty, GetPartyData, DisbandParty, KickPlayer, LeavePlayer, PartyInvite, GetPartyInviteList, AcceptInvite, IgnoreInvite, SetPartyLeader, SetPartyQuest, ServerUpdateSkinOverlays; diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 78540c4dd..06c1f5e44 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -1,7 +1,10 @@ package noppes.npcs.controllers; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.Server; +import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; @@ -44,4 +47,34 @@ public class PartyController { this.parties.remove(partyUUID); } } + + public void sendKickMessages(Party party, EntityPlayer kickPlayer){ + if(kickPlayer == null || party == null) + return; + + for(String name : party.getPlayerNames()){ + 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) kickPlayer, EnumPacketClient.PARTY_MESSAGE, "party.kickYouAlert", ""); + Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.kickYouChat", "!"); + } + + public void sendLeavingMessages(Party party, EntityPlayer leavingPlayer){ + if(leavingPlayer == null || party == null) + return; + + for(String name : party.getPlayerNames()){ + 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) leavingPlayer, EnumPacketClient.PARTY_MESSAGE, "party.leaveYouAlert", ""); + Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.CHAT, "\u00A7a", "party.leaveYouChat", "!"); + } } diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 22169069e..4e2ee4271 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -149,6 +149,11 @@ party.kickYouChat=You've been kicked from the party party.kickYouAlert=Kicked from Party party.kickOtherChat=has been kicked from the party party.kickOtherAlert=Kicked Player +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