BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / utilities / GroupUtils.java
GroupUtils.java
Raw
package com.lifeknight.relaymcbungeemain.utilities;

import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
import com.lifeknight.relayutils.player.Group;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.score.Team;

import java.util.*;

public class GroupUtils {
    public static List<Team> getGroupTeams(SmartPlayer smartPlayer) {
        Collection<ProxiedPlayer> players = smartPlayer.getServerInfo().getPlayers();

        Map<Group, Team> groupToTeam = getGroupToTeam();

        for (ProxiedPlayer player : players) {
            SmartPlayer smartPlayer1 = SmartPlayer.getSmartPlayer(player);
            if (smartPlayer1.isAndHasNick()) {
                groupToTeam.get(smartPlayer1.getNick().getGroup()).addPlayer(player.getName());
                groupToTeam.get(smartPlayer1.getNick().getGroup()).addPlayer(player.getDisplayName());
            } else {
                groupToTeam.get(smartPlayer1.getHighestGroup()).addPlayer(player.getName());
            }
        }

        return new ArrayList<>(groupToTeam.values());
    }

    public static Map<Group, Team> getGroupToTeam() {
        Map<Group, Team> groupToTeam = new HashMap<>();

        for (Group value : Group.values()) {
            groupToTeam.put(value, getTeamForGroup(value));
        }

        return groupToTeam;
    }

    public static Team getTeamForGroup(Group group) {
        Team team = new Team(group.getGroupName());
        team.setColor(group.getColor().getColor().getRGB());
        team.setPrefix(group.getPrefix());
        team.setCollisionRule("NEVER");
        return team;
    }

    public static int maxPlayersForPartyOwner(Group group, int tier) {
        if (group == null) {
            return 4;
        }

        return switch (group) {
            case DEFAULT -> 4;
            case TIERI -> 6;
            case TIERII -> 8;
            case TIERIII -> 10;
            case CHAMPION -> new int[]{4, 8, 16, 24, 32}[Math.min(tier, 4)];
            case YOUTUBE, TWITCH -> 32;
            default -> Integer.MAX_VALUE;
        };

    }
}