Ошибка мода sodium #1

Open
opened 2026-10-24 19:11:13 +03:00 by LeterZP · 2 comments
Owner

При запуске игры зависимости не видят sodium в качестве мода

При запуске игры зависимости не видят sodium в качестве мода
Author
Owner

Эта ошибка появляется в некоторых случаях (нет точных и подробных данных для установки закономерностей) на новых версиях мода soidum. Она обусловлена принципом работы FML (Fancy Mod Loader, часть NeoForge) и его взаимодействием с внутренней структурой новых версий мода sodium.

В новых версиях этого мода его внутренняя структура представляет собой набор из основного мода, его зависимостей (некоторые части Forgified Fabric API), а также отдельного "локатора" для правильной и полноценной интеграции в sodium всех необходимых ему зависимостей. В идеале (как запланировано разработчиком), "локатор" мода sodium должен быть обнаружен FML при первом проходе списка модов, приоритетно запущен перед полным прочтением модов стандартным "локатором" FML, установить мод и все необходимые ему зависимости, а после вернуть управление FML для последующей загрузки модов.

Однако, иногда данный "локатор" не может быть обнаружен (или запущен) до отработки стандартного "локатора" FML (ModDiscoverer). Тогда, для обработки мода sodium будет применен стандартный алгоритм обработки, который при первом заходе в мод прочитает первый конфигурационный файл (который изначально предоставлялся для загрузчика мода, а не для самого мода), в котором мод указан как библиотека, но имеет тот же modID, что и основной мод, из-за чего пометит мод sodium как библиотеку, и на следующем этапе (обработки Jar-in-Jar зависимостей) успешно прочитает все встроенные в него зависимости (исключая основной мод, так как мод с таким modID уже существует). И на этом этапе возникает ошибка. Ведь мод, помеченный как библиотека, на этапе сортировки (выполняемом FML с помощью ModSorter) выбрасывается из списка обрабатываемых модов, что во-первых приводит к его полному отключению как мода, а во-вторых отключает доступ к нему всех модов-зависимостей, которые на него полагаются и ищут в этом списке.

Эта ошибка появляется в некоторых случаях (нет точных и подробных данных для установки закономерностей) на новых версиях мода soidum. Она обусловлена принципом работы FML (Fancy Mod Loader, часть NeoForge) и его взаимодействием с внутренней структурой новых версий мода sodium. В новых версиях этого мода его внутренняя структура представляет собой набор из основного мода, его зависимостей (некоторые части Forgified Fabric API), а также отдельного "локатора" для правильной и полноценной интеграции в sodium всех необходимых ему зависимостей. В идеале (как запланировано разработчиком), "локатор" мода sodium должен быть обнаружен FML при первом проходе списка модов, приоритетно запущен перед полным прочтением модов стандартным "локатором" FML, установить мод и все необходимые ему зависимости, а после вернуть управление FML для последующей загрузки модов. Однако, иногда данный "локатор" не может быть обнаружен (или запущен) до отработки стандартного "локатора" FML (ModDiscoverer). Тогда, для обработки мода sodium будет применен стандартный алгоритм обработки, который при первом заходе в мод прочитает первый конфигурационный файл (который изначально предоставлялся для загрузчика мода, а не для самого мода), в котором мод указан как библиотека, но имеет тот же modID, что и основной мод, из-за чего пометит мод sodium как библиотеку, и на следующем этапе (обработки Jar-in-Jar зависимостей) успешно прочитает все встроенные в него зависимости (исключая основной мод, так как мод с таким modID уже существует). И на этом этапе возникает ошибка. Ведь мод, помеченный как библиотека, на этапе сортировки (выполняемом FML с помощью ModSorter) выбрасывается из списка обрабатываемых модов, что во-первых приводит к его полному отключению как мода, а во-вторых отключает доступ к нему всех модов-зависимостей, которые на него полагаются и ищут в этом списке.
LeterZP referenced this issue from a commit 2026-10-25 13:50:41 +03:00
Author
Owner

На данный момент проблема решена довольно варварским способом.

Для решения данной ошибки мод sodium разбирается на различные компоненты: 4 части fabric api, основной мод и мод, отвечающий за его загрузку. Так как в рамках сборки уже есть моды, которые подтягивают вместе с собой в зависимостях fabric api (к примеру, iris и mafglib), 4 части fabric api мода soidum выбрасываются и дальше не используются (что, по факту, может привести к некоторым проблемам, ведь версия, необходимая моду sodium, и версия, подтягиваемая из других модов, может быть разной). Далее основной мод sodium устанавливается как отдельный независимый мод, а мод-загрузчик слегка переделывается (меняется название в конфиге, а также полностью убираются все Jar-in-Jar зависимости) и тоже устанавливается как отдельный независимый мод. Таким образом, мод sodium даже с использованием стандартной обработки модов устанавливается как мод (а не как библиотека) и продолжает работать.

Конечно, данное решение не идеально. Оно может привести к различным непредвиденным и неожиданным ошибкам. Поэтому данное решение лишь временное. Таким образом, данное issue все также остается открыто, и будет закрыто только если либо найдется более безопасное и надежное решение, либо проблема будет решена независимо на уровне мода (то есть командой разработчиков мода sodium) или на уровне загрузчика (то есть в данном случае FML).

На данный момент проблема решена довольно варварским способом. Для решения данной ошибки мод sodium разбирается на различные компоненты: 4 части fabric api, основной мод и мод, отвечающий за его загрузку. Так как в рамках сборки уже есть моды, которые подтягивают вместе с собой в зависимостях fabric api (к примеру, iris и mafglib), 4 части fabric api мода soidum выбрасываются и дальше не используются (что, по факту, может привести к некоторым проблемам, ведь версия, необходимая моду sodium, и версия, подтягиваемая из других модов, может быть разной). Далее основной мод sodium устанавливается как отдельный независимый мод, а мод-загрузчик слегка переделывается (меняется название в конфиге, а также полностью убираются все Jar-in-Jar зависимости) и тоже устанавливается как отдельный независимый мод. Таким образом, мод sodium даже с использованием стандартной обработки модов устанавливается как мод (а не как библиотека) и продолжает работать. Конечно, данное решение не идеально. Оно может привести к различным непредвиденным и неожиданным ошибкам. Поэтому данное решение лишь временное. Таким образом, данное issue все также остается открыто, и будет закрыто только если либо найдется более безопасное и надежное решение, либо проблема будет решена независимо на уровне мода (то есть командой разработчиков мода sodium) или на уровне загрузчика (то есть в данном случае FML).
LeterZP reopened this issue 2026-10-25 14:16:55 +03:00
LeterZP self-assigned this 2026-10-30 23:06:31 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LeterZP/TeStVISt-mods-client#1