zh_cn:tutorial:datagen_setup
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
zh_cn:tutorial:datagen_setup [2022/09/04 06:08] – created solidblock | zh_cn:tutorial:datagen_setup [2023/11/18 08:58] – solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== 数据生成入门 ====== | ====== 数据生成入门 ====== | ||
- | 数据生成是 Fabric API 中的新模块,允许动态生成配方、语言文件、战利品表、进度以及几乎所有带有自定义 | + | 数据生成是 Fabric API 中的新模块,允许动态生成配方、语言文件、战利品表、进度以及几乎所有带有自定义提供器的一切。每次你修改生成数据的代码,你都会需要运行 gradle 任务 '' |
- | 实现数据生成,请在你的 '' | + | ===== 启用数据生成 |
- | <code groovy> | + | 启用数据生成 API 的方式是在使用 [[https:// |
- | loom { | + | |
- | runs { | + | |
- | // 添加一个新的 gradle 任务,会运行数据生成 API:“gradlew runDatagenClient” | + | |
- | datagenClient { | + | |
- | inherit client | + | |
- | name "Data Generation" | + | |
- | vmArg " | + | |
- | vmArg " | + | |
- | vmArg " | + | |
- | runDir "build/datagen" | + | {{https:// |
- | } | + | |
- | } | + | 这样我们就已经创建了 gradle 任务 '' |
- | } | + | |
+ | ===== 手动启用数据生成 ===== | ||
+ | |||
+ | 首先打开你的项目根文件夹中的 '' | ||
+ | |||
+ | <code groovy gradle.build [highlight_lines_extra="5, | ||
+ | |||
+ | // | ||
+ | // ... (文件剩余部分) | ||
+ | // | ||
- | // 将数据生成的文件添加到 jar 中。 | ||
sourceSets { | sourceSets { | ||
main { | main { | ||
Line 33: | Line 32: | ||
</ | </ | ||
- | 然后,创建一个类并继承 | + | 然后找到这个文件的 '' |
+ | |||
+ | <code groovy gradle.build [highlight_lines_extra=" | ||
+ | |||
+ | // | ||
+ | // ... (文件剩余部分) | ||
+ | // | ||
+ | |||
+ | loom { | ||
+ | |||
+ | // ... (已经存在的内容) | ||
+ | |||
+ | runs { | ||
+ | // 这会添加一个运行数据生成 API 的新 gradle 任务:" | ||
+ | datagen { | ||
+ | inherit server | ||
+ | name "Data Generation" | ||
+ | vmArg " | ||
+ | vmArg " | ||
+ | vmArg " | ||
+ | |||
+ | runDir " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // ... (文件剩余部分) | ||
+ | |||
+ | </ | ||
+ | |||
+ | * 注意:在一些情况下,你可能需要将 | ||
+ | |||
+ | 你可能注意到了,这里使用了变量 '' | ||
+ | |||
+ | <code properties> | ||
+ | // .. (文件的剩余部分) | ||
+ | |||
+ | modid=你的模组的id | ||
+ | |||
+ | // .. (文件的剩余部分) | ||
+ | </ | ||
+ | |||
+ | 然后,在项目中定义一个新的类 '' | ||
+ | * 其中的 '' | ||
<code java> | <code java> | ||
- | public class MyModDatagen | + | import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; |
+ | import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; | ||
+ | |||
+ | public class DataGeneration | ||
@Override | @Override | ||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | ||
- | // ... | + | |
} | } | ||
} | } | ||
</ | </ | ||
- | 这会注册你的数据生成入口点,允许在运行 | + | 然后我们需要在 '' |
- | <code javascript> | + | <code javascript |
- | " | + | { |
+ | |||
+ | // ...(文件的剩余部分) | ||
+ | |||
+ | | ||
" | " | ||
- | | + | |
+ | ], | ||
+ | " | ||
+ | " | ||
+ | ], | ||
+ | " | ||
+ | " | ||
] | ] | ||
+ | }, | ||
+ | |||
+ | |||
+ | // ...(文件的剩余部分) | ||
+ | |||
} | } | ||
</ | </ | ||
+ | |||
+ | 我们先看看我们现在已经有的内容是否正常第一次,或者是否有任何的错误,确认无误后继续。运行 '' | ||
+ | <code batch Windows> | ||
+ | gradlew runDatagen | ||
+ | </ | ||
+ | |||
+ | <code bash Linux> | ||
+ | ./gradlew runDatagen | ||
+ | </ | ||
+ | |||
+ | 看看结果并确认没有错误。 | ||
+ | |||
+ | * 你可以忽略:'' | ||
+ | |||
+ | 如果你遇到错误,那么缺少或者错误的东西应该会非常清楚,但如果你无法查明,你可能需要前往 Discord 或 QQ 群中寻求帮助。 | ||
+ | |||
+ | '' | ||
+ | |||
+ | ==== IDE 实现(可选) ==== | ||
+ | |||
+ | 由于我们不会总是开启终端,因此我们可以在 '' | ||
+ | |||
+ | 首先打开'' | ||
+ | |||
+ | 然后点击 '' | ||
+ | |||
+ | 在 '' | ||
====== 添加提供器 ====== | ====== 添加提供器 ====== | ||
Line 67: | Line 155: | ||
在这个例子中,我们会创建一个标签提供器,因为最容易理解。 | 在这个例子中,我们会创建一个标签提供器,因为最容易理解。 | ||
- | 首先,在你的 '' | + | 首先,在你的 '' |
// | // | ||
Line 74: | Line 162: | ||
private static class MyTagGenerator extends FabricTagProvider< | private static class MyTagGenerator extends FabricTagProvider< | ||
public MyTagGenerator(FabricDataGenerator dataGenerator) { | public MyTagGenerator(FabricDataGenerator dataGenerator) { | ||
- | super(dataGenerator, | + | super(dataGenerator, |
} | } | ||
Line 88: | Line 176: | ||
<code java> | <code java> | ||
// 创建名为“smelly_items”的物品标签。 | // 创建名为“smelly_items”的物品标签。 | ||
- | private static final TagKey< | + | private static final TagKey< |
@Override | @Override | ||
Line 97: | Line 185: | ||
.add(Items.ROTTEN_FLESH) | .add(Items.ROTTEN_FLESH) | ||
.addOptionalTag(ItemTags.DIRT); | .addOptionalTag(ItemTags.DIRT); | ||
- | // 在“generated”文件夹中,会自动生成“assets/ | + | // 在“generated”文件夹中,会自动生成“assets/ |
} | } | ||
</ | </ | ||
Line 104: | Line 192: | ||
<code java> | <code java> | ||
- | public class MyModDatagen | + | public class DataGeneration |
@Override | @Override | ||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { |
zh_cn/tutorial/datagen_setup.txt · Last modified: 2024/04/15 03:10 by solidblock