ResourcePackManager (RSPM)
ResourcePackManager обнаруживает, объединяет, размещает и распространяет ресурс-паки от поддерживаемых плагинов и от вручную добавленных паков. Он также может преобразовать собранный Java-пак в ресурс-пак Bedrock, чтобы игроки GeyserMC видели то же пользовательское содержимое, что и игроки Java, и поставляется с первоклассной поддержкой прокси-сетей BungeeCord, Waterfall и 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/Waterfall — 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/Waterfall) — забирает Bedrock-пак и маппинги каждого бэкенда, объединяет их в единый общесетевой пак и раздаёт Bedrock-клиентам через Geyser прокси.
Отдельностоящему серверу нужен только jar на бэкенде. Прокси-сети нужен тот же jar на каждом бэкенде И копия на прокси.
Тот же jar также работает как расширение Geyser. Когда бэкенд обнаруживает локальную установку Geyser-Spigot, он кладёт ровно тот же универсальный ResourcePackManager.jar в Geyser-Spigot/extensions/, чтобы Geyser мог рендерить кастомные Bedrock-сущности RSPM; прокси-роль делает то же самое для Geyser на прокси. (В более старых версиях поставлялся отдельный ResourcePackManager-GeyserBridge.jar — этот файл упразднён и заменяется автоматически через очередь обновлений Geyser.) См. Расширение Geyser и кастомные сущности.
Варианты хостинга
Доставка Java-пака использует такой приоритет:
- Принудительный self-host (
selfHostForce: true) — переопределяетautoHostиselfHostEnabled, пропускает все проверки и удалённую загрузку и объявляет локальный URL. В основном для тестирования. - При
autoHost: true,preferSelfHost: trueиselfHostEnabled: trueRSPM сначала пробует собственный хостинг как на отдельных серверах, так и на бэкендах прокси. До объявления URL проверяются адрес, локальный HTTP-маршрут и внешняя доступность. При неудаче используется удалённый хостинг. Прокси продолжает получать файлы Bedrock с HTTP-сервера бэкенда. - Резерв через удалённый авто-хост — если self-host отключён или реальная проверка доступности self-host не проходит, RSPM загружает пак на CDN MagmaGuy по адресу
magmaguy.com/rsp/и анонсирует вместо него этот URL. Если удалённый путь падает, он может откатиться на self-host приselfHostEnabled: true.
Если и autoHost: false, и selfHostForce: false, RSPM записывает собранный zip в plugins/ResourcePackManager/output/, не пуша никакой URL.
См. Самостоятельный хостинг для полного дерева решений по доставке, разрешения портов и определения внешнего хоста.
Преобразование 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 регистрирует их при старте.
- Двенадцать пользовательских параметров для смещений отображения предмета в руке (шесть для первого лица, шесть для третьего) в
bedrock_display_offsets.yml.
Текущие интеграции
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 / Waterfall / Velocity
- Самостоятельный хостинг — встроенный HTTP-сервер, разрешение портов, определение внешнего хоста
- Преобразование в Bedrock / Geyser — что преобразуется, параметры тонкой настройки
- Расширение Geyser и кастомные сущности — как устанавливается встроенное расширение, требования к версии Geyser
- FAQ — частые вопросы
- Устранение неполадок — что проверять, когда что-то сломано
- API — регистрация паков из вашего собственного плагина