燃料 1.21 NeoForge 长线教程计划
本篇教程的视频
(待发布)
本篇教程的源代码
(待发布)
简介
燃料是Minecraft中用于燃烧物品的资源,比如熔炉、烟熏炉等,还有其他模组的各类工业设备
燃料
在NeoForge中添加燃料和Forge类似,不过这里来讲两个方法
一个是自定义物品类重写getBurnTime方法,另一个是使用json数据文件来添加燃料
这里我们先讲自定义物品类的方法
自定义物品
首先我们创建一个自定义物品类ModFuelItem,继承自Item类
1 | public class ModFuelItem extends Item { |
然后我们添加一个burnTime字段,并重写getBurnTime方法
1 | private int burnTime = 0; |
这里的burnTime字段用于存储燃料的燃烧时间,单位是ticks,20ticks等于1秒
构造函数也需要修改,添加一个burnTime参数
1 | public ModFuelItem(Properties properties, int burnTime) { |
值得注意的是,getBurnTime方法同样也不是Item类中的方法,而是IItemExtension接口中的方法
IItemExtension接口是NeoForge为物品提供的一个扩展接口,允许我们为物品添加一些自定义的功能,它也让Item类实现了这个接口
前身是IForgeItem接口
注册燃料物品
接下来我们在ModItems类中注册一个燃料物品
1 | public static final DeferredItem<Item> ANTHRACITE = |
这里我们注册了一个名为ANTHRACITE的燃料物品,燃烧时间为1600ticks,即80秒,也是一般燃料(比如煤炭)的燃烧时间
这样,我们就成功为模组添加了一个燃料物品,玩家可以使用它来燃烧物品了
添加到物品栏
最后,我们还需要将燃料物品添加到物品栏中,方便玩家获取
1 | output.accept(ModItems.ANTHRACITE); |
使用json数据文件添加燃料
这里我们再讲讲另一种方法
先注册一个普通的物品
1 | public static final DeferredItem<Item> ANTHRACITE2 = |
然后我们创建一个数据生成类ModDataMapProvider
1 | public class ModDataMapProvider extends DataMapProvider { |
然后重写gather方法,注意使用带参数的gather方法
1 |
|
这里我们使用builder方法来获取一个FURNACE_FUELS数据生成器
然后使用add方法来添加燃料数据,第一个参数是物品的ResourceLocation,
第二个参数是一个FurnaceFuel对象,表示燃料数据,第三个参数表示是否覆盖已有数据
FurnaceFuel的构造函数接受一个整数参数,表示燃烧时间,单位是ticks
这个数据生成类需要在数据生成器注册类中调用
1 | generator.addProvider(event.includeServer(), new ModDataMapProvider(packOutput, lookupProvider)); |
数据文件
另外的就是常规的数据文件了,同样也使用数据生成来写
语言文件
1 | add(ModItems.ANTHRACITE.get(), "Anthracite"); |
模型文件
1 | basicItem(ModItems.ANTHRACITE.get()); |
贴图
还要将物品的贴图放到对应的文件夹中
之后就可以启动游戏进行测试了











