diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index dfb8a39a9..67164a93a 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -451,18 +451,7 @@ public class PacketHandler { // Trader Packets REQUEST_PACKET.registerPacket(new TraderMarketSavePacket()); - // Party Packets - REQUEST_PACKET.registerPacket(new PartySavePacket()); - REQUEST_PACKET.registerPacket(new PartyInfoPacket()); - REQUEST_PACKET.registerPacket(new PartyDisbandPacket()); - REQUEST_PACKET.registerPacket(new PartySetLeaderPacket()); - REQUEST_PACKET.registerPacket(new PartyKickPacket()); - REQUEST_PACKET.registerPacket(new PartyLeavePacket()); - REQUEST_PACKET.registerPacket(new PartySetQuestPacket()); - REQUEST_PACKET.registerPacket(new PartyInvitePacket()); - REQUEST_PACKET.registerPacket(new PartyAcceptInvitePacket()); - REQUEST_PACKET.registerPacket(new PartyIgnoreInvitePacket()); - REQUEST_PACKET.registerPacket(new PartyLogToServerPacket()); + // Party Packets moved to player channel // Animation Packets REQUEST_PACKET.registerPacket(new AnimationsGetPacket()); @@ -604,6 +593,19 @@ public class PacketHandler { PLAYER_PACKET.registerPacket(new ProfileChangePacket()); PLAYER_PACKET.registerPacket(new ProfileGetPacket()); PLAYER_PACKET.registerPacket(new ProfileGetInfoPacket()); + + // Party Packets + PLAYER_PACKET.registerPacket(new PartySavePacket()); + PLAYER_PACKET.registerPacket(new PartyInfoPacket()); + PLAYER_PACKET.registerPacket(new PartyDisbandPacket()); + PLAYER_PACKET.registerPacket(new PartySetLeaderPacket()); + PLAYER_PACKET.registerPacket(new PartyKickPacket()); + PLAYER_PACKET.registerPacket(new PartyLeavePacket()); + PLAYER_PACKET.registerPacket(new PartySetQuestPacket()); + PLAYER_PACKET.registerPacket(new PartyInvitePacket()); + PLAYER_PACKET.registerPacket(new PartyAcceptInvitePacket()); + PLAYER_PACKET.registerPacket(new PartyIgnoreInvitePacket()); + PLAYER_PACKET.registerPacket(new PartyLogToServerPacket()); } public void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java index 8a0c3ee75..6e4b4f00e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyAcceptInvitePacket.java @@ -9,6 +9,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.data.PlayerData; import java.io.IOException; @@ -33,10 +34,9 @@ public final class PartyAcceptInvitePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -45,9 +45,16 @@ public final class PartyAcceptInvitePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - PlayerData playerData = PlayerData.get(player); String uuidString = ByteBufUtils.readString(in); - if (uuidString != null) { + if (!ConfigMain.PartiesEnabled) { + return; + } + + if (uuidString != null && !uuidString.isEmpty()) { + PlayerData playerData = PlayerData.get(player); + if (playerData.partyUUID != null) { + return; + } UUID uuid = UUID.fromString(uuidString); playerData.acceptInvite(uuid); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java index 2fdc81257..8f23d000c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyDisbandPacket.java @@ -11,7 +11,9 @@ import kamkeel.npcs.network.packets.data.large.PartyDataPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; +import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; import java.io.IOException; @@ -30,10 +32,9 @@ public final class PartyDisbandPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -42,9 +43,17 @@ public final class PartyDisbandPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { PlayerData playerData = PlayerData.get(player); - if (playerData.partyUUID != null) { - PartyController.Instance().disbandParty(playerData.partyUUID); + if (!ConfigMain.PartiesEnabled || playerData.partyUUID == null) { + return; } + + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party)) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + + PartyController.Instance().disbandParty(playerData.partyUUID); NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("Disband", true); PartyDataPacket.sendPartyData((EntityPlayerMP) player, compound); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java index 30dbd1fa2..9d610df6f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyIgnoreInvitePacket.java @@ -9,6 +9,7 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.data.PlayerData; import java.io.IOException; @@ -33,10 +34,9 @@ public final class PartyIgnoreInvitePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -45,9 +45,13 @@ public final class PartyIgnoreInvitePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - PlayerData playerData = PlayerData.get(player); String uuidString = ByteBufUtils.readString(in); - if (uuidString != null) { + if (!ConfigMain.PartiesEnabled) { + return; + } + + if (uuidString != null && !uuidString.isEmpty()) { + PlayerData playerData = PlayerData.get(player); UUID uuid = UUID.fromString(uuidString); playerData.ignoreInvite(uuid); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java index 2b7def180..ad4988d41 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInfoPacket.java @@ -45,10 +45,9 @@ public final class PartyInfoPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -62,6 +61,11 @@ public final class PartyInfoPacket extends AbstractPacket { return; if (isNew) { + PlayerData playerData = PlayerData.get(player); + if (playerData.partyUUID != null) { + sendPartyData((EntityPlayerMP) player); + return; + } Party party = PartyController.Instance().createParty(); party.addPlayer(player); party.setLeader(player); diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java index 297e8757d..3710aaf88 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyInvitePacket.java @@ -16,6 +16,7 @@ import net.minecraft.nbt.NBTTagList; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; @@ -45,10 +46,9 @@ public final class PartyInvitePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -57,19 +57,31 @@ public final class PartyInvitePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); + String invitedName = ByteBufUtils.readString(in); + if (!ConfigMain.PartiesEnabled) { + return; + } + + PlayerData senderData = PlayerData.get(player); + if (senderData.partyUUID == null || invitedName == null || invitedName.isEmpty()) { + return; + } + + Party party = PartyController.Instance().getParty(senderData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party) || party.getIsLocked()) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + + EntityPlayer invitedPlayer = NoppesUtilServer.getPlayerByName(invitedName); if (invitedPlayer != null) { - PlayerData senderData = PlayerData.get(player); PlayerData invitedData = PlayerData.get(invitedPlayer); - if (senderData.partyUUID != null && invitedData.partyUUID == null) { - Party party = PartyController.Instance().getParty(senderData.partyUUID); - if (!party.getIsLocked()) { - PartyEvent.PartyInviteEvent partyEvent = new PartyEvent.PartyInviteEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(invitedPlayer)); - EventHooks.onPartyInvite(party, partyEvent); - if (!partyEvent.isCancelled()) { - invitedData.inviteToParty(party); - sendInviteData((EntityPlayerMP) invitedPlayer); - } + if (invitedData.partyUUID == null) { + PartyEvent.PartyInviteEvent partyEvent = new PartyEvent.PartyInviteEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(invitedPlayer)); + EventHooks.onPartyInvite(party, partyEvent); + if (!partyEvent.isCancelled()) { + invitedData.inviteToParty(party); + sendInviteData((EntityPlayerMP) invitedPlayer); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java index c81e87a4d..bd43cac8f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyKickPacket.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.data.Party; @@ -44,10 +45,9 @@ public final class PartyKickPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -57,40 +57,54 @@ public final class PartyKickPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { String kickPlayerName = ByteBufUtils.readString(in); + if (!ConfigMain.PartiesEnabled) { + return; + } + + PlayerData senderData = PlayerData.get(player); + if (senderData.partyUUID == null) { + return; + } + + Party party = PartyController.Instance().getParty(senderData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party) || party.getIsLocked()) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + EntityPlayer kickPlayer = NoppesUtilServer.getPlayerByName(kickPlayerName); - PlayerData playerData = null; - UUID playerUUID = null; - if (kickPlayer != null) { - playerData = PlayerData.get(player); - } else { + UUID targetUUID = kickPlayer != null ? kickPlayer.getUniqueID() : null; + if (targetUUID == null && kickPlayerName != null && !kickPlayerName.isEmpty()) { String uuid = PlayerDataController.Instance.getPlayerUUIDFromName(kickPlayerName); if (!uuid.isEmpty()) { - playerData = PlayerDataController.Instance.getPlayerDataCache(uuid); - playerUUID = UUID.fromString(uuid); + targetUUID = UUID.fromString(uuid); } } - if (playerData != null) { - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (!party.getIsLocked()) { - PartyEvent.PartyKickEvent partyEvent = new PartyEvent.PartyKickEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(kickPlayer)); - EventHooks.onPartyKick(party, partyEvent); - if (!partyEvent.isCancelled()) { - boolean successful = party.removePlayer(kickPlayer); - if (!successful) - successful = party.removePlayer(playerUUID); + if (kickPlayer == null && targetUUID == null) { + return; + } - if (successful) { - if (kickPlayer != null) { - sendInviteData((EntityPlayerMP) kickPlayer); - } - PartyController.Instance().pingPartyUpdate(party); - PartyController.Instance().sendKickMessages(party, kickPlayer, kickPlayerName); - } - } - } + PartyEvent.PartyKickEvent partyEvent = new PartyEvent.PartyKickEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(kickPlayer)); + EventHooks.onPartyKick(party, partyEvent); + if (partyEvent.isCancelled()) { + return; + } + + boolean successful = false; + if (kickPlayer != null) { + successful = party.removePlayer(kickPlayer); + } + if (!successful && targetUUID != null) { + successful = party.removePlayer(targetUUID); + } + + if (successful) { + if (kickPlayer != null) { + sendInviteData((EntityPlayerMP) kickPlayer); } + PartyController.Instance().pingPartyUpdate(party); + PartyController.Instance().sendKickMessages(party, kickPlayer, kickPlayerName); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java index d4e0ccf52..d4c0b15a1 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLeavePacket.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.EventHooks; import noppes.npcs.NoppesUtilServer; import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; @@ -42,10 +43,9 @@ public final class PartyLeavePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -54,20 +54,37 @@ public final class PartyLeavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in)); - if (leavingPlayer != null) { - PlayerData playerData = PlayerData.get(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - boolean successful = party.removePlayer(leavingPlayer); - if (successful) { - PartyEvent.PartyLeaveEvent partyEvent = new PartyEvent.PartyLeaveEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(leavingPlayer)); - EventHooks.onPartyLeave(party, partyEvent); - sendInviteData((EntityPlayerMP) leavingPlayer); - PartyController.Instance().pingPartyUpdate(party); - PartyController.Instance().sendLeavingMessages(party, leavingPlayer); - } - } + String leavingName = ByteBufUtils.readString(in); + if (!ConfigMain.PartiesEnabled) { + return; + } + + EntityPlayer leavingPlayer = NoppesUtilServer.getPlayerByName(leavingName); + if (leavingPlayer == null) { + return; + } + + if (!leavingPlayer.getUniqueID().equals(player.getUniqueID()) && !NoppesUtilServer.isOp(player)) { + return; + } + + PlayerData playerData = PlayerData.get(player); + if (playerData.partyUUID == null) { + return; + } + + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (party == null) { + return; + } + + boolean successful = party.removePlayer(leavingPlayer); + if (successful) { + PartyEvent.PartyLeaveEvent partyEvent = new PartyEvent.PartyLeaveEvent(party, party.getQuest(), (IPlayer) NpcAPI.Instance().getIEntity(leavingPlayer)); + EventHooks.onPartyLeave(party, partyEvent); + sendInviteData((EntityPlayerMP) leavingPlayer); + PartyController.Instance().pingPartyUpdate(party); + PartyController.Instance().sendLeavingMessages(party, leavingPlayer); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java index bcf2c0bc3..45679068e 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyLogToServerPacket.java @@ -11,6 +11,8 @@ import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.config.ConfigMain; +import noppes.npcs.controllers.data.PlayerData; import java.io.IOException; @@ -33,7 +35,7 @@ public final class PartyLogToServerPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } @SideOnly(Side.CLIENT) @@ -44,6 +46,15 @@ public final class PartyLogToServerPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if (!ConfigMain.PartiesEnabled) { + return; + } + + PlayerData playerData = PlayerData.get(player); + if (playerData.partyUUID == null) { + return; + } + NoppesUtilPlayer.updatePartyQuestLogData(in, (EntityPlayerMP) player); } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartyPacketUtil.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyPacketUtil.java new file mode 100644 index 000000000..95d341d49 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartyPacketUtil.java @@ -0,0 +1,20 @@ +package kamkeel.npcs.network.packets.request.party; + +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.controllers.data.Party; + +final class PartyPacketUtil { + private PartyPacketUtil() { + } + + static boolean canManageParty(EntityPlayer player, Party party) { + if (party == null) { + return false; + } + if (NoppesUtilServer.isOp(player)) { + return true; + } + return party.getLeaderUUID() != null && party.getLeaderUUID().equals(player.getUniqueID()); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java index 94f97a980..7589a4e23 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySavePacket.java @@ -9,7 +9,9 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; @@ -35,10 +37,9 @@ public final class PartySavePacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -47,11 +48,23 @@ public final class PartySavePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - PlayerData playerData = PlayerData.get(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - party.readClientNBT(ByteBufUtils.readNBT(in)); - PartyController.Instance().pingPartyUpdate(party); + NBTTagCompound data = ByteBufUtils.readNBT(in); + if (!ConfigMain.PartiesEnabled) { + return; } + + PlayerData playerData = PlayerData.get(player); + if (playerData.partyUUID == null) { + return; + } + + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party)) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + + party.readClientNBT(data); + PartyController.Instance().pingPartyUpdate(party); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java index 006d6dfcc..e5492fa8d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetLeaderPacket.java @@ -9,7 +9,9 @@ import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.NoppesUtilServer; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; @@ -35,10 +37,9 @@ public final class PartySetLeaderPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -47,13 +48,29 @@ public final class PartySetLeaderPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + String newLeaderName = ByteBufUtils.readString(in); + if (!ConfigMain.PartiesEnabled) { + return; + } + PlayerData playerData = PlayerData.get(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (!party.getIsLocked()) { - party.setLeader(NoppesUtilServer.getPlayerByName(ByteBufUtils.readString(in))); - PartyController.Instance().pingPartyUpdate(party); - } + if (playerData.partyUUID == null) { + return; + } + + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party) || party.getIsLocked()) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + + EntityPlayer newLeader = NoppesUtilServer.getPlayerByName(newLeaderName); + if (newLeader == null || !party.hasPlayer(newLeader)) { + return; + } + + if (party.setLeader(newLeader)) { + PartyController.Instance().pingPartyUpdate(party); } } } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java index b17bc9e96..1adc651ee 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/party/PartySetQuestPacket.java @@ -8,7 +8,9 @@ import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumRequestPacket; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import noppes.npcs.EventHooks; +import noppes.npcs.config.ConfigMain; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.QuestController; import noppes.npcs.controllers.data.Party; @@ -38,10 +40,9 @@ public final class PartySetQuestPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.REQUEST_PACKET; + return PacketHandler.PLAYER_PACKET; } - @SideOnly(Side.CLIENT) @Override public void sendData(ByteBuf out) throws IOException { @@ -50,35 +51,40 @@ public final class PartySetQuestPacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + int questID = in.readInt(); + if (!ConfigMain.PartiesEnabled) { + return; + } + PlayerData playerData = PlayerData.get(player); - if (playerData.partyUUID != null) { - Party party = PartyController.Instance().getParty(playerData.partyUUID); - if (party != null) { - if (party.getLeaderUUID().equals(player.getUniqueID())) { - int questID = in.readInt(); - party.setQuest(null); - if (questID != -1) { - Quest foundQuest = QuestController.Instance.quests.get(questID); - if (foundQuest != null) { - if (foundQuest.partyOptions.allowParty) { - if (party.validateQuest(questID, true)) { - PartyEvent.PartyQuestSetEvent partyEvent = new PartyEvent.PartyQuestSetEvent(party, foundQuest); - EventHooks.onPartyQuestSet(party, partyEvent); - if (!partyEvent.isCancelled()) { - if (playerData.questData.hasActiveQuest(questID)) { - QuestData questdata = new QuestData(foundQuest); - playerData.questData.activeQuests.put(questID, questdata); - } - party.setQuest(foundQuest); - PartyController.Instance().sendQuestChat(party, "party.setChat", " ", foundQuest.title); - } - } - } + if (playerData.partyUUID == null) { + return; + } + + Party party = PartyController.Instance().getParty(playerData.partyUUID); + if (!PartyPacketUtil.canManageParty(player, party)) { + PartyInfoPacket.sendPartyData((EntityPlayerMP) player); + return; + } + + party.setQuest(null); + if (questID != -1) { + Quest foundQuest = QuestController.Instance.quests.get(questID); + if (foundQuest != null && foundQuest.partyOptions.allowParty) { + if (party.validateQuest(questID, true)) { + PartyEvent.PartyQuestSetEvent partyEvent = new PartyEvent.PartyQuestSetEvent(party, foundQuest); + EventHooks.onPartyQuestSet(party, partyEvent); + if (!partyEvent.isCancelled()) { + if (playerData.questData.hasActiveQuest(questID)) { + QuestData questdata = new QuestData(foundQuest); + playerData.questData.activeQuests.put(questID, questdata); } + party.setQuest(foundQuest); + PartyController.Instance().sendQuestChat(party, "party.setChat", " ", foundQuest.title); } - PartyController.Instance().pingPartyUpdate(party); } } } + PartyController.Instance().pingPartyUpdate(party); } }