- Поддерживаемые версии
- 1.21
- 26
- Ядра и Прокси
- Bukkit
- Spigot
- Paper
- Минимальная версия Java
- 25
hResourcepackUtils
Автоматическая отправка ресурспака и динамические иконки через PlaceholderAPI
Resource Pack Sender • Dynamic Icons • Text Fallbacks • Client Statuses • MiniMessage • PlaceholderAPI
Автоматическая отправка ресурспака и динамические иконки через PlaceholderAPI
Resource Pack Sender • Dynamic Icons • Text Fallbacks • Client Statuses • MiniMessage • PlaceholderAPI
hResourcepackUtils — это утилита для отправки серверного ресурспака и безопасного использования кастомных символов в интерфейсе сервера.
Главная особенность плагина — динамические PlaceholderAPI-иконки. Для каждого элемента можно настроить два варианта:
- enable — кастомный символ, который увидит игрок после успешной загрузки ресурспака;
- disable — обычный читаемый текст, который увидит игрок без ресурспака.
Плагин самостоятельно отслеживает состояние ресурспака у каждого игрока. Если ресурспак успешно загружен, PlaceholderAPI возвращает кастомную иконку. Если игрок отказался, загрузка завершилась ошибкой, ресурспак был выгружен или ещё не успел загрузиться, вместо символа возвращается настроенный текстовый вариант.
Благодаря этому интерфейс сервера остаётся понятным для всех игроков и не превращается в набор неизвестных символов при отсутствии ресурспака.
Основные возможности
- Автоматическая отправка ресурспака — ресурспак может отправляться каждому игроку после входа.
- Настраиваемая задержка отправки — отправляйте пак сразу или через указанное количество тиков.
- Прямая внешняя ссылка — используется URL на готовый ZIP-файл ресурспака.
- Обязательный или необязательный ресурспак — можно требовать принятие пакета клиентом Minecraft.
- Кастомное окно принятия — многострочный prompt с MiniMessage и HEX-цветами.
- Поддержка SHA-1 — можно указать контрольную сумму ресурспака вручную.
- Стабильный UUID ресурспака — можно задать вручную или позволить плагину создать и сохранить его автоматически.
- Удаление ресурспака при выходе — опциональная выгрузка отправленного пака по его UUID.
- Ручная отправка игроку — администратор может повторно отправить пак выбранному игроку.
- Массовая отправка — повторная отправка ресурспака всем игрокам онлайн.
- Динамические PlaceholderAPI-иконки — разные значения в зависимости от состояния пака у конкретного игрока.
- Читаемые fallback-значения — обычный текст вместо кастомного символа для игроков без ресурспака.
- Неограниченное количество иконок — новые ID добавляются через config.yml.
- 27 готовых примеров — уровни, ранги, разделы меню, топы и другие элементы.
- Отслеживание статусов клиента — принятие, отказ, ошибка скачивания, успешная загрузка и выгрузка пака.
- Действия для каждого статуса — сообщение, консольная команда, команда игрока или kick.
- Плейсхолдеры в действиях — ник, UUID и текущий статус ресурспака.
- Отдельный messages.yml — все административные и системные сообщения вынесены в отдельный файл.
- MiniMessage и HEX-цвета — современные цвета, градиенты и стили в сообщениях и prompt.
- Команда проверки состояния — отображение включения отправки, UUID, SHA-1 и обязательности пака.
- Отдельные права на команды — reload, send, sendall и status можно выдавать независимо.
- Tab-complete — подсказки сабкоманд и игроков онлайн.
Динамические иконки с fallback-текстом
Каждая иконка имеет собственный ID и два значения.
Пример:
Код:
settings:
icons:
lvl1:
enable: "Ơ"
disable: "<gradient:#3C424F:#83878D:#CBCBCC><bold>1 LVL</bold></gradient>"
Для вывода используется плейсхолдер:
Код:
%hresourcepackutils_icon_lvl1%
Если игрок успешно загрузил ресурспак, плейсхолдер вернёт:
Код:
Ơ
Если ресурспак не загружен, плейсхолдер вернёт:
Код:
<gradient:#3C424F:#83878D:#CBCBCC><bold>1 LVL</bold></gradient>
Это позволяет использовать кастомный шрифт и красивые PNG-иконки, не ломая интерфейс для игроков, которые:
- отказались от ресурспака;
- не смогли его скачать;
- ещё не завершили загрузку;
- выгрузили ресурспак;
- подключились до отправки пака.
Формат плейсхолдеров
Общий формат:
Код:
%hresourcepackutils_icon_<id>%
Примеры:
Код:
%hresourcepackutils_icon_best_player%
%hresourcepackutils_icon_player%
%hresourcepackutils_icon_lvl1%
%hresourcepackutils_icon_lvl10%
%hresourcepackutils_icon_admin%
%hresourcepackutils_icon_gladiator%
%hresourcepackutils_icon_cases%
%hresourcepackutils_icon_best_kdr%
%hresourcepackutils_icon_toolrise%
ID иконок не зависит от регистра.
Например, зарегистрированный ID:
Код:
best_player
используется как:
Код:
%hresourcepackutils_icon_best_player%
Если указан неизвестный ID, плагин возвращает пустую строку.
Плейсхолдеры можно использовать в:
- TAB;
- scoreboard;
- holograms;
- чатах;
- меню;
- префиксах;
- суффиксах;
- сообщениях;
- других плагинах с поддержкой PlaceholderAPI.
Значения enable и disable возвращаются как настроенный текст. Они могут содержать кастомные символы, MiniMessage или legacy-коды, если плагин, в котором используется плейсхолдер, умеет обрабатывать соответствующее форматирование.
Как определяется наличие ресурспака?
После подключения игрока плагин устанавливает для него начальное состояние “ресурспак не загружен”.
После этого hResourcepackUtils отслеживает события клиента Minecraft.
Иконки переключаются на значение enable только после статуса:
Код:
SUCCESSFULLY_LOADED
То есть недостаточно просто принять предложение. Клиент должен полностью скачать и применить ресурспак.
При остальных состояниях используется значение disable.
Поддерживаемые статусы:
- ACCEPTED — игрок принял предложение загрузить ресурспак.
- DECLINED — игрок отказался.
- FAILED_DOWNLOAD — клиент не смог скачать ресурспак.
- SUCCESSFULLY_LOADED — ресурспак полностью загружен и применён.
- DISCARDED — клиент выгрузил ранее отправленный ресурспак.
Состояние отслеживается отдельно для каждого игрока, поэтому два игрока могут одновременно видеть разные варианты одного и того же плейсхолдера.
Готовые примеры иконок
Стандартный config.yml содержит 27 готовых определений:
Код:
best_player
player
lvl1
lvl2
lvl3
lvl4
lvl5
lvl6
lvl7
lvl8
lvl9
lvl10
admin
gladiator
master
imperator
moder
champion
legenda
ffa_arenas
duels_fights
cases
best_kdr
best_kills
best_elo
toolrise
duelsandffa
Готовые значения используются как примеры. Любой ID, символ и fallback-текст можно заменить или полностью удалить.
Для добавления своей иконки достаточно создать новую секцию:
Код:
settings:
icons:
custom_shop:
enable: "Ȁ"
disable: "<#FDBE00>Магазин"
После этого будет доступен плейсхолдер:
Код:
%hresourcepackutils_icon_custom_shop%
Количество пользовательских иконок не ограничено фиксированным списком.
Автоматическая отправка ресурспака
hResourcepackUtils может автоматически отправлять ресурспак каждому игроку после входа.
Основные настройки:
Код:
settings:
resourcePack:
enable: true
externalUrl: "https://example.com/resourcepack.zip"
require: false
removeOnQuit: true
sendDelayTicks: 10
enable — глобально включает отправку ресурспака.
externalUrl — прямая внешняя ссылка на ZIP-файл.
require — определяет, обязан ли игрок принять ресурспак.
removeOnQuit — выгружает отправленный пак при выходе игрока.
sendDelayTicks — задержка автоматической отправки после входа.
20 тиков равны одной секунде.
Перед отправкой плагин проверяет, что игрок всё ещё находится онлайн.
Глобальный параметр enable применяется и к автоматической, и к ручной отправке. Если отправка отключена, команды send и sendall не смогут отправить ресурспак.
Кастомное окно принятия
Для окна предложения ресурспака можно задать собственный многострочный текст:
Код:
prompt:
enable: true
text:
- "<white>Для корректного отображения интерфейса"
- "<white>установите <#FDBE00>серверный ресурспак"
Поддерживаются:
- MiniMessage;
- HEX-цвета;
- градиенты;
- жирный текст;
- подчёркивание;
- другие Adventure/MiniMessage-стили.
Строки объединяются переносами.
Если prompt.enable выключен, ресурспак отправляется без кастомного текста в окне принятия.
UUID ресурспака
Каждому отправляемому ресурспаку назначается UUID.
Его можно указать вручную:
Код:
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Если оставить значение пустым:
Код:
uuid: ""
плагин автоматически:
- создаст новый UUID;
- запишет его в config.yml;
- будет использовать его при последующих отправках;
- сможет удалить именно этот ресурспак при выходе игрока.
UUID также отображается через административную команду status.
SHA-1 ресурспака
В конфиге можно указать SHA-1 ресурспака:
Код:
hash: "73d52cc7e6589c22edb0d91fbac3505d11296664"
Поддерживается стандартный SHA-1 длиной 40 шестнадцатеричных символов.
Значение можно оставить пустым:
Код:
hash: ""
В таком случае ресурспак будет отправлен без SHA-1-хеша.
Плагин не скачивает файл для автоматического вычисления хеша. Значение указывается владельцем сервера вручную.
Действия при смене статуса
Для каждого результата загрузки можно настроить собственный список действий:
Код:
statusActions:
accepted: []
declined: []
failedDownload: []
successfullyLoaded: []
discarded: []
Доступные события:
accepted — игрок принял предложение.
declined — игрок отказался от ресурспака.
failedDownload — клиент не смог скачать файл.
successfullyLoaded — клиент успешно применил ресурспак.
discarded — клиент выгрузил ресурспак.
Для каждого статуса можно выполнить любое количество поддерживаемых действий.
Типы status actions
Поддерживаются четыре типа действий:
Код:
message: текст
console: команда
player: команда
kick: текст
message — отправить игроку сообщение с поддержкой MiniMessage.
console — выполнить команду от имени консоли.
player — выполнить команду от имени игрока. Начальный символ / можно указывать или не указывать.
kick — отключить игрока от сервера с настроенным MiniMessage-текстом.
Пример:
Код:
statusActions:
accepted:
- "message: <#FDBE00>Ресурспак принят, начинается загрузка"
declined:
- "message: <red>Вы отказались от серверного ресурспака"
- "console: tellraw {player} {\"text\":\"Resource pack declined\"}"
failedDownload:
- "message: <red>Не удалось скачать ресурспак"
successfullyLoaded:
- "message: <green>Ресурспак успешно загружен"
- "console: lp user {player} permission set resourcepack.loaded true"
discarded:
- "kick: <red>Серверный ресурспак был выгружен"
Плейсхолдеры status actions
В действиях доступны:
Код:
{player}
{uuid}
{status}
{player} — ник игрока.
{uuid} — UUID игрока.
{status} — текущий статус ресурспака в нижнем регистре.
Примеры значения {status}:
Код:
accepted
declined
failed_download
successfully_loaded
discarded
Плейсхолдеры работают в сообщениях, командах и тексте отключения.
Сообщения и MiniMessage
Все основные сообщения находятся в отдельном файле:
Код:
messages.yml
Через него настраиваются:
- сообщение после принятия ресурспака;
- ошибка отправки;
- отсутствие прав;
- результат перезагрузки;
- подсказка команды send;
- ошибка поиска игрока;
- успешная и неуспешная ручная отправка;
- результат sendall;
- заголовок status;
- строки справки;
- подписи UUID, SHA-1 и других параметров;
- тексты включено/выключено;
- значение для пустых параметров.
Общий префикс задаётся в config.yml:
Код:
settings:
prefix: "<#FDBE00><bold>СЕРВЕР</bold><gray>:<white>"
В messages.yml он используется через:
Код:
{prefix}
Сообщения поддерживают MiniMessage, Adventure-компоненты и HEX-цвета.
Команды
Код:
/hresourcepackutils
Показать список доступных команд.
Код:
/hresourcepackutils reload
Перезагрузить config.yml, messages.yml, список иконок и настройки ресурспака.
Код:
/hresourcepackutils send <игрок>
Повторно отправить ресурспак выбранному игроку онлайн.
Код:
/hresourcepackutils sendall
Отправить ресурспак всем игрокам онлайн.
В сообщении отображается количество игроков, которым запрос на отправку был успешно передан.
Код:
/hresourcepackutils status
Показать текущие основные параметры:
- включена ли отправка;
- указанный SHA-1;
- UUID ресурспака;
- требуется ли принятие.
Команды поддерживают tab-complete по сабкомандам и игрокам онлайн.
Права
Код:
hresourcepackutils.admin
Общий административный доступ. Включает все права плагина.
Код:
hresourcepackutils.reload
Доступ к перезагрузке конфигурации.
Код:
hresourcepackutils.send
Доступ к отправке ресурспака отдельному игроку.
Код:
hresourcepackutils.sendall
Доступ к массовой отправке всем игрокам онлайн.
Код:
hresourcepackutils.status
Доступ к просмотру текущего состояния конфигурации.
Все права по умолчанию доступны операторам сервера.
Что можно настроить?
- общий префикс;
- автоматическую отправку при входе;
- прямую ссылку на ZIP-файл;
- обязательность ресурспака;
- удаление пака при выходе;
- задержку отправки;
- текст окна принятия;
- MiniMessage-оформление prompt;
- UUID ресурспака;
- SHA-1;
- действия при принятии;
- действия при отказе;
- действия при ошибке скачивания;
- действия после успешной загрузки;
- действия после выгрузки;
- сообщения status actions;
- консольные команды;
- команды игрока;
- kick-сообщения;
- ID пользовательских иконок;
- символ для игрока с ресурспаком;
- текст для игрока без ресурспака;
- все административные сообщения;
- справку команд;
- тексты включено и выключено;
- отображение пустых значений.
Зависимости и совместимость
Обязательные:
- Java 25+
- Paper/Purpur 1.21.11+
- PlaceholderAPI
- Зависимости
- Необязательные: PlaceholderAPI
- Команды и права
- Всё выше написано