Перевизначення залежностей 26.1.2
Дізнайтеся, як перевизначати залежності, встановлені в fabric.mod.json мода.
WARNING
Перевизначення залежностей використовується для надання розробникам пакетів модів контролю над модами. Це не призначено для звичайних гравців.
Перш ніж продовжувати, рекомендується зрозуміти структурування полів залежностей мода.
Іноді, збираючи пакет модів, ви можете зіткнутися з модами з марними вимогами до залежностей — наприклад, мод може бути надто жорстким і вимагати Minecraft 26.1, попри те, що він також працює на 26.1.2.
Щоб протистояти цьому, Завантажувач Fabric дозволяє перевизначати вимоги залежностей, тож ви можете спробувати завантажити мод у версію Minecraft, для якої він не призначений.
TIP
Перевизначення залежностей має бути лише тимчасовим рішенням, якщо це можливо. Якщо мод активно підтримується, подумайте про те, щоб повідомити про цю несумісність у системі відстеження проблем і дозволити розробникам, які працюють над ним, подбати про проблему.
Налаштування
INFO
Для цілей цього прикладу ми будемо використовувати наступний fabric.mod.json для мода з ID example-mod. У будь-який момент ви можете перемикати вкладки в блоці коду, щоб побачити, як перевизначення залежностей впливає на цей fabric.mod.json.
fabric.mod.json
json
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric-api": ">=0.28.0",
"minecraft": "26.1"
},
"breaks": {
"optifabric": "*"
},
"suggests": {
"anothermod": "*",
"flamingo": "*",
"modupdater": "*"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Спочатку створіть файл під назвою fabric_loader_dependencies.json в теці .minecraft/config.
Далі ми заповнюємо файл наступним шаблонним умістом:
json
{
"version": 1,
"overrides": {
"example-mod": {}
}
}1
2
3
4
5
6
2
3
4
5
6
json
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric-api": ">=0.28.0",
"minecraft": "26.1"
},
"breaks": {
"optifabric": "*"
},
"suggests": {
"anothermod": "*",
"flamingo": "*",
"modupdater": "*"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Розгляньмо це рядок за рядком.
По-перше, у нас є version, який визначає версію специфікації перевизначення залежностей, яку ми хотіли б використовувати. На момент написання цієї сторінки останньою версією є версія 1.
По-друге, у нас є об’єкт overrides, який міститиме всі наші перевизначення залежностей для різних модів. Для початку він містить порожній запис для example-mod, до якого ми можемо додати перевизначення залежностей.
Ключі всередині об’єкта мода можуть бути одним із 5 типів залежностей (depends, recommends, suggests, conflicts, breaks). Значення будь-якого з цих ключів має бути об'єктом JSON. Цей об’єкт JSON має ту саму структуру, що й об'єкт залежності fabric.mod.json.
Ключ може мати префікс + або - (наприклад, "+depends", "-breaks").
Якщо ключ має префікс +, записи всередині цього об'єкта JSON буде додано (або замінено, якщо вже існує) до мода.
json
{
"version": 1,
"overrides": {
"example-mod": {
"+depends": {
"minecraft": ""
}
}
}
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Перевизначення залежностей
Припустімо, що мод з ID example-mod точно залежить від версії Minecraft 26.1, але ми хочемо, щоб він працював на інших версіях 26.1. Подивімося, як ми можемо це зробити:
json
{
"version": 1,
"overrides": {
"example-mod": {
"depends": {
"minecraft": "26.1.x"
}
}
}
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
json
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric-api": ">=0.28.0",
"minecraft": "26.1.x"
},
"breaks": {
"optifabric": "*"
},
"suggests": {
"anothermod": "*",
"flamingo": "*",
"modupdater": "*"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Залежність `"minecraft" тепер буде перевизначена, якщо вказана (і ми знаємо, що це так). Є інший спосіб зробити це:
json
{
"version": 1,
"overrides": {
"example-mod": {
"-depends": {
"minecraft": "IGNORED"
}
}
}
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
json
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric-api": ">=0.28.0",
"minecraft": "26.1.x"
},
"breaks": {
"optifabric": "*"
},
"suggests": {
"anothermod": "*",
"flamingo": "*",
"modupdater": "*"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Як зазначено вище, значення ключа "minecraft" буде проігноровано під час видалення залежностей. Якщо знайдено залежність із вимогою ID мода minecraft, її буде видалено з нашого цільового мода example-mod.
Ми також можемо перевизначити весь блок depends, але з великою потужністю приходить велика відповідальність. Будьте обережні.
Окрім зміни залежності minecraft, ми також хочемо видалити всі залежності suggests. Ми можемо зробити це, видаливши префікс із ключа suggests, який замінює його порожнім об'єктом, фактично очищаючи його. Це виглядало б так:
json
{
"version": 1,
"overrides": {
"example-mod": {
"-depends": {
"minecraft": ""
},
"suggests": {}
}
}
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
json
{
"depends": {
"fabricloader": ">=0.11.1",
"fabric-api": ">=0.28.0",
"minecraft": "26.1"
},
"breaks": {
"optifabric": "*"
},
"suggests": {}
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11




