Структура проєкту 1.21.11
Огляд структури проєкту мода Fabric.
WARNING
Ця сторінка написана для версії 1.21.11. Документація для старіших версій може бути неповною.
На цій сторінці буде описано структуру проєкту мода Fabric і призначення кожного файлу та теки в проєкті.
fabric.mod.json
Файл fabric.mod.json — це основний файл, який описує ваш мод для Завантажувача Fabric. Він містить таку інформацію, як ID мода, версія та залежності.
Найважливіші поля у файлі fabric.mod.json:
id: ID мода, який має бути унікальним.name: назва мода.environment: середовище, у якому працює ваш мод, наприкладclient,serverабо*для обох.entrypoints: точки входу, які надає ваш мод, наприкладmainабоclient.depends: моди, від яких залежить ваш мод.mixins: міксини, які надає ваш мод.
Нижче ви можете побачити приклад файлу fabric.mod.json — це файл 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.appearance.ExampleModAppearance",
"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.18.0",
"minecraft": "~1.21.11",
"java": ">=21",
"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
65
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
65
Точки входу
Як згадувалося раніше, файл fabric.mod.json містить поле під назвою entrypoints — це поле використовується для визначення точок входу, які надає ваш мод.
Генератор шаблонів модів усталено створює як main, так і client точки входу:
- Точка входу
mainвикористовується для загального коду та міститься в класі, який реалізуєModInitializer - Точка входу
clientвикористовується для клієнтського коду, а її клас реалізуєClientModInitializer
Ці точки входу викликаються відповідно, коли починається гра.
Ось приклад простої main точки входу, яка записує повідомлення на консоль під час запуску гри:
java
public class ExampleMod 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 = "example-mod";
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!");
// #tooltip_provider
ComponentTooltipAppenderRegistry.addAfter(DataComponents.DAMAGE, ModComponents.COMPONENT_WITH_TOOLTIP);
// #tooltip_provider
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
src/main/resources
Тека src/main/resources використовується для зберігання ресурсів, які використовує ваш мод, таких як текстури, моделі та звуки.
Це також розташування fabric.mod.json та будь-яких налаштовуваних файлів міксинів, які використовує ваш мод.
Активи зберігаються в структурі, яка показує структуру пакетів ресурсів — наприклад, текстура для блока буде зберігатися в assets/example-mod/textures/block/block.png.
src/client/resources
Тека src/client/resources використовується для зберігання ресурсів клієнта, таких як текстури, моделі та звуки, які використовуються лише на стороні клієнта.
src/main/java
Тека src/main/java використовується для зберігання вихідного коду Java для вашого мода — він існує як на клієнтському, так і на серверному середовищах.
src/client/java
Тека src/client/java використовується для зберігання клієнтського вихідного коду Java, наприклад коду рендера або логіки на стороні клієнта, наприклад постачальників кольорів блока.

