mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-01 20:15:28 +02:00
More work on parties
This commit is contained in:
@@ -3,10 +3,53 @@ package com.gmail.nossr50.util.player;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.datatypes.party.PartyFeature;
|
||||
import com.gmail.nossr50.datatypes.party.PartyMember;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PartyUtils {
|
||||
public static boolean isAllowed(@NotNull Party party, @NotNull PartyFeature partyFeature) {
|
||||
return party.getPartyExperienceManager().getLevel() >= Config.getInstance().getPartyFeatureUnlockLevel(partyFeature);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a formatted list of party members based on the perspective of a target player
|
||||
* Players that are hidden will be shown as offline (formatted in the same way)
|
||||
* Party leader will be formatted a specific way as well
|
||||
*
|
||||
* @param party target party
|
||||
* @param partyMember this player will be used for POV styling
|
||||
* @return formatted list of party members from the POV of a player
|
||||
*/
|
||||
public String createMembersList(@NotNull Party party, @NotNull PartyMember partyMember) {
|
||||
StringBuilder memberList = new StringBuilder();
|
||||
List<String> coloredNames = new ArrayList<>();
|
||||
|
||||
//Party member should always be online when this code is executed
|
||||
Player player = partyMember.getOfflinePlayer().getPlayer();
|
||||
|
||||
if(player == null)
|
||||
return "NULL PARTY LIST";
|
||||
|
||||
for(PartyMember otherPartyMember : party.getPartyMembers()) {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(otherPartyMember.getUniqueId());
|
||||
|
||||
if(offlinePlayer.isOnline() && player.canSee((Player) offlinePlayer)) {
|
||||
ChatColor onlineColor = party.getPartyMemberManager().get.getUniqueId().equals(otherPartyMember.getUniqueId()) ? ChatColor.GOLD : ChatColor.GREEN;
|
||||
coloredNames.add(onlineColor + offlinePlayer.getName());
|
||||
} else {
|
||||
coloredNames.add(ChatColor.DARK_GRAY + members.get(playerUUID));
|
||||
}
|
||||
}
|
||||
|
||||
buildChatMessage(memberList, coloredNames.toArray(new String[0]));
|
||||
return memberList.toString();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user