====== Подмена зависимостей ====== В загрузчике 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'' не имел префикса, он был полностью заменен пустым объектом, по существу очистив его.