diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java b/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java index ad6133cd..d2456d1d 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java @@ -6,15 +6,12 @@ import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; public class FriendRequest extends Request { - private PlayerData creator, target; + private final PlayerData target; public FriendRequest(PlayerData creator, PlayerData target) { - this.creator = creator; - this.target = target; - } + super(creator); - public PlayerData getCreator() { - return creator; + this.target = target; } public PlayerData getTarget() { @@ -27,10 +24,10 @@ public class FriendRequest extends Request { } public void accept() { - creator.addFriend(target.getUniqueId()); - target.addFriend(creator.getUniqueId()); - creator.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", target.getPlayer().getName())); - target.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", creator.getPlayer().getName())); + getCreator().addFriend(target.getUniqueId()); + target.addFriend(getCreator().getUniqueId()); + getCreator().getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", target.getPlayer().getName())); + target.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", getCreator().getPlayer().getName())); MMOCore.plugin.requestManager.unregisterRequest(getUniqueId()); } } \ No newline at end of file diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java b/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java index 04552e65..d5a42f2a 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java @@ -45,6 +45,10 @@ public class Party { return invites.containsKey(player.getUniqueId()) ? invites.get(player.getUniqueId()) : 0; } + public void removeLastInvite(Player player) { + invites.remove(player.getUniqueId()); + } + public void removeMember(PlayerData data) { if (data.isOnline() && data.getPlayer().getOpenInventory() != null && data.getPlayer().getOpenInventory().getTopInventory().getHolder() instanceof PartyViewInventory) InventoryManager.PARTY_CREATION.newInventory(data).open(); @@ -83,10 +87,10 @@ public class Party { ((PluginInventory) member.getPlayer().getOpenInventory().getTopInventory().getHolder()).open(); } - public void sendPartyInvite(Player inviter, PlayerData target) { + public void sendPartyInvite(PlayerData inviter, PlayerData target) { invites.put(target.getUniqueId(), System.currentTimeMillis()); - Request request = new PartyInvite(this, target); - new ConfigMessage("party-invite").addPlaceholders("player", inviter.getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer()); + Request request = new PartyInvite(this, inviter, target); + new ConfigMessage("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer()); MMOCore.plugin.requestManager.registerRequest(request); } @@ -122,7 +126,7 @@ public class Party { refreshAttributes(); refreshAttributes(player); } - + public void forEach(Consumer action) { members.forEach(action); } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/PartyInvite.java b/src/main/java/net/Indyuce/mmocore/api/player/social/PartyInvite.java index f8bdb3e2..20def810 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/PartyInvite.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/PartyInvite.java @@ -5,10 +5,12 @@ import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; public class PartyInvite extends Request { - private PlayerData target; - private Party party; + private final PlayerData target; + private final Party party; + + public PartyInvite(Party party, PlayerData creator, PlayerData target) { + super(creator); - public PartyInvite(Party party, PlayerData target) { this.party = party; this.target = target; } @@ -26,6 +28,7 @@ public class PartyInvite extends Request { } public void accept() { + party.removeLastInvite(getCreator().getPlayer()); party.getMembers().forEach(member -> member.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("party-joined-other", "player", target.getPlayer().getName()))); target.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("party-joined", "owner", party.getOwner().getPlayer().getName())); party.addMember(target); diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/Request.java b/src/main/java/net/Indyuce/mmocore/api/player/social/Request.java index cf4de3b5..54cd1bd7 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/Request.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/Request.java @@ -2,9 +2,20 @@ package net.Indyuce.mmocore.api.player.social; import java.util.UUID; +import net.Indyuce.mmocore.api.player.PlayerData; + public abstract class Request { - private UUID uuid = UUID.randomUUID(); - private long date = System.currentTimeMillis(); + private final UUID uuid = UUID.randomUUID(); + private final long date = System.currentTimeMillis(); + private final PlayerData creator; + + public Request(PlayerData creator) { + this.creator = creator; + } + + public PlayerData getCreator() { + return creator; + } public UUID getUniqueId() { return uuid; diff --git a/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java b/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java index 928f2b18..d196f3e9 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java +++ b/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java @@ -164,7 +164,7 @@ public class EditablePartyView extends EditableInventory { return; } - playerData.getParty().sendPartyInvite(player, targetData); + playerData.getParty().sendPartyInvite(playerData, targetData); player.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("sent-party-invite", "player", target.getName())); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); open();