User Tools

Site Tools


zh_cn:tutorial:datagen_setup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
zh_cn:tutorial:datagen_setup [2023/05/04 10:49] solidblockzh_cn:tutorial:datagen_setup [2023/11/18 08:58] solidblock
Line 1: Line 1:
 ====== 数据生成入门 ====== ====== 数据生成入门 ======
  
-数据生成是 Fabric API 中的新模块,允许动态生成配方、语言文件、战利品表、进度以及几乎所有带有自定义 provider 的一切。+数据生成是 Fabric API 中的新模块,允许动态生成配方、语言文件、战利品表、进度以及几乎所有带有自定义提供器的一切。每次你修改生成数据的代码,你都会需要运行 gradle 任务 ''**runDatagen**''
  
-首先我们添加一个新的 Gradle 任务,运行我们来生成数据的代码,从而让 Minecraft 能够读都这些数据。每次你修改生成进度的代码(或其他数据生成可以生成的内容,如战利品表)你都需要运行 Gradle 任务 runDatagenClient。我们后面会做这个,但先打开你的 build.gradle 文件并添加以下的任务:+===== 启用数据生成 =====
  
-<code groovy> +启用数据生成 API 的方式是在使用 [[https://fabricmc.net/develop/template/|fabric template mod generator]] 创建项目时勾选 ''**Data generation**'' 框。
-loom { +
-    runs { +
-        // 添加一个新的 gradle 任务,会运行数据生成 API:“gradlew runDatagenClient” +
-        datagenClient { +
-            inherit client +
-            name "Data Generation" +
-            vmArg "-Dfabric-api.datagen" +
-            vmArg "-Dfabric-api.datagen.output-dir=${file("src/main/generated")}" +
-            vmArg "-Dfabric-api.datagen.strict-validation"+
  
-            runDir "build/datagen+{{https://i.imgur.com/NjIARzL.png}} 
-        } + 
-    } +这样我们就已经创建了 gradle 任务 ''**runDatagen**'',并且已经为 IDE 提供好了可以直接运行的配置,不需要使用终端。手动这么做也不会花费很长时间。 
-}+ 
 +===== 手动启用数据生成 ===== 
 + 
 +首先打开你的项目根文件夹中的 ''**build.gradle**'' 文件,并在文件的某处添加以下内容: 
 + 
 +<code groovy gradle.build [highlight_lines_extra="5,6,7,8,9,10,11,12,13"]> 
 + 
 +// 
 +// ... (文件剩余部分) 
 +//
  
-// 将数据生成的文件添加到 jar 中。 
 sourceSets { sourceSets {
     main {     main {
Line 32: Line 31:
 } }
 </code> </code>
 +
 +然后找到这个文件的 ''**loom**'' 部分,添加以下内容:
 +
 +<code groovy gradle.build [highlight_lines_extra="9,10,11,12,13,14,15,16,17,18,19,20"]>
 +
 +//
 +// ... (文件剩余部分)
 +//
 +
 +loom {
 +
 +    // ... (已经存在的内容)
 +
 +    runs {
 +        // 这会添加一个运行数据生成 API 的新 gradle 任务:"gradlew runDatagen"
 +        datagen {
 +            inherit server
 +            name "Data Generation"
 +            vmArg "-Dfabric-api.datagen"
 +            vmArg "-Dfabric-api.datagen.output-dir=${file("src/main/generated")}"
 +            vmArg "-Dfabric-api.datagen.modid=${modid}"
 + 
 +            runDir "build/datagen"
 +        }
 +    }
 +}
 +
 +// ... (文件剩余部分)
 +
 +</code>
 +
 +  * 注意:在一些情况下,你可能需要将 ''**inherit server**'' 这一行更改为 ''**inherit client**''
  
 你可能注意到了,这里使用了变量 ''${modid}'',这应该在 ''gradle.properties'' 文件中定义。检查其中是否存在,如果没有,你可以添加,就像这样: 你可能注意到了,这里使用了变量 ''${modid}'',这应该在 ''gradle.properties'' 文件中定义。检查其中是否存在,如果没有,你可以添加,就像这样:
Line 43: Line 74:
 </code> </code>
  
-然后,在项目中定义一个新的类 ''DataGeneration'' 并实现 ''DataGeneratorEntrypoint'',并添加到你的 ''fabric.mod.json''+然后,在项目中定义一个新的类 ''DataGeneration'' 并实现 ''DataGeneratorEntrypoint''
   * 其中的 ''onInitializeDataGenerator'' 方法会在我们前面创建的 Gradle 任务运行时调用。   * 其中的 ''onInitializeDataGenerator'' 方法会在我们前面创建的 Gradle 任务运行时调用。
  
Line 64: Line 95:
 { {
  
-  // ...(文件剩余部分)+  // ...(文件剩余部分)
  
   "entrypoints": {   "entrypoints": {
     "fabric-datagen": [     "fabric-datagen": [
-      "DataGeneration"+      "com.example.ExampleModDataGenerator"
     ],     ],
     "main": [     "main": [
-      "AdvancementsTutorial"+      "com.example.ExampleMod"
     ],     ],
     "client": [     "client": [
-      "AdvancementsTutorialClient"+      "com.example.ExampleModClient"
     ]     ]
   },   },
 +
  
   // ...(文件的剩余部分)   // ...(文件的剩余部分)
Line 84: Line 116:
  
 我们先看看我们现在已经有的内容是否正常第一次,或者是否有任何的错误,确认无误后继续。运行 ''runDatagenClient'' 任务。你可以让 IDE 为你做这个,或者只需要在你的项目的根目录中打开终端并输入: 我们先看看我们现在已经有的内容是否正常第一次,或者是否有任何的错误,确认无误后继续。运行 ''runDatagenClient'' 任务。你可以让 IDE 为你做这个,或者只需要在你的项目的根目录中打开终端并输入:
 +<code batch Windows>
 +gradlew runDatagen
 +</code>
  
-<code bash> +<code bash Linux
-./gradlew runDatagenClient+./gradlew runDatagen
 </code> </code>
  
Line 96: Line 131:
  
 ''src/main'' 中应该会有个叫做 ''generated'' 的新文件夹。目前它会是空的,但我们生成数据(例如进度)之后,这些文件就会被保存。 ''src/main'' 中应该会有个叫做 ''generated'' 的新文件夹。目前它会是空的,但我们生成数据(例如进度)之后,这些文件就会被保存。
 +
 +==== IDE 实现(可选) ====
 + 
 +由于我们不会总是开启终端,因此我们可以在 ''**Intellij IDEA**'' 中设置一个配置,通过下拉菜单运行命令。
 +
 +首先打开''**运行/调试配置**''菜单,要打开它,你可以打开“运行”按钮旁的下拉菜单,点击''**编辑配置..**''选项,也可以连续按两次 ''**Shift**'' 并在弹出的窗口中输入 ''**Edit Configuration**''
 +
 +然后点击 ''**'+'**'' 按钮,搜索 ''**gradle**'' 并选择。
 +
 +在 ''**运行**'' 输入框中,输入 ''**runDatagen**''。点击 ''**确定**'',然后你就可以直接运行配置而不需要打开终端了。
  
 ====== 添加提供器 ====== ====== 添加提供器 ======
zh_cn/tutorial/datagen_setup.txt · Last modified: 2024/04/15 03:10 by solidblock