Necesse: установка модов на сервер
Подписался в Steam Workshop на десяток модов, зашёл на сервер — а там будто ничего не изменилось. Знакомая история: Necesse не тянет моды с клиента на сервер и обратно, так что одной подпиской в Workshop задача не решается. Разберём по шагам, как реально прописать моды в dedicated-сервер — через SteamCMD в headless-режиме или руками, — и как не словить рассинхрон версий, из-за которого игроки просто не смогут зайти.
Содержание
Как устроены моды в Necesse
Моды для Necesse — это .jar-файлы: скомпилированный код на Java плюс mod.info в корне архива (там как минимум название, автор и версия игры, под которую собран мод) и папка resources с текстурами, звуками и локализацией. Основной канал распространения — Steam Workshop, привязанный к App ID клиентской игры 1169040. Не путайте его с App ID 1169370 — это отдельная запись для dedicated-сервера, через которую вы ставите сам сервер, но она не связана со страницей Workshop напрямую.
Ключевой нюанс, который ломает ожидания новичков: подписка на мод в Steam Workshop работает только для клиента игры. На сервер она никак не влияет — Necesse не синхронизирует список модов между сервером и игроками автоматически. Файлы .jar нужно физически положить в папку модов сервера, отдельно от того, что скачал себе игрок.
Подписка на моды и поиск Workshop ID
Даже если вы будете ставить моды на сервер вручную, Workshop ID мода всё равно понадобится — как минимум чтобы понимать, какую версию мода искать и на что подписывать игроков.
- Откройте страницу Workshop для Necesse и найдите нужный мод через поиск или фильтры по популярности.
- Нажмите «Подписаться» (Subscribe) — Steam скачает
.jarв клиентскую папку мода при следующем запуске игры. - Скопируйте числовой ID мода из адресной строки: в ссылке вида
https://steamcommunity.com/sharedfiles/filedetails/?id=3574352062идентификатор — это3574352062в конце URL.
Держите список используемых ID под рукой (простой текстовый файл или закреплённое сообщение в Discord сообщества) — он пригодится и для обновления сервера, и чтобы новые игроки быстро подписались на тот же набор.
Поднять сервер Necesse за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверУстановка модов на сервер через SteamCMD
На headless VPS у сервера нет Steam-клиента с кнопкой «Подписаться», поэтому мод скачивается напрямую через SteamCMD командой workshop_download_item. Важно: анонимный логин (+login anonymous), которым вы ставили сам сервер, для Workshop не годится — Steam отдаёт контент мастерской только аккаунтам, реально владеющим игрой.
steamcmd +login "ваш_steam_логин" \
+force_install_dir ~/necesse \
+workshop_download_item 1169040 3574352062 \
+quit
При первом запуске SteamCMD спросит пароль и, если включена двухфакторка, код Steam Guard — это нормально, интерактивно вводите один раз. Обратите внимание на App ID в команде: это 1169040 (клиентская игра, к которой привязан Workshop), а не 1169370 сервера.
Скачанный .jar окажется в ~/necesse/steamapps/workshop/content/1169040/3574352062/. Сам сервер моды из этой папки не читает — файл нужно скопировать в папку модов сервера:
mkdir -p ~/necesse/mods
cp ~/necesse/steamapps/workshop/content/1169040/3574352062/*.jar ~/necesse/mods/
Повторите workshop_download_item для каждого ID из вашего списка. Если арендуете сервер у хостинга с готовой панелью — там обычно есть поле вроде «Steam Workshop Mods», куда просто вставляются ID через запятую, а панель сама прогоняет эти же команды SteamCMD за вас.
Логин личным Steam-аккаунтом на арендованной машине — не самый приятный момент с точки зрения безопасности, даже с учётом того, что права доступа у вас к своей же VPS. Если не хочется хранить сессию личного аккаунта на сервере, есть вариант проще — следующий пункт.
Ручная установка без Steam-логина на сервере
Скачайте мод на своём ПК как обычный игрок — подпишитесь в Workshop, запустите Necesse один раз, чтобы клиент подтянул файлы. Готовый .jar найдётся в клиентской папке модов:
| ОС | Путь |
|---|---|
| Windows | %AppData%\Necesse\mods\ |
| Linux | ~/.config/Necesse/mods |
| macOS | ~/Library/Application Support/Necesse/mods/ |
Дальше просто копируете файл на сервер по SFTP/SCP — без входа в Steam на самой машине:
scp ./ИмяМода.jar necserver@ваш-vps-ip:~/necesse/mods/
Чтобы сервер вообще заметил папку mods, при запуске нужен флаг -mod <путь> либо -localdir, который заставляет сервер брать и сохранения, и моды из своей рабочей директории (тот же флаг, что описан в статье про первый запуск сервера). Обновлённая строка запуска в systemd-юните:
ExecStart=/home/necserver/necesse/StartServer-nogui.sh -world friends_world -owner Telim -localdir
После правки — sudo systemctl restart necesse. Моды подхватываются только при старте процесса: докинули .jar в папку, а сервер не перезапустили — считайте, что мода нет.
Синхронизация версий: сервер и клиенты должны совпадать
Это главный источник проблем с модами в Necesse. Раз клиент и сервер не обмениваются списком модов автоматически, у каждого игрока должен стоять ровно тот же набор .jar-файлов, что и на сервере — то же название, та же версия. Разошлись версии хотя бы одного мода — игрок получает ошибку подключения или несовпадение контента вместо нормального коннекта.
Что помогает на практике:
- Зафиксируйте список модов и их версий в одном месте (текстовый файл, закреплённое сообщение) и раздайте игрокам вместе с ID сервера.
- Попросите игроков отключить автообновление модов в Steam Workshop (в настройках подписки), если вы сами не готовы обновлять сервер день в день с автором мода.
- Обновляйте сервер и просите игроков обновляться синхронно, в одно окно — а не «кто когда вспомнил».
Отдельно: mod.info внутри .jar содержит поле с версией игры, под которую собран мод. Если Necesse обновилась, а автор мода ещё не выпустил патч — мод может отказаться грузиться или вести себя нестабильно уже независимо от того, что настроено на вашем сервере.
Автообновление модов и типичные ошибки
Для регулярного обновления модов на голой VPS проще всего повесить на cron повторный вызов workshop_download_item по вашему списку ID с последующим перезапуском сервиса — логика та же, что и для автообновления модов на любом другом сервере, общие принципы SteamCMD-апдейтов описаны и в отдельном разборе SteamCMD. Но с оговоркой: слепое автообновление модов без тестового окна рискует уронить совместимость раньше, чем вы это заметите — лучше обновлять руками и держать бэкап мира перед каждым апдейтом.
Частые причины, почему «моды не работают»:
- Флаг
-mod/-localdirне указан или указывает не туда — сервер стартует как обычно, без единой ошибки в логе, а игроки просто видят несовпадение контента. - Анонимный логин в SteamCMD вместо реального аккаунта —
workshop_download_itemлибо не отдаёт файл, либо скачивает пустышку. - Забыли перезапустить сервис после копирования
.jar— новый мод физически лежит в папке, но процесс его не подхватил. - У сервера и у игрока разные версии одного и того же мода — итог тот же, что при полностью разных модах: подключиться не выйдет.
- Слишком много модов, конфликтующих между собой по одинаковым ID предметов или структур — на загрузке мира сервер может упасть; если сталкивались с крашем именно на старте мира, отдельно разберите крэш при загрузке мира — там же и общий подход к поиску виновного мода методом отключения по одному.
Поднять сервер Necesse за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли обойтись вообще без Steam Workshop?
Да, .jar-файл можно получить любым легальным способом (например, скачать вручную на своём ПК через клиент) и просто скопировать в папку mods сервера — Workshop лишь самый удобный канал распространения, а не единственный.
Нужен ли на сервере Steam-аккаунт, купивший игру, чтобы качать моды?
Да, если качаете моды напрямую на сервере через steamcmd +login. Анонимного логина, которым обычно ставят сам сервер, для Workshop-контента недостаточно.
Где взять Workshop ID мода?
Это числа в конце ссылки на страницу мода в Steam Workshop, вида .../filedetails/?id=3574352062 — ID здесь 3574352062.
Сервер запущен, но моды не подхватились — что проверить в первую очередь?
Путь в -mod/-localdir, наличие .jar в правильной папке и то, был ли сервер перезапущен после копирования файла — моды читаются только при старте.
Обновление Necesse ломает старые моды?
Может, если автор мода ещё не выпустил обновление под новую версию игры — это зависит от конкретного мода, а не от настроек вашего сервера.