Как ограничить набор модов на сервере через ServerManager
ServerManager проверяет подключающиеся BepInEx-плагины по точным SHA-256 хешам DLL. Это позволяет администратору допускать согласованные сборки, а не только просить игроков сравнить названия модов. Правила описаны для сохранённой страницы ServerManager 1.2.3.
Выберите обязательные и допустимые плагины
| Каталог ServerManager | Условие допуска |
|---|---|
| required | У игрока должны присутствовать перечисленные плагины с одобренными хешами DLL |
| optional | Плагин можно не устанавливать; если он установлен, хеш должен быть разрешён |
| Не указан ни в одном каталоге | Для обычного игрока неперечисленный BepInEx-плагин отклоняется |
Эти каталоги содержат эталонные копии. Размещение DLL в required или optional не устанавливает плагин на сервер: моды, работающие на серверной стороне, отдельно должны находиться в BepInEx/plugins. ServerManager добавляет собственную работающую DLL в обязательную политику автоматически.
Соберите исходный набор правил
- Найдите ServerManager в активном каталоге сохранений; при -savedir используйте <savedir>/ServerManager.
- Составьте список плагинов, которые действительно нужны каждому игроку, и отдельный список необязательных.
- Скопируйте доверенные эталонные DLL в required и optional соответственно. Один и тот же плагин не помещайте одновременно в оба каталога.
- Проверьте журнал загрузки политики: повреждённое или ещё не готовое правило нельзя считать применённым.
- Проверьте подключение обычного игрока с согласованной сборкой, а не только вход администратора.
Можно разрешить несколько одобренных версий в одном каталоге. При этом сравниваются байты DLL: совпадающее имя файла или одинаковый видимый номер версии сами по себе не заменяют проверку хеша.
Как обновлять сборку без рассогласования
При смене модпака обновляйте эталонные копии вместе с реальными плагинами сервера и клиентов. Изменения папок перечитываются в фоне и применяются к новым подключениям. Некорректное обновление сохраняет предыдущую политику; пока первая политика загружается, игроку может потребоваться повторить вход.
Не считайте старый вход уже подключённого администратора проверкой новых правил. Сначала убедитесь по журналу, что нужный набор принят, затем проверяйте новое подключение обычного клиента. Серверные настройки, Discord-учётные данные и персонажей не включайте в распространяемый модпак.
Что не проверяется как отдельный плагин
Отдельные библиотеки вроде Newtonsoft.Json.dll и YamlDotNet.dll пропускаются, даже если скопированы в required или optional: об этом сообщается при загрузке политики. Но DLL, которая регистрирует BepInEx-плагин, подчиняется обычным правилам. Библиотека, встроенная внутрь плагина, входит в хеш этого файла. Нативные DLL как эталоны не поддерживаются.
Почему подключение может быть отклонено
- Отсутствует обязательный плагин или его DLL не соответствует разрешённой копии.
- Необязательный плагин установлен, но его хеш не разрешён.
- В клиенте остался неперечисленный BepInEx-плагин.
- Политика ещё загружается или обновление было отклонено, и действует предыдущий набор.
- Проверка проведена на администраторе: его исключения отличаются от обычных игроков.
Проверенные администраторы могут использовать дополнительные плагины или несовпадающие optional-моды, но required остаются обязательными и для них. Поэтому успешный вход администратора не доказывает, что обычный игрок с такой же сборкой будет допущен.
Гайд был полезен?