Что вам нужно сделать
Проверьте две настройки в конфигах ваших других плагинов. Это единственное, что всё ещё может это сломать, и они разобраны ниже. Оставьте собственный конфиг каждого плагина на своём месте. Разные серверы могут запускать разные HUD и хранить разные модели. Это живёт вconfig.yml плагина, который
никогда не является общим.
Не копируйте сгенерированный вывод наверх на прокси. Папки вроде
plugins/Nexo/pack/external_packs/BetterHud/ пересобираются плагином при каждой
загрузке. NexoHub собирает их автоматически, а устаревшая копия в nexo-data/ только
вызывает путаницу.
Установите packs.mixed_content: true, если ваши серверы запускают разные HUD или
модели, чтобы ассеты каждого из них доходили до остальных. См.
ниже.
Это всё. Файлы плагинов не копируются между бэкендами, так что каждый сервер хранит
только то, что вы на него установили. Вы всё ещё можете положить файл централизованно в
_shared/_plugins/, и он победит. См. управление файлами.
Две настройки, которые нужно проверить
Обе — это плагин, обфусцирующий собственный пак. Их отключение не стоит вам никакой защиты, потому что Nexo в любом случае обфусцирует объединённый пак после. Когда она выключена, BetterModel называет каждую часть по её модели и кости, и два бэкенда с разными моделями собирают паки, которые согласуются друг с другом. Когда она включена, имена зависят от того, сколько частей этот сервер загрузил первым, так что торс волшебника на одном сервере оказывается молотом рыцаря на другом. Когда она выключена, BetterHUD называет сгенерированные файлы по HUD, к которому они относятся. Когда включена — называет ихa, b, c в порядке загрузки, так что первый
HUD вашего лобби и первый HUD вашего PvP-сервера оба называются a, и один
перезаписывает другой.
О каждой из них сообщается, но в разных местах. Бэкенд предупреждает о BetterModel при
загрузке:
external_packs/, так что на прокси ничто её не
сравнивает. Если вы не можете выключить эту настройку, установите
support.bettermodel: true на этом бэкенде, чтобы вместо этого делиться его исходными
файлами.
Конфликт BetterHUD ловится на прокси, который сообщает вам об этом, а не отправляет
сломанный пак:
contribute_exclude.
collision — одно из событий вебхука, так
что вам не нужно вычитывать это из консоли.
Вторая формулировка называет два плагина, а не два бэкенда. Она означает, что один
плагин затирает файл другого, и никакая настройка NexoHub это не исправит. Запускайте
только один из них или спросите их авторов, какой должен владеть этим файлом.
Серверы с разными HUD или моделями
Некоторые из этих плагинов нумеруют вещи по тому, что их собственный сервер случайно загрузил, так что одно и то же число означает разное на каждом бэкенде. NexoHub вместо этого хранит эти числа на прокси и раздаёт всем одинаковые.
Бэкенд сообщает при запуске, что именно он делает, называя только установленные на нём
плагины:
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-.
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/, поэтому он
называет их при загрузке, а не удаляет. Если оставить их, ничего не сломается; удалите
их один раз на каждом бэкенде.