Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 25 авг 2018.

  1. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем привет. Нужна помощь по созданию скорбордов. Суть проблемы в том, что один скорборд заменяет другой и в итоге эти два скорборда не могут работать вместе. Слышал, что можно создавать цели в одном скорборде, но это лишает возможности создавать индивидуальную статистику игроков или что-то в этом роде. Как можно сделать отображение двух или более скорбордов без замены одного на других.
     
  2. Mr Hosting
  3. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Бакит апи говно, пакеты юзай
     
  4. Автор темы
    Lisenochek

    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() + " ";
    }
    
    Попробовал. В итоге префикс возле ника игрока не появляется. Если добавить в команду каждого игрока всех игроков, то префиксы появятся, но они будут неправильными. В моем случае админ стал игроком, а игрок админом.
     
  5. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Неужели никто не может мне помочь?
     
  6. the3dester

    the3dester Новичок Пользователь

    Баллы:
    6
    Используй ProtocolLib и PacketWrappers от dmulloy9, проще работать с пакетами будет.
     
  7. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Да, я уже пытался сегодня с протоколом попробовать. Тоже самое. Вообще не понимаю, почему и как..
     
  8. the3dester

    the3dester Новичок Пользователь

    Баллы:
    6
  9. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
  10. Sneyzi

    Sneyzi Активный участник Пользователь

    Баллы:
    66
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Никак. Игрок может получить только один борд. Через пакеты можно передать тиму отдельно, на этом все.
     
  12. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ему вроде как и надо разные тимы отправлять
     
  13. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
            Collection<? extends Player> players = Bukkit.getOnlinePlayers();
            for (Player p : players) {
                setTeam(p, players);
            }
    Суть понятна думаю. Подробнее в моем рпгчате.
     
  14. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Я и добавлял к разным тимам всех игроков, а в итоге префиксы были перепутаны.
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  16. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Иногда может появится эта ошибка:
    [​IMG]

    Как пакет может вызвать исключение у банжи?
     
  17. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ну там ж написано что команда уже существует.
     
  18. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Так скорборд через пакеты. Что можно тогда предпринять?
     
    Последнее редактирование: 31 авг 2018
  19. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Называю тиму ником игрока.
     
  20. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Банжа кеширует все скорборды, у тебя названия тим дублируются
     
  21. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Каким макаром они могут дублироваться? Я пытался воспроизвести баг, но все тщетно. Игрок просто заходит на сервер и появляется это исключение и лишь иногда.
     

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