added creator to request object

party invite cooldown resets when invitation accepted
This commit is contained in:
Indyuce 2019-08-31 15:02:43 +02:00
parent 07bf1c78ae
commit 93b62e8055
5 changed files with 35 additions and 20 deletions

View File

@ -6,15 +6,12 @@ import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
public class FriendRequest extends Request { public class FriendRequest extends Request {
private PlayerData creator, target; private final PlayerData target;
public FriendRequest(PlayerData creator, PlayerData target) { public FriendRequest(PlayerData creator, PlayerData target) {
this.creator = creator; super(creator);
this.target = target;
}
public PlayerData getCreator() { this.target = target;
return creator;
} }
public PlayerData getTarget() { public PlayerData getTarget() {
@ -27,10 +24,10 @@ public class FriendRequest extends Request {
} }
public void accept() { public void accept() {
creator.addFriend(target.getUniqueId()); getCreator().addFriend(target.getUniqueId());
target.addFriend(creator.getUniqueId()); target.addFriend(getCreator().getUniqueId());
creator.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", target.getPlayer().getName())); getCreator().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())); target.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", getCreator().getPlayer().getName()));
MMOCore.plugin.requestManager.unregisterRequest(getUniqueId()); MMOCore.plugin.requestManager.unregisterRequest(getUniqueId());
} }
} }

View File

@ -45,6 +45,10 @@ public class Party {
return invites.containsKey(player.getUniqueId()) ? invites.get(player.getUniqueId()) : 0; return invites.containsKey(player.getUniqueId()) ? invites.get(player.getUniqueId()) : 0;
} }
public void removeLastInvite(Player player) {
invites.remove(player.getUniqueId());
}
public void removeMember(PlayerData data) { public void removeMember(PlayerData data) {
if (data.isOnline() && data.getPlayer().getOpenInventory() != null && data.getPlayer().getOpenInventory().getTopInventory().getHolder() instanceof PartyViewInventory) if (data.isOnline() && data.getPlayer().getOpenInventory() != null && data.getPlayer().getOpenInventory().getTopInventory().getHolder() instanceof PartyViewInventory)
InventoryManager.PARTY_CREATION.newInventory(data).open(); InventoryManager.PARTY_CREATION.newInventory(data).open();
@ -83,10 +87,10 @@ public class Party {
((PluginInventory) member.getPlayer().getOpenInventory().getTopInventory().getHolder()).open(); ((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()); invites.put(target.getUniqueId(), System.currentTimeMillis());
Request request = new PartyInvite(this, target); Request request = new PartyInvite(this, inviter, target);
new ConfigMessage("party-invite").addPlaceholders("player", inviter.getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer()); new ConfigMessage("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer());
MMOCore.plugin.requestManager.registerRequest(request); MMOCore.plugin.requestManager.registerRequest(request);
} }
@ -122,7 +126,7 @@ public class Party {
refreshAttributes(); refreshAttributes();
refreshAttributes(player); refreshAttributes(player);
} }
public void forEach(Consumer<? super PlayerData> action) { public void forEach(Consumer<? super PlayerData> action) {
members.forEach(action); members.forEach(action);
} }

View File

@ -5,10 +5,12 @@ import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.manager.InventoryManager;
public class PartyInvite extends Request { public class PartyInvite extends Request {
private PlayerData target; private final PlayerData target;
private Party party; private final Party party;
public PartyInvite(Party party, PlayerData creator, PlayerData target) {
super(creator);
public PartyInvite(Party party, PlayerData target) {
this.party = party; this.party = party;
this.target = target; this.target = target;
} }
@ -26,6 +28,7 @@ public class PartyInvite extends Request {
} }
public void accept() { 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()))); 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())); target.getPlayer().sendMessage(MMOCore.plugin.configManager.getSimpleMessage("party-joined", "owner", party.getOwner().getPlayer().getName()));
party.addMember(target); party.addMember(target);

View File

@ -2,9 +2,20 @@ package net.Indyuce.mmocore.api.player.social;
import java.util.UUID; import java.util.UUID;
import net.Indyuce.mmocore.api.player.PlayerData;
public abstract class Request { public abstract class Request {
private UUID uuid = UUID.randomUUID(); private final UUID uuid = UUID.randomUUID();
private long date = System.currentTimeMillis(); 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() { public UUID getUniqueId() {
return uuid; return uuid;

View File

@ -164,7 +164,7 @@ public class EditablePartyView extends EditableInventory {
return; return;
} }
playerData.getParty().sendPartyInvite(player, targetData); playerData.getParty().sendPartyInvite(playerData, targetData);
player.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("sent-party-invite", "player", target.getName())); player.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("sent-party-invite", "player", target.getName()));
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open(); open();