Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Префиксы в табе не показываются всем

Статус
Закрыто для дальнейших ответов.

HogeltBellai

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
HogeltBellai
Код:
package ru.hogeltbellai.network.api.scoreboard;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;

import ru.hogeltbellai.network.api.group.GroupAPI;
import ru.hogeltbellai.network.api.player.BalanceAPI;
import ru.hogeltbellai.network.main.MainNetwork;

import org.bukkit.scheduler.BukkitRunnable;

import java.util.HashMap;
import java.util.Map;

@SuppressWarnings("unused")
public class ScoreboardAPI {

    private GroupAPI groupAPI;
    
    private static Map<Player, Scoreboard> playerScoreboards = new HashMap<>();
    private static Map<Player, Map<Integer, Team>> playerScoreboardTeams = new HashMap<>();
    
    public ScoreboardAPI(GroupAPI groupAPI) {
        this.groupAPI = groupAPI;
    }

    public void createScoreboard(Player p, String title) {
        Scoreboard scoreboard = p.getScoreboard();
        Objective objective = scoreboard.registerNewObjective("main", "dummy");
        objective.setDisplaySlot(DisplaySlot.SIDEBAR);
        objective.setDisplayName(title);
        playerScoreboards.put(p, scoreboard);
        playerScoreboardTeams.put(p, new HashMap<>());
    }

    public void setLine(Player player, String text, int score) {
        Scoreboard scoreboard = playerScoreboards.get(player);
        if(scoreboard == null) return;
        Objective objective = scoreboard.getObjective("main");
        if(objective == null) return;

        Team team = getTeamForScore(player, score);
        if (team != null) {
            team.unregister();
        }

        team = scoreboard.registerNewTeam("line" + score);
        team.addEntry(generateEntry(score));
        team.setPrefix(text);

        objective.getScore(generateEntry(score)).setScore(score);

        playerScoreboardTeams.get(player).put(score, team);
    }

    private Team getTeamForScore(Player player, int score) {
        if (!playerScoreboardTeams.containsKey(player)) {
            return null;
        }

        return playerScoreboardTeams.get(player).get(score);
    }

    private String generateEntry(int score) {
        return ChatColor.values()[score].toString();
    }

    public void removeScoreboard(Player player) {
        Scoreboard scoreboard = playerScoreboards.get(player);
        if (scoreboard != null) {
            player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
            playerScoreboards.remove(player);
            playerScoreboardTeams.remove(player);
        }
    }
    
    public void setPlayerPrefix(Player player, String prefix) {
        Scoreboard scoreboard = player.getScoreboard();
        Team team = scoreboard.getTeam(player.getName());

        if (team == null) {
            team = scoreboard.registerNewTeam(player.getName());
        }

        team.setPrefix(prefix + " ");
        team.addEntry(player.getName());
    }

    public void setPrefixesForAllPlayers() {
        for (Player p : Bukkit.getOnlinePlayers()) {
            String groupName = groupAPI.getPlayerGroup(p.getUniqueId().toString());
            if (groupName != null) {
                String prefix = groupAPI.getPrefixPlayerGroup(p.getUniqueId().toString());
                if (prefix != null) {
                    setPlayerPrefix(p, prefix);
                }
            }
        }
    }
}

Нужно сделать так что бы префиксы были видны всем, ибо щас они для каждого отдельно видны
 
Тебе требуется единый скорборд для всех игроков. Создай его один раз через Bukkit.getScoreboardManager().getNewScoreboard().
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх