Перейти к основному содержимому

FAQ по Resource Pack Manager

Если ответа на ваш вопрос здесь нет, сначала проверьте другие страницы ResourcePackManager на боковой панели.

Какие команды сейчас доступны в ResourcePackManager?

На бэкенде (Paper / Spigot) поверхность команд, реализованных в коде:

  • /rspm setup — открывает игровое GUI-меню настройки (статус обновления плагина, рекомендуемые плагины, переключатель автоматических обновлений, ссылки на вики / Discord / аккаунт Nightbreak)
  • /rspm reload — пересобирает и пере-хостит собранный пак
  • /rspm status — полный диагностический дамп (состояние пака, режим хостинга, сетевой ключ, интеграции)
  • /rspm itemsadder configure — настраивает ItemsAdder для хостинга через RSPM
  • /rspm itemsadder dismiss — навсегда отключает предупреждение ItemsAdder для UUID вашего игрока
  • /rspm data_compliance_request — загружает все удалённо хранящиеся данные этого сервера

Корневая команда — /resourcepackmanager, с псевдонимом /rspm. Также зарегистрированы несколько общих подкоманд MagmaCore/Nightbreak (например, /rspm recommendedplugins, /rspm downloadall) — на них и ссылаются кнопки меню настройки.

Права на бэкенде:

  • /rspm setup требует resourcepackmanager.setup и доступна только игрокам (она открывает GUI инвентаря).
  • /rspm reload, /rspm status, /rspm itemsadder <configure|dismiss> и /rspm data_compliance_request все требуют resourcepackmanager.*.

На прокси-плагине (Velocity / BungeeCord) существуют только диагностические команды:

  • /rspm status — снимок состояния на стороне прокси: список бэкендов, результаты загрузки по каждому бэкенду, состояние объединённого пака, обнаружение Geyser/Floodgate
  • /rspm debug bedrock [on|off] — Velocity и BungeeCord. Переключает подробные строки лога [RSPM-BedrockDebug] от GeyserBinder для диагностики случаев «Bedrock-игрок подключился, но не увидел пак». Сбрасывается в off при перезапуске прокси. Запуск без аргумента печатает текущее состояние.

Прокси-команды проверяют resourcepackmanager.command.status или resourcepackmanager.*. У консоли всегда есть оба; игрокам их нужно выдать через ваш плагин прав. Вывод безопасен для распространения — сетевой ключ маскируется, токены не печатаются — поэтому щедрая выдача прав приемлема.

Какие плагины сейчас поддерживаются?

ResourcePackManager поставляется с готовыми записями интеграции для этих плагинов:

  • BackpackPlus
  • BetterHUD
  • BetterStructures
  • CannonRTP
  • EliteMobs
  • EternalTD
  • FreeMinecraftModels
  • InfiniteVehicles
  • ItemsAdder
  • MegaBlockSurvivors
  • MMOInventory
  • ModelEngine
  • Nexo
  • Nova
  • Oraxen
  • RealisticSurvival
  • ResurrectionChest
  • ValhallaMMO
  • vane-core

Эти интеграции активируются только если плагин установлен и его настроенный локальный путь или удалённый URL пригодны для использования.

У каждой интеграции есть собственный YAML-файл конфигурации в plugins/ResourcePackManager/compatible_plugins/. Там можно настраивать isEnabled, pluginName, localPath, url, zips, cluster, additionalLocalPath и reloadCommand для каждого плагина. Параметр cluster указывает ResourcePackManager, что локальный путь следует рассматривать как каталог с несколькими подпапками ресурс-паков, которые должны быть объединены вместе.

Совместим ли ResourcePackManager с ItemsAdder?

Да. ResourcePackManager включает встроенный помощник и предупреждение для ItemsAdder.

Если ItemsAdder установлен и его всё ещё нужно настроить для хостинга через ResourcePackManager, OP-игроки получают кликабельное предупреждение через несколько секунд после входа. Игроки, навсегда отключившие предупреждение, его больше не видят. Оттуда можно:

  • выполнить /rspm itemsadder configure, чтобы установить resource-pack.hosting.no-host.enabled: true, отключить все три настройки protect-file-from-unzip, установить compress-json-files: false, запустить /iareload, затем /iazip, а затем перезагрузить ResourcePackManager (примерно через 15 с)
  • выполнить /rspm itemsadder dismiss, чтобы навсегда отключить это предупреждение для UUID вашего игрока

Если ItemsAdder уже настроен на размещение собственного пака через один из своих режимов хостинга, команда-помощник автоматически это не переопределяет. Она сообщит, что сначала нужно вручную отключить хостинг ItemsAdder.

Можно ли добавить собственный пак в объединение?

Да. Положите ваш .zip-файл в:

plugins/ResourcePackManager/mixer

Если вы хотите контролировать, какой пак выигрывает при конфликтах файлов, добавьте точное имя файла, включая .zip, в priorityOrder в plugins/ResourcePackManager/config.yml.

Пример:

priorityOrder:
- ResourcePackManager
- EliteMobs
- MyCustomPack.zip

Как работает приоритет?

priorityOrder — самый высокий приоритет наверху, самый низкий — внизу.

Для не-объединяемых файлов пак с более высоким приоритетом заменяет файл пака с более низким. Для объединяемых JSON-файлов ResourcePackManager объединяет содержимое вместо того, чтобы бездумно его заменять.

В коде объединяемыми сейчас считаются:

  • sounds.json
  • языковые файлы в lang или languages
  • ванильные JSON моделей предметов в minecraft/models/item (для них выполняется нерекурсивное объединение: между паками комбинируется только массив overrides, тогда как остальная часть файла следует правилу «побеждает наивысший приоритет»)
  • файлы атласов
  • файлы шрифтов
  • определения моделей предметов формата 1.21.4+ в items/ (формат-зависимое объединение: оставляет деревья предикатов нетронутыми, не рекурсирует слепо в узлы разных типов)

pack.mcmeta объединяется особым образом: побеждает наивысший pack_format, диапазоны supported_formats расширяются, чтобы охватить все паки (поддерживаются формы integer, массив из двух int и объект {min_inclusive, max_inclusive}), записи overlay объединяются, а нестандартные ключи верхнего уровня (например, sodium) сохраняются. Записи overlay нормализуются для совместимости с 1.21.9+ добавлением полей min_format/max_format, если они отсутствуют.

После объединения всех паков ResourcePackManager сливает источники базового атласа в overlay-файлы атласа. Это предотвращает случайное затенение overlay'ями записей базового атласа, когда Minecraft активирует overlay (например, ia_overlay_modern_atlas / ia_overlay_legacy_atlas от ItemsAdder).

Прочие JSON-файлы заменяются, а не объединяются.

Паки, не указанные в priorityOrder, всё равно включаются в объединение, но получают самый низкий приоритет.

Пересобирает ли ResourcePackManager автоматически при изменении паков?

Да. Он отслеживает изменения в источниках поддерживаемых паков.

Когда отслеживаемый пак не меняется в течение 3 секунд, ResourcePackManager помечает его как стабильный. Как только все отслеживаемые паки стабильны, пересборка происходит немедленно. Во время этого перехода OP-игроки онлайн получают уведомление: «All resource packs are stable. Mixing and sending now.»

Учитывает ли watchdog инициализацию плагинов?

Да. Watchdog осведомлён о состояниях инициализации плагинов Magmacore.

  • Он ждёт, пока все отслеживаемые плагины завершат инициализацию Magmacore, прежде чем начать проверки стабильности.
  • Если плагин перезагружается во время работы watchdog, тот обнаруживает изменение состояния, делает паузу, сбрасывает всё отслеживание стабильности и ждёт, пока плагин завершит повторную инициализацию.
  • Это предотвращает ложные срабатывания «нестабильно», которые иначе случались бы во время обычного запуска или перезагрузки плагина.

Как игроки получают итоговый пак?

Когда autoHost включён (по умолчанию), RSPM автоматически выбирает путь доставки и пушит этот URL каждому подключающемуся игроку. Дерево решений:

  1. Если selfHostForce: true, всегда self-host (пропускает все проверки — главным образом для тестирования).
  2. Иначе, если preferSelfHost: true (по умолчанию), сначала попробовать self-host, выполнить три проверки исправности (не-LAN разрешённый хост, локальная самопроверка, проверка внешней доступности через magmaguy.com), зафиксировать self-host, если все три прошли.
  3. Если self-host не удался или отключён, загрузить пак на magmaguy.com/rsp/ и анонсировать этот URL.

Как только URL получен, RSPM использует multi-pack API на Minecraft 1.20.3+, что позволяет ему сосуществовать с другими паками, отправляемыми сервером. На более старых версиях он откатывается к старому методу одиночного пака, который заменяет любое существующее назначение серверного ресурс-пака.

Если autoHost: false, RSPM не пушит никакой URL — предполагается, что вы возьмёте zip из plugins/ResourcePackManager/output/ и будете раздавать его через свой конвейер.

См. Самостоятельный хостинг для полного дерева решений по доставке.

Можно ли хостить самостоятельно вместо встроенного авто-хоста?

Да — и с RSPM v2 встроенный HTTP-сервер является рекомендуемым путём самостоятельного хостинга. selfHostEnabled: true и preferSelfHost: true оба включены по умолчанию.

Если вы хотите хостить zip через свой собственный существующий веб-сервер вместо любого из встроенных путей:

  • Установите autoHost: false.
  • При желании установите resourcePackRerouting в путь существующей папки относительно каталога plugins.
  • Возьмите собранный пак из plugins/ResourcePackManager/output/ResourcePackManager_RSP.zip и раздавайте его самостоятельно.

Если resourcePackRerouting задан, RSPM также записывает копию этого zip в папку перенаправления. Этот путь перенаправления разрешается относительно каталога plugins, и целевая папка должна уже существовать.

Есть ли команда для запроса хранимых данных хоста?

Да. Используйте:

/rspm data_compliance_request

Если у удалённого авто-хостинга magmaguy.com есть активная сессия, ResourcePackManager скачивает ответ в:

plugins/ResourcePackManager/data_compliance

Если активной удалённой сессии нет (например, вы используете self-host), команда сообщит, что удалённых данных для запроса нет.

Какие параметры конфига доступны?

В plugins/ResourcePackManager/config.yml доступны следующие настройки:

Общие

  • priorityOrder — список, определяющий, какие паки побеждают в конфликтах файлов (наивысший приоритет первым)
  • autoHost — авто-хостит ли ResourcePackManager и отправляет ли собранный пак (boolean, по умолчанию true)
  • forceResourcePack — принуждать ли игроков принять пак (boolean, по умолчанию false)
  • resourcePackPrompt — сообщение запроса, показываемое при предложении пака (по умолчанию "Use recommended resource pack?")
  • resourcePackRerouting — необязательный путь к папке (относительно plugins), куда записать дополнительную копию собранного zip
  • nightbreak.autoDownloadPluginUpdates — скачивает ли RSPM собственные обновления плагина автоматически при запуске (boolean, по умолчанию false; для применения скачанного обновления всё равно требуется перезапуск). Это вложенный ключ под секцией nightbreak:, а не ключ верхнего уровня — поиск голой строки autoDownloadPluginUpdates в config.yml найдёт её только с отступом под nightbreak:. Это тот же переключатель, что и в GUI /rspm setup.

Self-host

  • selfHostEnabled — можно ли использовать встроенный HTTP-сервер (boolean, по умолчанию true)
  • selfHostPort — порт для self-host HTTP-сервера. -1 (по умолчанию) авто-выводит как mcPort + networkHttpOffset-v2. Установите любое положительное целое, чтобы принудительно задать явный порт.
  • networkHttpOffset-v2запасное смещение, добавляемое к порту Minecraft-сервера, когда selfHostPort = -1. По умолчанию 1 (например, MC 25565 → HTTP 25566). В сети вам больше не нужно держать его синхронизированным с прокси: бэкенд автоматически объявляет прокси точный HTTP-порт, на который реально привязался, и прокси использует собственный network-http-offset-v2 лишь как догадку до прихода этого объявления.
  • selfHostExternalHost — публичное имя хоста или IP, которые клиенты используют для доступа к вашему self-host серверу. Пусто (по умолчанию) = авто-определение через api.ipify.org / checkip.amazonaws.com.
  • selfHostForce — пропускает все проверки исправности И удалённую загрузку, всегда использует self-host (boolean, по умолчанию false — для тестирования).
  • preferSelfHost — сначала попробовать self-host с проверками исправности перед откатом на удалённую загрузку (boolean, по умолчанию true).

Bedrock

  • bedrockConversionEnabled — преобразовывать ли собранный Java-пак в Bedrock-пак для GeyserMC (по умолчанию true)
  • bedrockAutoDeployToGeyser — копировать ли файл кастомных маппингов Geyser в обнаруженную папку Geyser (по умолчанию true)
  • bedrockGeyserFolder — ручной путь к папке Geyser; пусто = авто-определение
  • bedrockConverterDebug — подробные строки лога по каждому предмету / каждой кости от Bedrock-конвейера (по умолчанию false)

Второй файл, plugins/ResourcePackManager/bedrock_display_offsets.yml, предоставляет двенадцать пользовательских параметров для тонкой настройки положения предмета в руке у игроков Bedrock (шесть для вида от первого лица, шесть — от третьего). Подробности см. на странице преобразования Bedrock.

Намеренно нет опции конфига network-key. Ключ, связывающий прокси с его бэкендами, автоматически выводится из plugins/floodgate/key.pem на каждой JVM. Floodgate и так требует, чтобы этот файл был одинаковым во всей сети для Bedrock-аутентификации, поэтому выводимый ключ автоматически совпадает везде.

Могут ли другие плагины регистрировать свои паки через код?

Да. ResourcePackManager предоставляет Java API для программной регистрации паков. Подробности см. на странице API.

Работает ли преобразование Bedrock только для FreeMinecraftModels?

Нет, больше не только. Текущий конвертер обрабатывает любой плагин, чей пак содержит определения предметов 1.21.4+ в assets/<namespace>/items/*.json. Это охватывает костные модели FreeMinecraftModels, снаряжение EliteMobs, кастомные предметы Oraxen/Nexo, кастомные комплекты брони и любой пак, который вы сами собираете в этом формате. Простые 2D-кастомные предметы выдаются как плоские иконки Bedrock; 3D-кастомные предметы выдают геометрию/attachables Bedrock и программно отрендеренную иконку инвентаря.

Нужно ли перезапускать сервер при каждом изменении Bedrock-пака?

Правки текстур и моделей существующих кастомных предметов вступают в силу для следующего подключающегося игрока Bedrock — RSPM раздаёт Bedrock-пак вживую посессионно через API Geyser. Перезапуск требуется только когда меняется набор кастомных предметов (добавление новых или удаление существующих), потому что Geyser регистрирует идентификаторы своих кастомных предметов при старте.

Работает ли ResourcePackManager на BungeeCord / Velocity?

Да — это первоклассно поддерживаемая топология. Это тот же ResourcePackManager.jar везде: положите его на каждый бэкенд и положите копию на прокси. Этот один jar содержит точки входа для Bukkit, Velocity и BungeeCord/Waterfall, поэтому он загружается корректно независимо от того, является ли хост бэкендом или прокси. Больше нет отдельных прокси-jar и нет папки proxy-extension/.

Работая как прокси-плагин, он объединяет преобразованный Bedrock-пак каждого бэкенда и раздаёт его Bedrock-клиентам через Geyser прокси. Доставка Java-пака по-прежнему обрабатывается каждым бэкендом напрямую — Java-клиенты видят паки конкретного бэкенда.

Шаги настройки, устранения неполадок и проверки описаны в Прокси-сети.