mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-03 21:15:28 +02:00
Fix parties unintentionally becoming leader-less Fixes #3771
This commit is contained in:
@@ -93,7 +93,7 @@ public class Party {
|
||||
public List<Player> getVisibleMembers(Player player) {
|
||||
ArrayList<Player> visibleMembers = new ArrayList<>();
|
||||
|
||||
for (Player p : onlineMembers) {
|
||||
for (Player p : getOnlineMembers()) {
|
||||
if (player.canSee(p)) {
|
||||
visibleMembers.add(p);
|
||||
}
|
||||
@@ -116,11 +116,11 @@ public class Party {
|
||||
}
|
||||
|
||||
public boolean addOnlineMember(Player player) {
|
||||
return onlineMembers.add(player);
|
||||
return getOnlineMembers().add(player);
|
||||
}
|
||||
|
||||
public boolean removeOnlineMember(Player player) {
|
||||
return onlineMembers.remove(player);
|
||||
return getOnlineMembers().remove(player);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@@ -273,10 +273,25 @@ public final class PartyManager {
|
||||
requireNonNull(player, "player cannot be null!");
|
||||
requireNonNull(party, "party cannot be null!");
|
||||
|
||||
LinkedHashMap<UUID, String> members = party.getMembers();
|
||||
String playerName = player.getName();
|
||||
final LinkedHashMap<UUID, String> members = party.getMembers();
|
||||
final String playerName = player.getName();
|
||||
|
||||
members.remove(player.getUniqueId());
|
||||
if (party.getLeader().getUniqueId().equals(player.getUniqueId())) {
|
||||
members.remove(player.getUniqueId());
|
||||
if (!members.isEmpty()) {
|
||||
for (Entry<UUID, String> entry : members.entrySet()) {
|
||||
final UUID memberUUID = entry.getKey();
|
||||
final String memberName = entry.getValue();
|
||||
if (!memberUUID.equals(party.getLeader().getUniqueId())) {
|
||||
party.setLeader(new PartyLeader(memberUUID, memberName));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
members.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
if (player.isOnline()) {
|
||||
party.getOnlineMembers().remove(player.getPlayer());
|
||||
@@ -285,11 +300,6 @@ public final class PartyManager {
|
||||
if (members.isEmpty()) {
|
||||
parties.remove(party);
|
||||
} else {
|
||||
// If the leaving player was the party leader, appoint a new leader from the party members
|
||||
if (party.getLeader().getUniqueId().equals(player.getUniqueId())) {
|
||||
setPartyLeader(members.keySet().iterator().next(), party);
|
||||
}
|
||||
|
||||
informPartyMembersQuit(party, playerName);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user