
Создание настраиваемых таблиц результатов в Minecraft с помо
"Потрясающая пакетная библиотека таблиц результатов для серверов Minecraft Paper/Spigot"
vytskalt/scoreboard-library, github.com
Строите кастомный сервер? Вам захочется контролировать таблицы результатов. scoreboard-library дает это без конфликтов с другими плагинами. Это Java-библиотека, работающая на уровне пакетов, поэтому она хорошо работает со всем на вашем сервере.
Что делает scoreboard-library
В основе своей это библиотека для серверов Paper и Spigot, позволяющая создавать и отображать таблицы результатов с помощью Java-кода. Но именно это отличает ее: вместо управления системой таблиц результатов напрямую через API Bukkit (что может конфликтовать с другими плагинами), она работает напрямую с сетевыми пакетами, получаемыми клиентами Minecraft.
Представьте это так: каждый изменение таблицы результатов - это сообщение, отправленное от сервера к клиенту. Большинство плагинов используют API таблиц результатов Bukkit, что может создавать瓶颈, если несколько плагинов пытаются обновлять данные одновременно. Эта библиотека обходит это и отправляет точные пакеты, чисто и эффективно.
Поддерживает все, от простых статических строк до сложных динамических таблиц результатов с отображением на основе команд, и работает на огромном диапазоне версий: от Paper 1.7.10 до 26.1.2. Если у вас старый сервер или новый, это будет работать.
Почему это важно для вашего сервера
Самая большая проблема с таблицами результатов на мультиплеерных серверах - конфликты плагинов. Вам, вероятно, это случалось: установите плагин магазина, плагин таблиц результатов, плагин экономики... и вдруг таблица результатов мигает или перестает работать, потому что два плагина борются за одни и те же данные. Эта библиотека полностью избегает этого, поскольку работает на уровне пакетов, то есть не зависит от других плагинов.
Другое реальное преимущество - производительность. Все полностью асинхронно, поэтому обновление таблиц результатов не блокирует основной поток сервера. Если вы работаете на плотном оборудовании (или просто хотите сохранить чистоту тактического цикла), это важно.
Для современных серверов (1.20.4+) вы получаете доступ к новым функциям, таким как отображение имен результатов и кастомное форматирование результатов, которые стандартный API Bukkit не предоставляет. И если вы используете Folia (экспериментальный параллелизированный сервер Paper), эта библиотека поддерживает его, хотя вам придется заботиться о безопасности потоков самостоятельно (об этом позже).
Еще есть встроенная поддержка ViaVersion. Вот в чем дело: если игроки на старых клиентах (1.12.2) подключаются к новому серверу через ViaVersion, библиотека автоматически оптимизирует отправляемые пакеты, чтобы максимизировать длину строки боковой панели. Это тот уровень детализации, который показывает реальное понимание администратора сервера.
Настройка
Установка зависит от того, используете ли вы Gradle или Maven. Вот подход Gradle (современный стандарт для большинства разработчиков плагинов):
repositories {
mavenCentral()
}
dependencies {
implementation("net.megavex:scoreboard-library-api:2.7.4")
runtimeOnly("net.megavex:scoreboard-library-implementation:2.7.4")
}
Если вы нацеливаетесь на старые версии Paper без родной поддержки Adventure, добавьте это:
implementation("net.kyori:adventure-platform-bukkit:4.4.1")
Убедитесь, что вы затенили и переместили эти зависимости в ваш окончательный JAR (плагин Shadow является стандартным выбором).
Для пользователей Maven это похоже, но в формате XML (в репозитории есть документация для этого). Как только вы добавите это в свою сборочную конфигурацию, инициализация проста:
ScoreboardLibrary scoreboardLibrary;
try {
scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(plugin);
} catch (NoPacketAdapterAvailableException e) {
scoreboardLibrary = new NoopScoreboardLibrary();
}
При завершении плагина вызовите scoreboardLibrary.close(), чтобы очистить данные. Это базовая настройка.
Функции, которые делают ее полезной
Боковые панели - это главное. Вы можете иметь до 42 символов в строке на старых клиентах (в зависимости от форматирования), и практически нет ограничений на новых версиях. Это значит, что вы можете отображать осмысленную информацию, а не отрезанные фрагменты.

Команды - это еще одна мощная функция. Вы можете показывать разные свойства таблиц результатов разным игрокам. Один игрок видит один отображение команды, другой видит что-то другое на основе вашей логики. Это действительно полезно для вещей, таких как серверы фракций или RPG-настройки, где разные игроки видят разную информацию.
Библиотека также автоматически обрабатывает транслируемые компоненты. Если ваш сервер использует встроенную систему перевода Minecraft, эта библиотека переведет текст таблиц результатов для каждого игрока на основе настроек языка клиента. Она даже автоматически обновляется, если они изменят язык в настройках игры.
И поскольку она использует библиотеку Adventure, вы получаете полную поддержку цвета и форматирования. Строительство на основе компонентов означает, что вы не ограничены старыми кодами цвета.
Динамические обновления полностью асинхронны, поэтому вы можете безопасно обновлять таблицы результатов из любой части вашего кода без беспокойства о проблемах безопасности потоков в основном потоке.
Где это становится сложным
Первое: если вы запускаете Folia, объекты Sidebar и TeamManager не являются потоко-безопасными. Вам нужно добавить синхронизацию, чтобы обеспечить доступ к ним только из одного потока. Это не тупик, но это то, вокруг чего вам нужно построить архитектуру.
Второе: совместимость версий широка, но не универсальна. Библиотека поддерживает 1.7.10-26.1.2, но если вы на не поддерживаемой версии, получаете fallback бездействия (не ошибка, но таблицы результатов не отображаются). Поэтому поддерживать актуальность списка поддерживаемых версий, проверяя последние релизы.
Третье (и это сначала поймало меня): вам нужно правильно обрабатывать затенение и перемещение зависимостей. Если вы не затените и не переместите зависимости правильно, вы столкнетесь с конфликтами, если другой плагин также зависит от Adventure или библиотеки. Это стандартная практика разработки плагинов, но если вы новичок в разработке плагинов, это шаг, который легко пропустить.
Также помните вызывать sidebar.close() при завершении работы с боковой панелью. Если забудете, вы оставите обработчики пакетов открытыми, что может привести к утечкам памяти на долго работающих серверах.
Стоит ли использовать это?
Если вы строите плагин, который нуждается в настраиваемых таблицах результатов и хотите избежать хаоса конфликтующих API, это действительно один из лучших вариантов. Подход на уровне пакетов умный, дизайн асинхронный, а набор функций полный.
Если ваш сервер прост и вам нужна только одна таблица результатов, которая никогда не конфликтует с чем-либо другим, вам может хватить встроенной системы Bukkit. Но как только вы начнете добавлять другие плагины, вы пожалеете, что не использовали это.
Еще одно: проект активно поддерживается (последний релиз - 2.7.4 на апрель 2026), и сообщество Discord реагирует. Если вы столкнетесь с проблемой, есть реальная поддержка.
Для администраторов серверов, стремящихся настроить опыт игроков, или для разработчиков плагинов, строящих следующее поколение плагинов для серверов Paper, это стоит времени настройки. И если вам нужна помощь в управлении конфигурацией сервера или данными игроков, на minecraft.how есть полезные инструменты, такие как создатель белого списка Minecraft и поиск блоков, которые дополняют кастомные настройки сервера.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


