Skip to main content
BetterHUD, MythicHUD, ModelEngine, BetterModel и похожие плагины собирают собственные ассеты и передают их Nexo. В сети это создаёт проблему: если лобби использует один HUD, а PvP-сервер — другой, каждый сервер собирает только свою половину ассетов, и в итоге вы получаете два разных пака и повторную загрузку при каждом переходе игрока. NexoHub решает это за вас. Устанавливайте плагины на каждый сервер именно так, как вам нужно.

Что вам нужно сделать

Проверьте две настройки в конфигах ваших других плагинов. Это единственное, что всё ещё может это сломать, и они разобраны ниже. Оставьте собственный конфиг каждого плагина на своём месте. Разные серверы могут запускать разные HUD и хранить разные модели. Это живёт в config.yml плагина, который никогда не является общим. Не копируйте сгенерированный вывод наверх на прокси. Папки вроде plugins/Nexo/pack/external_packs/BetterHud/ пересобираются плагином при каждой загрузке. NexoHub собирает их автоматически, а устаревшая копия в nexo-data/ только вызывает путаницу. Установите packs.mixed_content: true, если ваши серверы запускают разные HUD или модели, чтобы ассеты каждого из них доходили до остальных. См. ниже. Это всё. Файлы плагинов не копируются между бэкендами, так что каждый сервер хранит только то, что вы на него установили. Вы всё ещё можете положить файл централизованно в _shared/_plugins/, и он победит. См. управление файлами.

Две настройки, которые нужно проверить

Обе — это плагин, обфусцирующий собственный пак. Их отключение не стоит вам никакой защиты, потому что Nexo в любом случае обфусцирует объединённый пак после.
Установите pack.use-obfuscation: false в конфиге BetterModel. Эта настройка поставляется включённой, так что каждая установка начинается в конфигурации, которая ломается, и вам нужно её изменить.
Когда она выключена, BetterModel называет каждую часть по её модели и кости, и два бэкенда с разными моделями собирают паки, которые согласуются друг с другом. Когда она включена, имена зависят от того, сколько частей этот сервер загрузил первым, так что торс волшебника на одном сервере оказывается молотом рыцаря на другом.
Оставьте resourcepack-obfuscation: false в конфиге BetterHUD. Это значение по умолчанию, так что это имеет значение только если кто-то её включил.
Когда она выключена, BetterHUD называет сгенерированные файлы по HUD, к которому они относятся. Когда включена — называет их a, b, c в порядке загрузки, так что первый HUD вашего лобби и первый HUD вашего PvP-сервера оба называются a, и один перезаписывает другой. О каждой из них сообщается, но в разных местах. Бэкенд предупреждает о BetterModel при загрузке:
Это предупреждение — ваше единственное уведомление о BetterModel, потому что он передаёт свою папку напрямую Nexo, а не пишет в external_packs/, так что на прокси ничто её не сравнивает. Если вы не можете выключить эту настройку, установите support.bettermodel: true на этом бэкенде, чтобы вместо этого делиться его исходными файлами. Конфликт BetterHUD ловится на прокси, который сообщает вам об этом, а не отправляет сломанный пак:
Та же проверка применяется к любому плагину. Если вы это видите, либо выключите собственную обфускацию этого плагина, либо исключите папку через contribute_exclude. collision — одно из событий вебхука, так что вам не нужно вычитывать это из консоли. Вторая формулировка называет два плагина, а не два бэкенда. Она означает, что один плагин затирает файл другого, и никакая настройка NexoHub это не исправит. Запускайте только один из них или спросите их авторов, какой должен владеть этим файлом.

Серверы с разными HUD или моделями

Некоторые из этих плагинов нумеруют вещи по тому, что их собственный сервер случайно загрузил, так что одно и то же число означает разное на каждом бэкенде. NexoHub вместо этого хранит эти числа на прокси и раздаёт всем одинаковые.
Ассеты BetterHUD и ModelEngine доходят до других бэкендов только как вклады (contributions), так что для запуска разных HUD на разных серверах нужно packs.mixed_content: true на прокси. При значении по умолчанию SERVER каждый бэкенд получает пак, содержащий только его собственные.
Бэкенд сообщает при запуске, что именно он делает, называя только установленные на нём плагины:
BetterModel с всё ещё включённой собственной обфускацией не получает эту вторую строку. Вместо этого сообщается, что он собирает собственный отдельный пак — что он и делает. Если вы запускаете версию, которая ведёт себя иначе, бэкенд сообщает об этом при запуске и называет настройку generators, которая возвращает старое поведение — её вы задаёте на прокси для одного бэкенда, группы или всех сразу. Большинству сетей она никогда не нужна.

Что видят ваши игроки

Только то, что запускает данный сервер. Если на pvp стоит HUD дайвинга, а в лобби — приветственный HUD, именно это игроки и видят на каждом из них. BetterHUD сервера хранит только те HUD, которые вы туда установили, так что /hud add не предлагает ничего из того, что запускает другой сервер, а модель существует только на том сервере, куда вы её положили. Ассеты каждого сервера при этом остаются в одном общем паке, который все они раздают.
Это не связано с собственной настройкой Nexo Pack.obfuscation, которая выполняется позже над готовым паком и которую безопасно оставить включённой.

Как это перемещается

Каждый бэкенд публикует то, что сгенерировали его плагины, а хаб это хранит. Обратно это приходит как папка непосредственно в plugins/Nexo/pack/external_packs/ с именем _hub-<plugin>-<id>, и Nexo включает её в пак. BetterHUD и BetterModel собирают этот вывод как папку или как один .zip, в зависимости от их собственной настройки pack-type, и в обоих случаях он публикуется. Вам не нужно её менять: NexoHub читает build-folder-location каждого плагина, чтобы узнать точное имя, которое тот пишет — так же он понимает, что ваш собственный пак в этой папке трогать не надо. Tooltips и Overdrive читаются так же, из copy-resource-pack.path и resourcepack.nexo_integration.output_path, если это копирование включено. packs.mixed_content определяет, доходит ли это до других бэкендов. Когда вы впервые добавляете сервер, он публикует свои ассеты, а остальные подхватывают их при следующей перезагрузке, в течение нескольких секунд. После этого ничего не пересылается заново, пока сгенерированное содержимое не изменится, так что обычный перезапуск ничего не стоит.

Любой другой плагин

Плагины выше NexoHub знает по имени. Любой другой плагин, которому можно указать, куда распаковывать свой пак, тоже работает: укажите ему папку в plugins/Nexo/pack/external_packs/, имя которой начинается с generated-.
Такая папка обрабатывается как вывод BetterHUD. Она публикуется при packs.mixed_content, бэкенд убирает свою копию, как только хаб возвращает те же файлы, и она уходит из сети, когда плагин перестаёт её писать. Две вещи остаются на вас, потому что NexoHub не видит, что делает этот плагин:
  • Плагин должен записывать папку при каждом запуске. Если он пишет её только один раз, после первого перезапуска она пропадёт.
  • Ничто не согласует его идентификаторы между серверами. Если два бэкенда публикуют одну и ту же папку с разным содержимым, прокси сообщает о коллизии и называет её.
Префикс задаётся настройкой generated_prefixes. Это список, регистр не учитывается, а [] отключает эту возможность.

Удаление пака

Остановите плагин, который его генерирует. HUD, который вы удалили из конфига BetterHUD, или плагин, который вы деинсталлировали, исчезает из сетевого пака после следующей перезагрузки этого бэкенда. Удаление папки вручную само по себе не помогает. Плагин запишет её снова при следующем запуске, и бэкенд снова её опубликует. Пак, который вы положили сами, работает наоборот, потому что ничто его не регенерирует: удалите его из _shared/pack/external_packs/ на прокси, и он исчезнет со всех бэкендов при следующей отправке. См. управление файлами. Пак, который вы положили напрямую на один бэкенд, наоборот, никогда не публикуется, поскольку никакой плагин там не заявляет, что записал его. Бэкенд однажды сообщает об этом, называя файл, так что пустой вывод /nexohub contributions никогда не остаётся без объяснения. /nexohub contributions на прокси показывает, что хаб сейчас хранит, по бэкендам:
/nexohub contributions drop <server> [name] удаляет один вручную и отправляет изменения. Это нужно для бэкенда, который не может отозвать свой вклад сам: выведенного из эксплуатации, работающего на старом мосте или с contribute: false.

Отключение

Если вы предпочитаете, чтобы каждый сервер держал свои ассеты полностью при себе, а хаб никогда их не видел:
Или исключите одну папку на отдельном бэкенде:

Проверка, что всё сработало

/nexohub status показывает все бэкенды на одном паке. В логах бэкендов вы увидите, как каждый сервер публикует то, что создал, и пропускает остальное:
Сеть, обновляющаяся с версии, которая делилась исходными файлами этих плагинов, сохраняет присланные ей копии. NexoHub удаляет только внутри plugins/Nexo/, поэтому он называет их при загрузке, а не удаляет. Если оставить их, ничего не сломается; удалите их один раз на каждом бэкенде.