fabric.mod.json 26.1.2
Дізнайтеся про особливості fabric.mod.json.
Файл fabric.mod.json — це файл метаданих, який використовується Завантажувачем Fabric для завантаження модів. Його потрібно розмістити в кореневому каталозі JAR, щоб мод завантажився.
Попередньо визначений файл fabric.mod.json включено в шаблон мода, або його може згенерувати Fabric Loom.
Ви можете переглянути початковий код особливостей для fabric.mod.json v1. Нижче ви також знайдете файл fabric.mod.json, який використовується в цьому сайті.
fabric.mod.json приклада мода
json
{
"schemaVersion": 1,
"id": "example-mod",
"version": "1.0.0",
"name": "Example Mod",
"icon": "assets/example-mod/icon.png",
"environment": "*",
"entrypoints": {
"main": [
"com.example.docs.ExampleMod",
"com.example.docs.event.ExampleModEvents",
"com.example.docs.command.ExampleModCommands",
"com.example.docs.effect.ExampleModEffects",
"com.example.docs.potion.ExampleModPotions",
"com.example.docs.sound.ExampleModSounds",
"com.example.docs.damage.ExampleModDamageTypes",
"com.example.docs.item.ExampleModItems",
"com.example.docs.enchantment.ExampleModEnchantments",
"com.example.docs.block.ExampleModBlocks",
"com.example.docs.block.entity.ExampleModBlockEntities",
"com.example.docs.menu.ExampleModMenuType",
"com.example.docs.component.ExampleModComponents",
"com.example.docs.advancement.ExampleModDatagenAdvancement",
"com.example.docs.networking.ExampleModNetworking",
"com.example.docs.networking.basic.ExampleModNetworkingBasic",
"com.example.docs.debug.ExampleModDebug",
"com.example.docs.saveddata.ExampleModSavedData",
"com.example.docs.entity.attribute.ExampleModAttributes",
"com.example.docs.recipe.ExampleModRecipes",
"com.example.docs.entity.ExampleModEntity",
"com.example.docs.gamerule.ExampleModGameRules"
],
"client": [
"com.example.docs.client.command.ExampleModClientCommands",
"com.example.docs.ExampleModBlockEntityRenderer",
"com.example.docs.ExampleModDynamicSound",
"com.example.docs.ExampleModClient",
"com.example.docs.ExampleModScreens",
"com.example.docs.rendering.CustomRenderPipeline",
"com.example.docs.rendering.HudRenderingEntrypoint",
"com.example.docs.rendering.RenderingConceptsEntrypoint",
"com.example.docs.network.basic.ExampleModNetworkingBasicClient",
"com.example.docs.appearance.ExampleModAppearanceClient",
"com.example.docs.keymapping.ExampleModKeyMappingsClient",
"com.example.docs.ExampleModRecipesClient",
"com.example.docs.entity.ExampleModCustomEntityClient"
],
"fabric-datagen": ["com.example.docs.datagen.ExampleModDataGenerator"]
},
"mixins": [
"example-mod.mixins.json",
{
"config": "example-mod.client.mixins.json",
"environment": "client"
}
],
"depends": {
"fabricloader": ">=0.19.0",
"minecraft": "~26.1",
"java": ">=25",
"fabric-api": "*"
},
"accessWidener": "example-mod.classtweaker"
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Обов’язкові поля
Наступні поля є обов’язковими, щоб Fabric міг завантажити ваш мод.
schemaVersion: має бути першим записом, а значення має бути завжди1. Потрібно, щоб Завантажувач Fabric правильно аналізував файл.id: рядкове значення, яке визначає ідентифікатор мода. Має починатися з літери. Може містити лише літери ASCII, цифри, нижні лінії, або дефіси. Від 2 до 64 символів.version: рядкове значення, яке визначає версію мода, очікується відповідність особливості схематичного версіювання 2.0.0.
json
"schemaVersion": 1,
"id": "example-mod",
"version": "1.0.0"1
2
3
2
3
Метадані
name: рядок, який визначає зручну назву мода. Якщо його немає, усталено використовується id.description: рядок, який визначає опис мода. Якщо його немає, усталено буде порожньо.
json
"name": "Example Mod",
"description": "This is an example description! Tell everyone what your mod is about!",1
2
2
Контакти
contact: список, який визначає контактну інформацію для проєкту. Деякі загальні поля включають:
email: рядок, що визначає контактну електронну пошту, що стосується мода. Має бути дійсна адреса електронної пошти.homepage: рядок, який визначає домашню сторінку проєкту або користувача. Має бути дійсна адреса HTTP/HTTPS.irc: рядок, який визначає канал IRC, що відноситься до мода. Повинен мати дійсний формат URL-адреси, наприклад:irc://irc.esper.net:6667/charsetдля#charsetв EsperNet — порт є необов’язковим і вважається 6667, якщо його немає.issues: рядок, який визначає засіб відстеження проблем проєкту. Має бути дійсна адреса HTTP/HTTPS.sources: рядок, який визначає репозиторій початкового коду проєкту. Повинна бути дійсна URL-адреса, однак це може бути спеціалізована URL-адреса для наданої VCS (наприклад, Git або Mercurial).
Список не є вичерпним — моди можуть надавати додаткові нестандартні ключі, такі як discord, slack, twitter… Якщо можливо, це мають бути дійсні URL-адреси.
json
"contact": {
"homepage": "https://fabricmc.net",
"sources": "https://github.com/FabricMC/fabric-example-mod"
}1
2
3
4
2
3
4
Автори та дописувачі
authors: масив авторів мода. Записи можуть бути або рядком, або об'єктом із полями, переліченими нижче.contributors: масив дописувачів мода. Записи можуть бути або рядком, або об'єктом із полями, переліченими нижче.
Поля:
name: обов’язковий рядок для справжнього імені особи або імені користувача.contact: додатковий об’єкт для контактної інформації особи. Те саме, що [contact] (#contact) верхнього рівня.
json
"authors": [
"Me!",
{
"name": "Tiny Potato",
"contact": {
"homepage": "https://fabricmc.net",
"sources": "https://github.com/FabricMC/fabric-example-mod"
}
}
]1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Ліцензія
license: рядок або масив, що визначає інформацію про ліцензування. Щоб допомогти автоматизованим інструментам, рекомендується використовувати SPDX License Identifiers для ліцензій з відкритим кодом.
Це повинно забезпечити мінімальний набір ліцензій, який задовольняє весь пакет мода. Іншими словами, хтось, хто бажає використовувати або розповсюджувати ваш мод, повинен лише відповідати переліченим тут ліцензіям. Якщо частини вашого коду мають подвійну ліцензію, виберіть бажану ліцензію. Цей список не обов’язково забороняє вам надавати додаткові права чи застосовувати різні ліцензії для певних людей у кожному конкретному випадку.
json
"license": "CC0-1.0"1
Значок
icon: рядок або список, що визначає значок мода. Значки — це квадратні файли PNG. Пакети ресурсів Minecraft використовують 128×128, але це не є жорсткою вимогою — проте рекомендується степінь двох. Може надаватися в одній із двох форм:- Шлях до одного файлу PNG.
- Список ширини зображень до шляхів до їхніх файлів.
json
"icon": "assets/example-mod/icon.png"1
Завантаження мода
Середовище
environment: рядкове значення, яке визначає, в яких середовищах мод має працювати:*: усюди. Усталено.client: лише на стороні фізичного клієнта. Якщо встановлено, ваш мод не завантажуватиметься на виділених серверах.server: лише на стороні фізичного сервера. Якщо встановлено, ваш мод не завантажуватиметься на клієнтах, включаючи гру наодинці та локальну мережу.
json
"environment": "*"1
Точки входу
entrypoints: об'єкт, який визначає основні класи, які завантажуватиме ваш мод.main: масив імен класів рядків, які реалізуютьModInitializer.client: масив імен класів рядків, які реалізуютьClientModInitializer. Ця точка входу запускається післяmainі лише на стороні фізичного клієнта.server: масив імен класів рядків, які реалізуютьDedicatedServerModInitializer. Ця точка входу запускається післяmainі лише на стороні фізичного сервера.
Завантажувач Fabric надає ці три основні точки входу, але інші моди можуть надавати власні. Наприклад, Fabric API надає fabric-datagen для точок входу генератора даних.
Кожна точка входу може завантажувати кілька класів і навіть методи чи статичні поля. На приклад:
json
"main": [
"net.fabricmc.example.ExampleMod",
"net.fabricmc.example.ExampleMod::handle"
]1
2
3
4
2
3
4
TIP
Якщо ви не використовуєте Java, вам слід ознайомитися з документацією мовного адаптера. Для Kotlin це в README мови Kotlin.
JAR-и
jars: масив JAR, який буде вкладено у ваш мод. Якщо використовуватиincludeдля ваших залежностей, Loom автоматично заповнить це. Кожен запис є об’єктом, що містить ключfileзі шляхом до вкладеного JAR з вашого мода. На приклад:
json
"jars": [
{
"file": "nested/vendor/dependency.jar"
}
]1
2
3
4
5
2
3
4
5
Адаптери мови
languageAdapters: список класів, які реалізуютьLanguageAdapter.
json
"languageAdapters": {
"kotlin": "net.fabricmc.language.kotlin.KotlinAdapter"
}1
2
3
2
3
Міксини
mixins: список файлів налаштувань міксинів. Кожен запис є або шляхом до файлу налаштувань міксинів у JAR вашого мода, або об'єктом, що містить такі поля:config: шлях до файлу налаштування міксинів у JAR вашого мода.environment: поводиться так само, як поле environment верхнього рівня. На приклад:
json
"mixins": [
"example-mod.mixins.json",
{
"config": "example-mod.client-mixins.json",
"environment": "client"
}
]1
2
3
4
5
6
7
2
3
4
5
6
7
Розширювачі доступу
accessWidener: рядок, що ідентифікує файл розширення доступу або твікери класу.
json
"accessWidener": "example-mod.classtweaker"1
Постачальники
provides: масив ID модів, які будуть псевдонімами мода. Завантажувач Fabric розглядатиме ці ID так, ніби відповідні моди існують. Якщо будь-який інший мод використовує один з них, він не буде завантажений.
json
"provides": [
"example_mod"
]1
2
3
2
3
Вирішення залежностей
Наступні ключі прийматимуть список залежностей. Подробиці про те, як структурувати список, див. нижче:
depends: для залежностей, потрібних для запуску. Якщо якась залежність відсутня, Завантажувач Fabric спричинить збій.recommends: для залежностей, необов'язкових для запуску. Якщо якась залежність відсутня, Завантажувач Fabric виведе попередження до журналу.suggests: для залежностей, необов'язкових для запуску. Використовуйте це як свого роду метадані.breaks: для модів, які на вашу думку спричинять збій. Якщо надано такий мод, Завантажувач Fabric спричинить збій.conflicts: для модів, які на вашу думку спричинять помилки, тощо. Якщо надано такий мод, Завантажувач Fabric виведе попередження до журналу.
Семантичне версіювання
Ключем кожного запису є ID мода залежності.
Значення кожного ключа — це рядок або масив рядків, що оголошують підтримувані діапазони версій залежності. Якщо це масив, лише один із діапазонів має відповідати, щоб обмеження було виконано.
Ось кілька прикладів діапазонів і що вони позначають. Спробуйте використати Semver check від jubianchi, щоб перевірити, які значення задовольнять обмеження.
Приклади семантичного версіювання
Примітка: Minecraft не дотримується семантичного версіювання. За потреби Fabric перекладе версію Minecraft на її еквівалент у семантичній версії. Приклади: 26.1->26.1.0, 26.1-snapshot-1->26.1-alpha.1, 26w14a->26.1.1-alpha.26.14.a.
| Діапазон | Опис | Збіги | Конфлікти |
|---|---|---|---|
* | Будь-яка версія (не рекомендовано) | 26.1.2, 24w14potato… | немає |
26.1.2 | Тільки точна версія | 26.1.2 | 26.1, 26.1.1, 26.2… |
| <Range r="26.1.0 | 26.1.1" /> | Будь-який діапазон | |
[26.1.0, 26.1.1] | Еквівалент 26.1.0 || 26.1.1 | 26.1, 26.1.1 | 26.1.2, 26.2… |
>26 | Версії вище (виключно) | 26.1.2, 26.2… | 26, 25.x… |
>=26.1 | Ця або вища версія (включно) | 26.1, 26.1.2, 26.2… | 26.0, 25.x… |
<=26.1 | Ця або нижча версія (включно) | 26.1, 26.0, 25.x… | 26.1.2, 26.2… |
>26 <26.2 | Між двома версіями (обидві виключено) | 26.1, 26.1.2, знімки… | 26, 26.2… |
>=26.1 <26.2 | Між двома версіями (включаючи нижню межу) | 26.1, 26.1.2, знімки… | 26.0, 26.2… |
26.1.x | Будь-який патч мінорної версії | 26.1, 26.1.2, знімки… | 26.2, 27.x… |
~26.1 | Те саме, що 26.1.x | 26.1, 26.1.2, знімки… | 26.2, 27.x… |
^26.1 | Будь-яка версія з тою самою головною версією | 26.1.2, 26.2, 26.3… | 25.x, 27.x… |
json
"depends": {
"example-mod": "*",
"minecraft": [
"26.1",
"26.1.1"
]
}
"suggests": {
"another-mod": ">1.0.0"
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Власні поля
Ви можете додати будь-яке поле, яке хочете додати всередину поля custom. Завантажувач ігнорував би їх. Однак настійно рекомендується розміщувати поля у просторі імен, щоб уникнути конфліктів з іншими модами.






