На этой странице будет рассмотрена структура проекта Fabric мода, и назначение каждого файла и папки в проекте.
fabric.mod.json
Файл fabric.mod.json - это главный файл который описывает ваш мод загрузчику Fabric. Он содержит такую информацию как идентификатор мода, версию и зависимости.
Важнейшие поля в файле fabric.mod.json:
id: Идентификатор мода (должен быть уникальным).name: Название мода.environment: Среда выполнения которую запускает ваш мод, напримерclient,server, или*для обоих.entrypoints: Точки входа вашего мода, напримерmainилиclient.depends: Зависимости вашего мода.mixins: Миксины, которые предоставляет ваш мод.
Ниже вы можете увидеть пример файла fabric.mod.json, этот файл fabric.mod.json для примерного проекта, лежащего в основе этого сайта документации.
Примерный проект fabric.mod.json
json
{
"schemaVersion": 1,
"id": "fabric-docs-reference",
"version": "1.0.0",
"name": "Fabric docs reference",
"icon": "assets/fabric-docs-reference/icon.png",
"environment": "*",
"entrypoints": {
"main": [
"com.example.docs.FabricDocsReference",
"com.example.docs.event.FabricDocsReferenceEvents",
"com.example.docs.command.FabricDocsReferenceCommands",
"com.example.docs.effect.FabricDocsReferenceEffects",
"com.example.docs.potion.FabricDocsReferencePotions",
"com.example.docs.sound.FabricDocsReferenceSounds",
"com.example.docs.damage.FabricDocsReferenceDamageTypes",
"com.example.docs.item.FabricDocsReferenceItems",
"com.example.docs.enchantment.FabricDocsReferenceEnchantments",
"com.example.docs.block.FabricDocsReferenceBlocks",
"com.example.docs.block.entity.FabricDocsReferenceBlockEntities",
"com.example.docs.component.FabricDocsReferenceComponents",
"com.example.docs.advancement.FabricDocsReferenceDatagenAdvancement",
"com.example.docs.networking.FabricDocsReferenceNetworking",
"com.example.docs.networking.basic.FabricDocsReferenceNetworkingBasic"
],
"client": [
"com.example.docs.client.command.FabricDocsReferenceClientCommands",
"com.example.docs.FabricDocsBlockEntityRenderer",
"com.example.docs.FabricDocsDynamicSound",
"com.example.docs.FabricDocsReferenceClient",
"com.example.docs.rendering.HudRenderingEntrypoint",
"com.example.docs.network.basic.FabricDocsReferenceNetworkingBasicClient"
],
"fabric-datagen": [
"com.example.docs.datagen.FabricDocsReferenceDataGenerator"
]
},
"mixins": [
"fabric-docs-reference.mixins.json",
{
"config": "fabric-docs-reference.client.mixins.json",
"environment": "client"
}
],
"depends": {}
}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
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
Точки входа
Как упоминалось ранее, файл fabric.mod.json имеет внутри поле entrypoint, это поле используется для указания точек входа, которые предоставляет ваш мод.
Генератор шаблонных модов по умолчанию создает как main, так и client точку входа:
- Точка входа
mainиспользуется для общего кода и содержится в классе, реализующемModInitializer - Точка входа
clientиспользуется для кода, специфичного для клиента, и ее класс реализуетClientModInitializer
Эти точки входа вызывается, когда игра запускается.
Вот пример простой main точки входа этих логов, которая записывает сообщение на консоль при запуске игры:
java
public class FabricDocsReference implements ModInitializer {
// This logger is used to write text to the console and the log file.
// It is considered best practice to use your mod id as the logger's name.
// That way, it's clear which mod wrote info, warnings, and errors.
public static final String MOD_ID = "fabric-docs-reference";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
@Override
public void onInitialize() {
// This code runs as soon as Minecraft is in a mod-load-ready state.
// However, some things (like resources) may still be uninitialized.
// Proceed with mild caution.
LOGGER.info("Hello Fabric world!");
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
src/main/resources
Папка src/main/resources используется для хранения ресурсов которые использует ваш мод, например текстуры, модели, и звуки.
Это так же папка хранения fabric.mod.json и все файлы конфигурации, которые использует ваш мод.
Ассеты хранятся в структуре, которая отражает структуру пакетов ресурсов — например, текстура для блока будет храниться в assets/mod-id/textures/block/block.png.
src/client/resources
Папка src/client/resources используется для хранения клиентоориентированных ресурсов.
src/main/java
Папка src/main/java используется для хранения исходного кода вашего мода, она существует на клиентской так и на серверной среде.
src/client/java
Папка src/client/java используется для хранения клиентоориентированного исходного кода, например код рендеринга или логика на стороне клиента - например предоставляемый цвет блока.

