Руководство по внесению вклада 26.1.2
Руководство по внесению вклада в документацию Fabric
Этот сайт использует VitePress для генерации статического HTML-кода из различных Markdown-файлов. Вы можете ознакомиться с Markdown-расширениями для VitePress здесь.
Есть три пути для внесения своего вклада для сайта:
- Перевод документации
- Вклад в содержимое
- Руководство по внесению вклада
Все материалы должны соответствовать нашим рекомендациям по стилю.
Перевод документации
Если вы хотите перевести документацию на свой язык, вы можете сделать это на странице Fabric на Crowdin.
new-content Внесение контента
Основной способ внести вклад в документацию Fabric — это внесение контента.
Все материалы, добавляемые в контент, проходят следующие этапы, каждому из которых соответствует метка:
- locally: Подготовьте изменения и отправьте pull request
- stage:expansion: Рекомендации по расширению, если необходимо
- stage:verification: Проверка содержимого
- stage:cleanup: Грамматика, Линтинг...
- stage:ready: Готово к релизу!
Всё содержимое должно соответствовать нашим рекомендациям по стилю.
1. Подготовьте свои изменения
Этот сайт с открытым исходным кодом, он разрабатывается в репозитории GitHub, что означает, что мы полагаемся на поток GitHub:
- Создайте форк репозитория на GitHub
- Создайте новую ветку в вашем форке
- Сделайте свои изменения в этой ветке
- Откройте запрос на изменение в оригинальном репозитории
Вы можете прочитать больше о потоке GitHub.
Вы можете внести изменения из веб-интерфейса на GitHub, или разработать и предварительно просмотреть веб-сайт локально.
Клонирование вашего форка
Если вы хотите разрабатывать локально, вам нужно будет установить Git.
После этого клонируйте свой форк репозитория с помощью:
sh
# make sure to replace "your-username" with your actual username
git clone https://github.com/your-username/fabric-docs.git1
2
2
Установка зависимостей
Если вы хотите предварительно локально просматривать свои изменения, вам нужно будет установить Node.js версии 18 или выше и pnpm.
После этого убедитесь, что все зависимости установлены с помощью:
sh
pnpm install1
Запуск сервера разработки
Это позволит вам предварительно просматривать ваши изменения локально по адресу localhost:5173 и автоматически перезагрузит страницу при внесении изменений.
sh
pnpm dev1
Теперь вы можете открыть сайт и просматривать его из браузера, посетив http://localhost:5173.
Создание веб-сайта
Это скомпилирует все файлы с Markdown в статические HTML-файлы и поместит их в .vitepress/dist:
sh
pnpm build1
Предварительный просмотр созданного веб-сайта
Это запустит локальный сервер на порту 4173, отображающий содержимое, найденное в .vitepress/dist:
sh
pnpm preview1
Открытие запроса
Если вы довольны своими изменениями, вы можете push ваши изменения:
sh
git add .
git commit -m "Description of your changes"
git push1
2
3
2
3
Затем, зайдите по ссылке в выводе команды git push, чтобы открыть PR.
2. stage:expansion Рекомендации по расширению, если необходимо
Если команда по документированию считает, что вы могли бы расширить свой запрос, один из членов команды добавит метку stage:expansion к вашему запросу с комментарием, объясняющим, что, по их мнению, вы могли бы расширить. Если вы согласны с этим предложением, вы можете дополнить свой реквест.
Если вы не хотите дополнять свой реквест, но будете рады, что кто-то другой дополнит его позже, лучше всего создать пост на странице проблем и объяснить, что, по вашему мнению, можно было бы дополнить. Затем группа по документированию добавит метку требуется помощь к вашему PR.
3. stage:verification Проверка содержимого
Это самый важный этап, поскольку он гарантирует точность контента и его соответствие руководству по стилю Fabric Documentation.
На этом этапе необходимо ответить на следующие вопросы:
- Все ли содержания верно?
- Весь ли контент актуален?
- Охватывает ли контент все случаи, например, различные операционные системы?
4. stage:cleanup: Очистка
На этом этапе происходит следующее:
- Исправление любых грамматических ошибок с помощью LanguageTool
- Анализ всех файлов Markdown с помощью
markdownlint - Форматирование всего кода Java с использованием Checkstyle
- Другие различные исправления и улучшения
framework Вносящий вклад в фреймворк
Фреймворк относится к внутренней структуре веб-сайта. Любые запросы, которые изменяют фреймворк веб-сайта, будут помечены меткой framework.
К вашему сведению, вы должны делать pull requests, касающиеся фреймворка, только после консультации с командой документации на Discord-сервере Fabric или через issue.
INFO
Изменение файлов боковой панели и конфигурации панели навигации не считается pull request, касающимся фреймворка.
Стандарты оформления
Если вы насчёт чего-то не уверены, можете задать свой вопрос в Fabric Discord или через GitHub Discussions.
Пишите оригинал на американском английском
Вся оригинальная документация написана на английском языке в соответствии с американскими правилами грамматики.
Добавляйте данные в начало файла
Все страницы должны иметь заголовок и описание.
Не забывайте также добавлять ваше имя пользователя GitHub в поле authors в начале Markdown-файла! Таким образом, мы сможем отдать вам должное.
yaml
---
title: Title of the Page
description: This is the description of the page.
authors:
- your-username
---1
2
3
4
5
6
2
3
4
5
6
Добавляйте "якоря" к заголовкам
Каждый заголовок должен иметь "якорь", который используется для создания ссылки на этот заголовок:
md
## This Is a Heading {#this-is-a-heading}1
Якорь должен состоять из строчных букв, цифр и дефисов.
Размещайте код внутри Example мода
Если вы создаете или изменяете страницы, содержащие код, размещайте этот код в соответствующем месте внутри Example мода (он находится в папке /reference репозитория). Затем используйте функцию импорта фрагментов/кусков кода, которую предоставляет VitePress, чтобы встроить этот код на страницу.
Например, чтобы подсветить строки с 15 по 21 в файле ExampleMod.java из этого мода:
md
<<< @/reference/latest/src/main/java/com/example/docs/ExampleMod.java{15-21}1
java
package com.example.docs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.Identifier;
import net.minecraft.tags.BiomeTags;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
import net.fabricmc.fabric.api.item.v1.ItemComponentTooltipProviderRegistry;
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
import com.example.docs.component.ModComponents;
import com.example.docs.worldgen.ExampleModWorldPlacedFeatures;
//#entrypoint
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);
//#entrypoint
//#particle_register_main
// This DefaultParticleType gets called when you want to use your particle in code.
public static final SimpleParticleType SPARKLE_PARTICLE = FabricParticleTypes.simple();
//#particle_register_main
//#entrypoint
@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!");
//#entrypoint
//#particle_register_main
// Register our custom particle type in the mod initializer.
Registry.register(BuiltInRegistries.PARTICLE_TYPE, Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "sparkle_particle"), SPARKLE_PARTICLE);
//#particle_register_main
// :::datagen-world:biome-modifications
// Spawns everywhere in the overworld
BiomeModifications.addFeature(
BiomeSelectors.foundInOverworld(),
GenerationStep.Decoration.UNDERGROUND_ORES,
ExampleModWorldPlacedFeatures.DIAMOND_BLOCK_ORE_PLACED_KEY
);
// :::datagen-world:biome-modifications
// :::datagen-world:selective-biome-modifications
// Spawns in forest biomes only
BiomeModifications.addFeature(
BiomeSelectors.tag(BiomeTags.IS_FOREST),
GenerationStep.Decoration.VEGETAL_DECORATION,
ExampleModWorldPlacedFeatures.DIAMOND_TREE_PLACED_KEY
);
// :::datagen-world:selective-biome-modifications
// #tooltip_provider
ItemComponentTooltipProviderRegistry.addAfter(DataComponents.DAMAGE, ModComponents.COMPONENT_WITH_TOOLTIP);
// #tooltip_provider
// #advanced_tooltip_provider
ItemComponentTooltipProviderRegistry.addAfter(DataComponents.DAMAGE, ModComponents.ADVANCED_CUSTOM_COMPONENT);
// #advanced_tooltip_provider
//#entrypoint
}
}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
66
67
68
69
70
71
72
73
74
75
76
77
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
66
67
68
69
70
71
72
73
74
75
76
77
Если вам нужен более широкий диапазон контроля, вы можете использовать функцию transclude из markdown-it-vuepress-code-snippet-enhanced.
Например, это встроит секции файла выше, которые помечены тегом #entrypoint:
md
@[code transcludeWith=#entrypoint](@/reference/latest/src/main/java/com/example/docs/ExampleMod.java)1
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!");
}
}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
Создавайте боковую панель для каждого нового раздела
Если вы создаете новый раздел, вам следует создать новую боковую панель в папке .vitepress/sidebars и добавить её в файл i18n.mts.
Если вам нужна помощь с этим, спросите в дискорде Fabric в канале #docs.
Добавьте новые страницы в соответствующие боковые панели
При создании новой страницы вы должны добавить ее на соответствующую боковую панель в папке .vitepress/sidebars.
Опять же, если вам нужна помощь, спросите в дискорде Fabric в канале #docs.
Используйте /assets для хранения медиаконтента
Любые изображения должны находиться в соответствующем месте в папке /assets.
Используйте относительные ссылки!
Это требуется для правильной работы системы с разными версиями, которая заранее обрабатывает ссылки для добавления версии. Если вы используете обычные ссылки, номер версии не будет добавлен к ссылке.
Также, вы не должны добавлять расширение файла к ссылке.
Например, чтобы сослаться на страницу /players/index.md со страницы /develop/index.md, вам нужно сделать следующее:
md
This is a relative link!
[Page](../players/index)md
This is an absolute link.
[Page](/players/index)md
This relative link has the file extension.
[Page](../players/index.md)