Помогите 2 и более Scoreboard.

Lisenochek

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Lisenochek
Всем привет. Нужна помощь по созданию скорбордов. Суть проблемы в том, что один скорборд заменяет другой и в итоге эти два скорборда не могут работать вместе. Слышал, что можно создавать цели в одном скорборде, но это лишает возможности создавать индивидуальную статистику игроков или что-то в этом роде. Как можно сделать отображение двух или более скорбордов без замены одного на других.
 
Код:
private ScoreboardTeam team;
private PacketPlayOutScoreboardTeam teams;
private EntityPlayer entityPlayer;

public ScoreboardClass(Player player) {
    this.entityPlayer = ((CraftPlayer) player).getHandle();

    String group = getGroup(player);

    team = new ScoreboardTeam(entityPlayer.getScoreboard(), player.getName());
    team.setPrefix(Utils.stripColor(group + "&r ").substring(0, 16));
    team.setNameTagVisibility(ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS);
    teams = new PacketPlayOutScoreboardTeam(team, 0);
}

public void send() {
    entityPlayer.playerConnection.sendPacket(teams);
    entityPlayer.playerConnection.sendPacket(new PacketPlayOutScoreboardTeam(team, Arrays.asList(entityPlayer.getName()), 3));
}

public String getGroup(Player player) {
    PermissionUser user = PermissionsEx.getUser(player);
    for (String s : user.getGroupNames()) if (Config.IGNORE_GROUPS.getStringList().contains(s)) return "&f";
    return user.getPrefix() + " ";
}

Попробовал. В итоге префикс возле ника игрока не появляется. Если добавить в команду каждого игрока всех игроков, то префиксы появятся, но они будут неправильными. В моем случае админ стал игроком, а игрок админом.
 
Код:
private ScoreboardTeam team;
private PacketPlayOutScoreboardTeam teams;
private EntityPlayer entityPlayer;

public ScoreboardClass(Player player) {
    this.entityPlayer = ((CraftPlayer) player).getHandle();

    String group = getGroup(player);

    team = new ScoreboardTeam(entityPlayer.getScoreboard(), player.getName());
    team.setPrefix(Utils.stripColor(group + "&r ").substring(0, 16));
    team.setNameTagVisibility(ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS);
    teams = new PacketPlayOutScoreboardTeam(team, 0);
}

public void send() {
    entityPlayer.playerConnection.sendPacket(teams);
    entityPlayer.playerConnection.sendPacket(new PacketPlayOutScoreboardTeam(team, Arrays.asList(entityPlayer.getName()), 3));
}

public String getGroup(Player player) {
    PermissionUser user = PermissionsEx.getUser(player);
    for (String s : user.getGroupNames()) if (Config.IGNORE_GROUPS.getStringList().contains(s)) return "&f";
    return user.getPrefix() + " ";
}

Попробовал. В итоге префикс возле ника игрока не появляется. Если добавить в команду каждого игрока всех игроков, то префиксы появятся, но они будут неправильными. В моем случае админ стал игроком, а игрок админом.
Используй ProtocolLib и PacketWrappers от dmulloy9, проще работать с пакетами будет.
 
Используй ProtocolLib и PacketWrappers от dmulloy9, проще работать с пакетами будет.
Да, я уже пытался сегодня с протоколом попробовать. Тоже самое. Вообще не понимаю, почему и как..
 
Никак. Игрок может получить только один борд. Через пакеты можно передать тиму отдельно, на этом все.
 
Код:
        Collection<? extends Player> players = Bukkit.getOnlinePlayers();
        for (Player p : players) {
            setTeam(p, players);
        }
Суть понятна думаю. Подробнее в моем рпгчате.
Я и добавлял к разным тимам всех игроков, а в итоге префиксы были перепутаны.
 
Иногда может появится эта ошибка:
EybKrtM1FAI.jpg


Как пакет может вызвать исключение у банжи?
 
Банжа кеширует все скорборды, у тебя названия тим дублируются
Каким макаром они могут дублироваться? Я пытался воспроизвести баг, но все тщетно. Игрок просто заходит на сервер и появляется это исключение и лишь иногда.
 
А если в плагине для банжи юзнуть метод очистки скорборда игрока, то поможет ли это в решении моей проблемы?
 
Назад
Верх