====== Подмена зависимостей ======
В загрузчике Fabric версии ''0.11.1'' была представлена новая возможность - "подмена зависимостей".
**Перед использованием: Эта возможность разработана в первую очередь для контроля зависимостей для разработчиков модов.**
Как простой игрок, вам нет смысла от этого, но это будет полезно для разработчиков модов.
===== Требования =====
* Загрузчик Fabric ''0.11.1'' или новее
* Знание принципа работы с ''fabric.mod.json'' и с пятью типами зависимостей (''depends'', ''recommends'', ''suggests'', ''conflicts'', ''breaks'').
===== Начинаем =====
Для начала создайте файл ''fabric_loader_dependencies.json'' в папке ''config'' (которая находится в папке ''.minecraft'').
Далее напишите в файл следующее:
{
"version": 1,
"overrides": {
}
}
Давайте построчно разберём что делает этот файл.
Первое - ''version''. Этот пункт указывает на "внутренюю" версию зависимости. На момент написания страницы актуальная версия это ''1''.
Второе - ''overrides'' (пока что пусто). Этот Json-объект будет хранить в себе все зависимости от нашего мода.
===== Как использовать? =====
Внутри объекта ''overrides'' мы можем добавлять записи с ключом идентификатора загруженного мода и значением объекта Json. Например, если идентификатор загруженного мода равен ''mymod'', мы можем сделать следующее:
{
"version": 1,
"overrides": {
"mymod": {}
}
}
Как упоминалось выше, ''mymod'' имеет значение объекта Json. Внутри этого объекта мы можем добавить подмену зависимостей.
Ключи внутри объекта мода могут быть одним из 5 типов зависимостей (''depends'', ''recommends'', ''suggests'', ''conflicts'', ''breaks'').
Ключ может быть дополнительно снабжен префиксом ''+'' или ''-'' (например - ''"+depends"'', ''"-breaks"'').
Значение любого из этих ключей должно быть объектом Json. Этот объект Json имеет точно такую же структуру, что и объект зависимости ''fabric.mod.json''.
Если ключ имеет префикс ''+'', записи внутри этого объекта Json будут добавлены (или подменены, если уже существуют) в мод.
Если ключ имеет префикс ''-'', значение каждой записи полностью игнорируется, и Fabric Loader удалит эти записи из финальной карты зависимостей.
Если ключ не имеет префикса, объект зависимости будет полностью заменен. **Будьте осторожны с префиксом ваших ключей!**
===== Практический пример =====
Давайте предположим, что мод с идентификатором ''specificmod'' зависит **именно** от версии Minecraft ''1.16.4'', но мы хотим, чтобы он работал на других версиях 1.16. Давайте посмотрим, как мы можем это сделать:
{
"version": 1,
"overrides": {
"specificmod": {
"+depends": {
"minecraft": "1.16.x"
}
}
}
}
Зависимость ''"minecraft"'' теперь будет заменена, если она указана (и мы знаем, что это так). Есть другой способ сделать это:
{
"version": 1,
"overrides": {
"specificmod": {
"-depends": {
"minecraft": "IGNORED"
}
}
}
}
Как указано выше, значение ключа ''"minecraft"'' будет игнорироваться при удалении зависимостей. Если будет найдена зависимость с требованием идентификатора мода ''minecraft'', она будет удалена из нашего целевого мода ''specificmod''.
Мы также можем переопределить весь блок ''depends'', но с большой властью приходит большая ответственность. Будь осторожен.
Давайте предположим, что спецификация зависимостей ''specificmod'' (внутри ''fabric.mod.json'') выглядит примерно так:
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric": ">=0.28.0",
"minecraft": "1.16.4"
},
"breaks": {
"optifabric": "*"
},
"suggests": {
"anothermod": "*",
"flamingo": "*",
"modupdater": "*"
}
}
Помимо изменения зависимости ''minecraft'', мы также хотим удалить все зависимости ''suggests''. Мы можем сделать это вот так:
{
"version": 1,
"overrides": {
"specificmod": {
"-depends": {
"minecraft": ""
},
"suggests": {}
}
}
}
Поскольку ключ ''suggests'' не имел префикса, он был полностью заменен пустым объектом, по существу очистив его.