自定义物品和方块 1.21 Fabric
本篇教程的视频
本篇教程的源代码
Github地址:TutorialMod-Custom Item & Block-1.21
介绍
在本期教程中,我们将使用BlockBench
来制作自定义的方块和物品模型
因为在实际开发过程中,我们可能会需要一些特殊的模型,比如各种工业设备、家具、装饰物品等等,而原版的模型并不能满足我们的需求,这个时候我们就需要自己制作模型了
这期教程其实非常简单,前面我们已经写过了物品
和方块
的注册,无非在于本期教程使用的模型
是BlockBench
制作的,而不是原版的模型
不过,前面我们制作方块实体的时候,也用到了BlockBench
制作的那些模型,而这一期我们来详细讲讲如何使用这些自定义的模型
后面两期教程是这篇教程的衍生,讲讲自定义的方块状态
(BlockState
),包括方块朝向和可连接方块的方块状态
当然,BlockBench
的使用教程我这里就不讲了,哔哩哔哩上也有很多教程,大家可以去看看,后面我们也将使用它来制作我们的生物实体模型
另外,在建模前,我们要选择Java版模型
这个模块!!!不要选择其他的!!!
Java版支持的模型文件是json
格式的,其他模块无法导出json
格式的模型文件,同样的,Java版模型的限制也在这个模块的介绍中有
至于obj
格式的模型,游戏原生的渲染器是不支持的,而且Fabric
也没有obj
模型的加载器,但有从Forge
搬过来的第三方库,我们后面可以讲讲
自定义物品
注册物品
1 | public static final Item SIMPLE_ITEM = registerItems("simple_item", new Item(new Item.Settings())); |
首先我们注册一下我们的物品,这里就注册一个最简单的物品,如果你还想和我们前面写的探矿器
一样,那就自定义一个物品类,然后实例化它
加入物品栏
1 | entries.add(ModItems.SIMPLE_ITEM); |
数据文件
语言文件
1 | translationBuilder.add(ModItems.SIMPLE_ITEM, "Simple Item"); |
模型文件
1 | { |
简单的一个物品模型,贴图也是自动生成的,不想自己做就复制这里的好了
然后你记得在显示模式里面调节一下物品的显示位置,不然显示得会很奇怪
然后也不要忘了贴图文件
自定义方块
方块类
1 | public class SimpleBlock extends Block { |
我们这里先写一个自定义的方块类,继承Block
,然后我们写一个VoxelShape
,这个是方块的碰撞箱
方块的碰撞箱可以用BlockBench
生成,不过需要一个插件Mod Utils
,这个插件可以在BlockBench
的插件界面里面下载
安装好这个插件之后,在导出
这个菜单中,就会有一个Export Voxelshape
的选项,然后就可以导出碰撞箱了
但是这个还不完全智能,你得将所有的体块放在一个叫"VoxelShapes"的组下才能导出,名字不能错,大小写也是
然后在后面的教程中,我们还将根据我们的方块朝向来设置碰撞箱
注册方块
1 | public static final Block SIMPLE_BLOCK = register("simple_block", new SimpleBlock(AbstractBlock.Settings.copy(Blocks.STONE))); |
然后我们注册这个方块,这里我们注册的是一个最简单的方块,实例化我们写的SimpleBlock
类
加入物品栏
1 | entries.add(ModBlocks.SIMPLE_BLOCK); |
数据文件
语言文件
1 | translationBuilder.add(ModBlocks.SIMPLE_BLOCK, "Simple Block"); |
模型文件
1 | { |
这个是方块的模型文件,同样的,贴图也是自动生成的,不想自己做就复制这里的好了
当然,也不要忘记方块状态文件,这个用数据生成即可
1 | blockStateModelGenerator.registerSimpleState(ModBlocks.SIMPLE_BLOCK); |
这里就注册最简单的方块状态即可
而后跑好数据生成之后,我们就可以进入我们的游戏中看看我们的自定义物品和方块了