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

Помогите [1.12.2] Spigot/Bukkit Сортировка в табе

Тема в разделе "Разработка плагинов для новичков", создана пользователем reglaps, 3 фев 2021.

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

    reglaps Новичок

    Баллы:
    16
    Доброго времени суток. :lol:
    Потребовалась необходимость добавить сортировку игроков в табе по уровню. Изначально просто регистрировал команды и запихивал игроков в них, но эта практика себя изжила, так как у каждого игрока свой собственный скорбоард, и каждый игрок видел только свою команду.
    После чего попытался отказаться от команд, но не нашёл ни одного способа быстро сортировать игроков в табе, в том числе через пакеты.
    Собственно вопрос вот в чём:
    Мне нужно отсортировать игроков в табе, добавить префиксы и суффиксы для имён, и держать для каждого игрока уникальную таблицу с правой стороны экрана. (DisplaySlot.SIDEBAR)
    Какие варианты я придумал:
    • PacketPlayOutPlayerInfo
      • Достоинства:
        • Отсутсвие команд
      • Недостатки:
        • Сортировать придётся через пакет вручную
        • Требуется после каждого изменения обновлять данные для всех игроков
        • Поскольку я использую стандартную версию CraftBukkit, мне придётся каждый раз пользовать рефлексию, так как список в пакете приватный.
    • Заранее регистрировать все возможные команды для каждого нового скорбоарда
      • Достоинства:
        • Высокая скорость работы
        • Автоматическая сортировка по имени команды
      • Недостатки:
        • Общее количество доступных команд неизвестно заранее и будет периодически меняться, увеличиваться и уменьшаться
        • Команд оочень много (уровнень [x штук] * статус [x штук] * фракция [2 штуки])... По предварительным подсчётам кол-во команд будет коле.баться от 460 до 1200. Придётся это домножать на количество игроков?! (скорборд у каждого свой) :cry:
    • Держать общий скорбоард на всех игроков и посылать на клиент пакеты, чтобы добиться уникальности данных в боковой панели (SIDEBAR)
      • Достоинства:
        • Высокая скорость работы
        • Приемлемое количество команд
        • Автоматическая сортировка по имени команды
      • Недостатки:
        • Не нашёл информации по этому поводу, этот вариант может оказаться попросту невозможным.
        • Лишняя бомбардировка клиентов пакетами, как мне кажется
    • Комбинированный подход. Используя пункт 2 создавать для каждого скорбоарда столько же комманд, сколько есть уровней, остальную инфу добавлять используя Player#setPlayerListName
      • Достоинства:
        • Высокая скорость работы
        • Приемлемое количество команд
      • Недостатки:
        • Сортировка будет происходить только по уровню игрока
        • Код будет похож на франкенштейна (а за это меня по головке не погладят)
    Всё осложняется тем, что использовать готовые библиотеки не могу, так как не имею возможности добавлять зависимости(
    Пожалуйста, подскажите, как мне лучше поступить в подобной ситуации, примеры кода приветствуются, возможно кто-то знает плагин с открытым исходным кодом, где подобное реализовано. Заранее спасибо!
     
    Последнее редактирование: 3 фев 2021
  2. Хостинг MineCraft
    <

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