FAQ по Resource Pack Manager
Если ответа на ваш вопрос здесь нет, сначала проверьте другие страницы ResourcePackManager на боковой панели.
Какие команды сейчас доступны в ResourcePackManager?
На бэкенде (Paper / Spigot) поверхность команд, реализованных в коде:
/rspm setup— открывает игровое GUI-меню настройки (статус обновления плагина, рекомендуемые плагины, переключатель автоматических обновлений, ссылки на вики / Discord / аккаунт Nightbreak)/rspm recommendedplugins— показывает общее меню рекомендуемых плагинов Nightbreak (или текстовый список в консоли)/rspm downloadpluginupdate— скачивает доступное обновление ResourcePackManager к следующему перезапуску/rspm downloadall— скачивает все доступные обновления, которые предоставляет этот плагин (сейчас это обновление ResourcePackManager)/rspm reload— пересобирает и пере-хостит собранный пак/rspm status— полный диагностический дамп (состояние пака, режим хостинга, отпечаток сетевого ключа, интеграции)/rspm verbose [on|off]— включает или выключает подробное диагностическое логирование. Без аргумента переключает. Результат записывается обратно вverboseLoggingвconfig.yml, поэтому сохраняется между перезапусками. Также принимается как/rspm verboselogging./rspm itemsadder configure— настраивает ItemsAdder для хостинга через RSPM/rspm itemsadder dismiss— навсегда отключает предупреждение ItemsAdder для UUID вашего игрока/rspm data_compliance_request— загружает все удалённо хранящиеся данные этого сервера
Корневая команда — /resourcepackmanager, с псевдонимом /rspm. Команды обновления и рекомендуемых плагинов выше — это общие команды MagmaCore/Nightbreak, регистрируемые RSPM.
Права на бэкенде:
/rspm setupи/rspm recommendedpluginsтребуютresourcepackmanager.setup./rspm setupдоступна только игрокам, потому что открывает GUI инвентаря./rspm downloadpluginupdate,/rspm downloadall,/rspm reload,/rspm status,/rspm verbose,/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 при перезапуске прокси. Запуск без аргумента печатает текущее состояние.
На Velocity прокси-команды принимают resourcepackmanager.command.status или resourcepackmanager.*. BungeeCord регистрирует точный узел resourcepackmanager.command.status; плагин прав всё же может удовлетворить его через раскрытие wildcard. Консоль может запускать эти команды. Вывод безопасен для распространения — сетевой ключ появляется только как короткий односторонний хеш-отпечаток, никогда сам ключ, и токены не печатаются — поэтому щедрая выдача прав приемлема.
Какие плагины сейчас поддерживаются?
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, что локальный путь следует рассматривать как каталог с несколькими подпапками ресурс-паков, которые должны быть объединены вместе.
Как исключить одну автоматическую интеграцию плагина?
Задайте isEnabled: false в файле этой интеграции в plugins/ResourcePackManager/compatible_plugins/, затем выполните /rspm reload (или перезапустите сервер). RSPM удаляет входные ресурс-паки, которые он сгенерировал или зарегистрировал для этой интеграции, включая её сгенерированные копии в миксере. Удаление плагина из priorityOrder не исключает его; оно лишь опускает этот пак на самый низкий приоритет. Чтобы исключить ZIP, добавленный вручную, удалите или переместите этот ZIP из папки mixer.
Совместим ли 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.
Распакованная папка пака (дерево assets/ плюс pack.mcmeta) идёт в:
plugins/ResourcePackManager/resource_pack
RSPM сам запаковывает эту папку и объединяет её под записью ResourcePackManager в priorityOrder, которая стоит наверху дефолтного списка — то есть по умолчанию её файлы побеждают в конфликтах против любого пака плагина. Опустите ResourcePackManager ниже по списку, если хотите, чтобы он проигрывал.
Связанная папка plugins/ResourcePackManager/blueprint содержит pack.png и pack.mcmeta, которые RSPM вносит в каждое объединение. Отредактируйте эти два файла, чтобы изменить иконку собранного пака или его описание в меню; папка перепаковывается в blueprint.zip при каждом запуске.
Пример:
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, всё равно включаются в объединение, но получают самый низкий приоритет.
Побайтово идентичные полные ZIP-входы дедуплицируются перед объединением, сохраняется первая (наивысшая по приоритету) копия. После объединения RSPM также чинит два распространённых дефекта Java-моделей: добавляет отсутствующую текстуру particle из первой конкретной текстуры модели, где это возможно, и ограничивает некорректные UV-координаты модели диапазоном Minecraft 0..16.
Пересобирает ли ResourcePackManager автоматически при изменении паков?
Да. Он отслеживает изменения в источниках поддерживаемых паков.
Когда отслеживаемый пак не меняется в течение 3 секунд, ResourcePackManager помечает его как стабильный. Как только все отслеживаемые паки стабильны, пересборка происходит немедленно. Во время этого перехода OP-игроки онлайн получают уведомление: «All resource packs are stable. Mixing and sending now.»
Пересборка, входные данные которой побайтово идентичны предыдущей, не выполняет повторное объединение. RSPM снимает отпечаток упорядоченного списка исходных паков (имя, размер, хеш содержимого) и сохраняет его рядом с выводом как .rspm_mix_fingerprint; когда отпечаток совпадает и все ожидаемые выходные файлы на месте, он публикует существующий zip заново вместо пересборки. Всё сомнительное — отсутствующий вывод, нечитаемый отпечаток, включённое преобразование в Bedrock при отсутствии Bedrock-пака на диске — проваливается в полную сборку. Именно поэтому /rspm reload, который ничего не меняет, может завершиться почти мгновенно и переиспользовать существующую регистрацию хостинга.
Учитывает ли watchdog инициализацию плагинов?
Да. Watchdog осведомлён о состояниях инициализации плагинов Magmacore.
- Он ждёт, пока все отслеживаемые плагины завершат инициализацию Magmacore, прежде чем начать проверки стабильности.
- Если плагин перезагружается во время работы watchdog, тот обнаруживает изменение состояния, делает паузу, сбрасывает всё отслеживание стабильности и ждёт, пока плагин завершит повторную инициализацию.
- Это предотвращает ложные срабатывания «нестабильно», которые иначе случались бы во время обычного запуска или перезагрузки плагина.
Как игроки получают итоговый пак?
Когда autoHost включён (по умолчанию) или когда selfHostForce явно его переопределяет, RSPM выбирает путь доставки и пушит этот URL каждому подключающемуся Java-игроку. Дерево решений:
- Если
selfHostForce: true, всегда self-host (пропускает все проверки — главным образом для тестирования). - Иначе, если
preferSelfHost: true(по умолчанию), сначала попробовать self-host, выполнить три проверки исправности (не-LAN разрешённый хост, локальная самопроверка, проверка внешней доступности через magmaguy.com), зафиксировать self-host, если все три прошли. - Если self-host не удался или отключён, загрузить пак на
magmaguy.com/rsp/и анонсировать этот URL.
Как только URL получен, RSPM использует multi-pack API, поэтому сосуществует с другими паками, отправляемыми сервером. Текущий дескриптор Bukkit-плагина требует Minecraft 1.21.4 или новее.
Предложение пака при входе откладывается примерно на одну секунду. Ответ FAILED_DOWNLOAD или DISCARDED повторяется автоматически, до трёх попыток за сессию игрока; отклонённый игроком пак или некорректный URL не повторяются. Игроки Floodgate здесь пропускаются, потому что их Bedrock-пак доставляется через Geyser.
Если autoHost: false и selfHostForce: 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/data.zip
RSPM также записывает ReadMe.md в ту же папку data_compliance.
Если активной удалённой сессии нет (например, вы используете self-host), команда сообщит, что удалённых данных для запроса нет.
Какие параметры конфига доступны?
В plugins/ResourcePackManager/config.yml доступны следующие настройки:
Общие
priorityOrder— список, определяющий, какие паки побеждают в конфликтах файлов (наивысший приоритет первым)autoHost— авто-хостит ли ResourcePackManager и отправляет ли собранный пак (boolean, по умолчаниюtrue)forceResourcePack— принуждать ли игроков принять пак (boolean, по умолчаниюfalse)resourcePackPrompt— сообщение запроса, показываемое при предложении пака (по умолчанию"Use recommended resource pack?")resourcePackRerouting— необязательный путь к папке (относительноplugins), куда записать дополнительную копию собранного zipverboseLogging— выводить каждый шаг подготовки пака и рукопожатия хостинга (boolean, по умолчаниюfalse). По умолчанию выключено, чтобы в консоли был виден только итоговый результат; включайте при диагностике проблем объединения или хостинга./rspm verbose on|offпереключает этот же ключ во время работы и сохраняет его. Отдельно отbedrockConverterDebug, который охватывает конвейер Bedrock.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)geyserExtensionAutoInstall— устанавливать и обновлять универсальныйResourcePackManager.jarкак расширение Geyser, чтобы отображались кастомные Bedrock-сущности (по умолчаниюtrue). Установка вfalseпрекращает будущие установки и подготовку обновлений; это не удаляет jar расширения, который уже там лежит — удалите его вручную при остановленном Geyser. У прокси-плагина тот же переключатель под другим именем:geyser-extension-auto-install.
Второй файл, plugins/ResourcePackManager/bedrock_display_offsets.yml, предоставляет двенадцать пользовательских параметров для тонкой настройки положения предмета в руке у игроков Bedrock (шесть для вида от первого лица, шесть — от третьего). Подробности см. на странице преобразования Bedrock.
Намеренно нет опции конфига network-key — ни на бэкенде, ни на прокси. Вставка ключа вручную была крупнейшим источником ошибок конфигурации: опечатка молча ломала связь прокси↔бэкенд без единой ошибки где-либо.
Вместо этого ключом владеет прокси и раздаёт его:
- Прокси разрешает свой ключ один раз: он читает сохранённый файл
network-key, если тот есть; иначе берёт значение как зерно изplugins/floodgate/key.pem, если этот файл существует (чтобы уже существующая сеть сохранила свою идентичность при обновлении); иначе генерирует новый. В любом случае он сохраняет результат вnetwork-keyв собственной папке данных прокси-плагина и больше никогда не смотрит наkey.pem. - Каждый бэкенд получает этот ключ по каналу плагин-сообщений
rspm:networkпри первом подключении к нему игрока, а затем сохраняет его в собственномdata.yml. Бэкенд, у которого уже есть ключ, игнорирует последующие выдачи — перенаправление бэкенда в другую сеть является действием администратора, а не тем, что может сделать сообщение. - Floodgate для этого не требуется. Он нужен, чтобы Bedrock-игроки вообще могли попасть на прокси, но сеть только для Java может использовать прокси-возможности RSPM и без него.
- Отдельностоящий (не за прокси) сервер генерирует и хранит собственный ключ, потому что он сам себе односерверная сеть.
/rspm status с любой стороны печатает короткий односторонний хеш-отпечаток ключа, никогда сам ключ. Совпадающие отпечатки на прокси и бэкенде означают, что связь в порядке.
Почему консоль такая тихая? Он вообще что-то делает?
Так задумано. Подготовка пака — это длинный конвейер: подготовить пак каждого участвующего плагина, объединить кластеры, дождаться, пока они перестанут меняться, смиксовать, преобразовать для Bedrock, передать результат хосту. Комментирование всего этого давало около шестидесяти строк в консоли на каждый запуск и хоронило те две вещи, которые кто-либо читает: получат ли игроки пак и что делать, если нет.
Поэтому обычная загрузка выводит одну строку:
[ResourcePackManager] Resource pack is live via self-hosting — http://play.example.com:25566/rspm.zip
Если вы видите эту строку — всё сработало.
RSPM также намеренно не предупреждает об условиях, которые исправляет сам. Если проверка self-host не прошла и RSPM откатился на удалённый хостинг — это успех; консоль сообщает результат, а не обходной путь. Предупреждение о том, что уже обработано, читается как сбой и заставляет людей гоняться за несуществующей проблемой.
Чтобы увидеть полное повествование, выполните /rspm verbose on (или задайте verboseLogging: true в config.yml), а затем /rspm reload. Конкретно для Bedrock-конвертера используйте вместо этого bedrockConverterDebug: true.
Могут ли другие плагины регистрировать свои паки через код?
Да. 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 под каждую платформу, которые нужно было бы собирать или извлекать, — а если вы забудете положить копию на прокси, бэкенд за прокси сам выложит её для вас в plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar и сообщит об этом в консоли.
Работая как прокси-плагин, он объединяет преобразованный Bedrock-пак каждого бэкенда и раздаёт его Bedrock-клиентам через Geyser прокси. Доставка Java-пака по-прежнему обрабатывается каждым бэкендом напрямую — Java-клиенты видят паки конкретного бэкенда.
Шаги настройки, устранения неполадок и проверки описаны в Прокси-сети.