ResourcePackManager (RSPM)
ResourcePackManager обнаруживает, объединяет, размещает и распространяет ресурс-паки от поддерживаемых плагинов и от вручную добавленных паков. Он также может преобразовать собранный Java-пак в ресурс-пак Bedrock, чтобы игроки GeyserMC видели то же пользовательское содержимое, что и игроки Java, и поставляется с первоклассной поддержкой прокси-сетей BungeeCord и Velocity.
Что он делает
- обнаруживает паки поддерживаемых плагинов и объединяет их в соответствии с
priorityOrder - запускает собственный встроенный HTTP-сервер, чтобы самостоятельно хостить собранный пак (внешний файловый хост не требуется)
- может откатиться на бесплатный хостинг MagmaGuy (авто-хост), когда self-host невозможен
- может принудительно или по желанию запрашивать использование пака
- следит за изменениями паков и автоматически пересобирает, когда источники стабилизируются
- преобразует собранный Java-пак в ресурс-пак Bedrock для GeyserMC
- регистрирует настоящие кастомные Bedrock-сущности в Geyser через встроенное расширение Geyser, поэтому смоделированные сущности (например, FreeMinecraftModels, EliteMobs) отображаются и анимируются для игроков Bedrock
- работает в прокси-сетях: участвующие бэкенды создают Bedrock-паки, а прокси-плагин обнаруживает, загружает и объединяет их, затем раздаёт результат через Geyser
- связывает сеть без единого ключа для вставки: прокси владеет сетевым ключом, сохраняет его в собственный файл
network-keyи автоматически отправляет каждому бэкенду при первом подключении туда игрока - умеет поддерживать себя в актуальном состоянии по всей сети: бэкенды предлагают универсальный jar плагина по аутентифицированному маршруту; прокси проверяет его структуру и версию, отказывается от понижения версии, сверяет переданные байты по SHA-256 и размещает его до следующего выключения
Архитектура в двух словах
RSPM v2 — это многомодульная Maven-сборка, но поставляется он как единственный jar: ResourcePackManager.jar. Этот один jar содержит сразу плагин для Bukkit/Paper, плагин для Velocity и плагин для BungeeCord — Minecraft загружает ту точку входа, которая соответствует платформе, на которой он работает. Больше нет отдельных файлов ResourcePackManager-Velocity.jar / ResourcePackManager-BungeeCord.jar, которые нужно было бы извлекать.
Папка proxy-extension/ по-прежнему существует, но теперь означает другое: когда бэкенд замечает, что он стоит за прокси и ему ни разу не выдавали сетевой ключ, он выкладывает побайтово идентичную копию собственного работающего jar в plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar и просит вас скопировать именно этот файл на прокси. Это удобная копия jar, который у вас уже есть, а не отдельный артефакт под конкретную платформу.
Один и тот же jar играет две роли в зависимости от того, куда вы его положите:
- Как серверный плагин (на каждом Paper/Spigot-бэкенде) — микширует Java-паки, запускает Bedrock-конвертер, хостит пак, открывает небольшой HTTP-сервер и отправляет паки Java-клиентам.
- Как прокси-плагин (на прокси Velocity или BungeeCord) — забирает Bedrock-пак и маппинги каждого бэкенда, объединяет их в единый общесетевой пак и раздаёт Bedrock-клиентам через Geyser прокси.
На отдельном сервере достаточно установить jar на бэкенде. В прокси-сети тот же jar нужен на прокси и на бэкендах, которые предоставляют ресурс-паки. Зарегистрированные на прокси серверы без RSPM не задерживают раздачу паков. См. Обнаружение бэкендов.
Тот же jar также работает как расширение Geyser. Когда бэкенд обнаруживает локальную установку Geyser-Spigot, он кладёт ровно тот же универсальный ResourcePackManager.jar в Geyser-Spigot/extensions/, чтобы Geyser мог рендерить кастомные Bedrock-сущности RSPM; прокси-роль делает то же самое для Geyser на прокси. (В более старых версиях поставлялся отдельный ResourcePackManager-GeyserBridge.jar — этот файл упразднён и заменяется автоматически через очередь обновлений Geyser.) См. Расширение Geyser и кастомные сущности.
Варианты хостинга
Доставка Java-пака использует такой приоритет:
- Принудительный собственный хостинг (
selfHostForce: true) — переопределяетautoHostиselfHostEnabled, пропускает проверки доступности и удалённую загрузку. В основном для тестирования. До объявления URL его проверка и запуск HTTP-сервера всё равно должны пройти успешно. - При
autoHost: true,preferSelfHost: trueиselfHostEnabled: trueRSPM сначала пробует собственный хостинг на отдельных серверах и бэкендах прокси. Проверяет адрес, сравнивает образцы пака, скачанные через localhost и точный URL игрока, и требует внешней доступности до объявления URL. Сбой или невозможность проверки приводит к удалённому хостингу. Прокси продолжает получать Bedrock-артефакты с HTTP-сервера бэкенда. - Удалённый резерв — если собственный хостинг отключён или проверка не пройдена, RSPM повторно использует или загружает пак на
magmaguy.com/rsp/и объявляет этот URL. Удалённый сбой может привести к собственному хостингу приselfHostEnabled: true, но с теми же проверками. При отказе обоих автоматических путей новый URL доставки не объявляется.
Если и autoHost: false, и selfHostForce: false, RSPM записывает собранный zip в plugins/ResourcePackManager/output/, не пуша никакой URL.
См. Самостоятельный хостинг для полного дерева решений по доставке, разрешения портов и определения внешнего хоста.
В selfHostExternalUrl можно указать полный HTTP- или HTTPS-адрес обратного прокси или сервиса завершения TLS. Перенаправляйте запросы к /rspm.zip в RSPM: автоматическая раздача ресурс-пака продолжит работать.
Преобразование Java в Bedrock
Bedrock-конвертер больше не ограничен только FreeMinecraftModels. Он рекурсивно обходит каждый файл определений предметов 1.21.4+ (assets/<namespace>/items/**/*.json) в собранном паке и производит Bedrock-геометрию, attachables и иконки инвентаря для того плагина, который их предоставил:
- Игроки Bedrock видят 3D-предметы, кастомную броню и моделируемое снаряжение для любого плагина, чей пак использует формат определений предметов 1.21.4+.
- Кастомные текстуры брони рендерятся у игроков Bedrock с использованием ванильной геометрии брони и Java-текстуры в качестве видимого слоя.
- Иконки инвентаря для 3D-предметов программно рендерятся из Java-модели через трансформацию
display.gui. - Bedrock-пак раздаётся вживую посессионно через API Geyser, поэтому правки текстур и моделей доходят до следующего подключающегося Bedrock-игрока без перезапуска сервера. Маппинги кастомных предметов по-прежнему требуют перезапуска, так как Geyser регистрирует их при старте.
- 3D-предметы в руке получают позы от первого и третьего лица из трансформаций Java-модели
display.firstperson_righthandиdisplay.thirdperson_righthand, перенесённых на ванильный риг игрока Bedrock. Смещения настраивать не нужно. - 3D-предметы в руке, плагин которых поставляет служебный файл частиц (например, предметы FreeMinecraftModels с эффектами частиц), воспроизводят эти частицы для игроков Bedrock. Комплекты сущностей тоже могут поставлять файлы частиц Bedrock.
Текущие интеграции
ResourcePackManager поставляется с готовыми записями интеграции для этих плагинов:
- BackpackPlus
- BetterHUD
- BetterStructures
- CannonRTP
- EliteMobs
- EternalTD
- FreeMinecraftModels
- InfiniteVehicles
- ItemsAdder
- MegaBlockSurvivors
- MMOInventory
- ModelEngine
- Nexo
- Nova
- Oraxen
- RealisticSurvival
- ResurrectionChest
- ValhallaMMO
- vane-core
Каждая интеграция активируется только если плагин установлен и его настроенный локальный путь или удалённый URL пригодны для использования. Плагин также определяет Geyser (Geyser-Spigot на бэкенде, Geyser-Velocity / Geyser-BungeeCord на прокси) при запуске и связывает доставку Bedrock-пака с тем, который найдёт.
Куда идти дальше
- Настройка — рабочий процесс администратора для отдельностоящего сервера
- Прокси-сети — пошаговая настройка для BungeeCord / Velocity
- Самостоятельный хостинг — встроенный HTTP-сервер, разрешение портов, определение внешнего хоста
- Преобразование в Bedrock / Geyser — что преобразуется и как
- Расширение Geyser и кастомные сущности — как устанавливается встроенное расширение, требования к версии Geyser
- FAQ — частые вопросы
- Устранение неполадок — что проверять, когда что-то сломано
- API — регистрация паков из вашего собственного плагина