dataGen是一个很好用的功能,如果原版和neoforge提供的无法满足需求的时候,你可以自己实现DataProvider来创造自己的dataGen
1 | CompletableFuture<?> run(CachedOutput var1); |
DataProvider中有两个接口需要实现,其中run方法决定了生成的过程
1 | public CompletableFuture<?> run( CachedOutput cache) { |
在这个方法中,我们先清除缓存的部分,后通过抽象方法registerDialogs
实现需要的数据的写入。然后开始生成
1 | protected CompletableFuture<?> generateAllDialogs(CachedOutput cache) { |
这里我们有两个工具方法,第一个getPath指定了我们生成的目标文件。在data/modid/dialogs/
下面,生成一个json文件。
第二个工具方法负责把目标类的字段序列化为JsonElement
。
在主方法generateAllDialogs
中,我们把dialogSequences
列表中的所有元素都通过这两个方法加入到dataGen
的过程中。
这样,这个抽象的DataProvider就完成了,只需要继承这个类,并且在registerDialogs()
方法中加入所要生成的DialogSequence对象,就完成了。