Работа с API
С API ProtocolBoard работать очень просто, на данный момент есть два враппера для работы: персональный борд, который удалится после выхода игрока-владельца борда, и обычный.
Начнем с создания обычного борда.
Здесь есть два варианта: создавать его билдером (предпочтительный вариант), и менее удобный - через класс Board. Ну что, начнем.
Создадим борд:
Код:
Board board = new Board("§e§lМой Scoreboard");
Единственный параметр конструктора класса Board - его тайтл, иными словами DisplayName - его первая строчка. Но мы будем рассматривать создания скорборда через билдер. Итак, создаем борд с DisplayName и линиями:
Код:
Board board = Board.getBuilder("§e§lМой Scoreboard")
.write(4, "")
.write(3, "Линия")
.write(2, "")
.write(1, "§ewww.mysite.ru")
.build();
Да, задумываться о повторяющихся линиях не нужно - API сделает это за нас. Но, если мы хотим менять значения линий, нам нужен апдейтер. Как его создать?
Код:
Board board = Board.getBuilder("§e§lМой Scoreboard")
.write(4, "")
.write(3, "Линия")
.write(2, "")
.write(1, "§ewww.mysite.ru")
.updater(40L, board -> {
board.setDisplay("§e§lНовое имя борда");
board.modifyLine(3, "Текущее время: §a" + Bukkit.getWorlds().get(0).getTime());
})
.build();
Этот простой код обновит заглавие нашего борда и третью линию - отобразит время первичного мира в тиках. Что значит 40L? Это интервал обновления в тиках. (1 тик = 20 секунд).
Наш скорборд готов - теперь мы можем отправить его игрокам:
player - переменная игрока. Если вы хотите отправить борд всем игрокам онлайн с помощью цикла/форича переберите всех игроков сервера и отправьте им борд.
Однако, новые игроки его не увидят. Поэтому, выносим board в статичную переменную, и при входе игрока шлем ему борд.
Создание персонального борда идентично этому, просто получайте билдер так:
Код:
Board.getPersonalBuilder("§e§lМой борд", player)
Надеюсь, все было понятно, хотя, конечно, не очень. Если у вас есть вопросы - задавайте их в теме.