07-datagen · git:20260818.b1ccba0 · 2026-08-18 · sha256 4d629aecd15d7116
07-datagen git:20260818.b1ccba0A
Immutable. This exact content is served forever at /api/v1/blob/4d629aecd15d7116.
# 07 — 数据生成器
> 适用版本:Fabric 1.14.4
---
## 约束
### 核心原则
- Fabric 1.14.4 **没有** `fabric-datagen` / `DataGeneratorEntrypoint`(那是 1.17+)
- 配方、战利品表、标签、模型、语言都靠 **手写 JSON** 放到 `src/main/resources/`
- 手动 JSON 遵循当时的数据包 / 资源包格式
- **禁止**编造 `DataGeneratorInitializer`、`init_data`、`ExistingFileHelper`
- **禁止**手动编辑 Loom 管理的生成目录(如果工程里有)
---
## Decision Flow
### Decision: 选择生成数据类型
```
IF 生成物品/方块模型 JSON
→ 手动编写 JSON 在 src/main/resources/assets/{modid}/models/
IF 生成语言文件
→ 手动编写 JSON 在 src/main/resources/assets/{modid}/lang/
IF 生成配方/战利品表/进度
→ 手动编写 JSON 在 src/main/resources/data/{modid}/
IF 生成标签(tags)
→ 手动编写 JSON 在 src/main/resources/data/{modid}/tags/
```
---
## 手动资源文件(推荐方式)
### 物品模型 JSON
```json
// src/main/resources/assets/examplemod/models/item/my_item.json
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "examplemod:item/my_item"
}
}
```
### 语言文件
```json
// src/main/resources/assets/examplemod/lang/en_us.json
{
"item.examplemod.my_item": "My Item",
"block.examplemod.my_block": "My Block",
"entity.examplemod.my_entity": "My Entity"
}
```
### 方块状态 JSON
```json
// src/main/resources/assets/examplemod/blockstates/my_block.json
{
"variants": {
"": { "model": "examplemod:block/my_block" }
}
}
```
```json
// src/main/resources/assets/examplemod/models/block/my_block.json
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "examplemod:block/my_block"
}
}
```
### 配方 JSON
```json
// src/main/resources/data/examplemod/recipes/my_recipe.json
{
"type": "minecraft:crafting_shaped",
"pattern": [
"AAA",
"A A",
"AAA"
],
"key": {
"A": { "item": "minecraft:diamond" }
},
"result": {
"item": "examplemod:my_item",
"count": 1
}
}
```
## 运行
```bash
./gradlew build
```
手写资源随 jar 打包,没有 `runDatagen` 这一步。
## 常见错误
- ❌ 去写 `DataGeneratorInitializer` / `init_data` — 1.14.4 没有 fabric-datagen
- ❌ 引用未注册的资源 — 游戏找不到模型或配方
- ❌ 语言文件放错目录 — 应在 `assets/{modid}/lang/`
## 扩展点
| 配合 Skill | 协作说明 |
|-----------|---------|
| `mc-item` | 手写物品模型 JSON |
| `mc-block` | 手写方块模型和掉落表 JSON |
| `mc-registry` | 配方引用已注册的物品 |