柱类方块 1.20 Fabric 长线教程计划
本篇教程的视频
本篇教程的源代码
GitHub地址:TutorialMod-Pillar-1.20.1
本篇教程目标
- 学会制作可连接方块的变种,判断竖向
柱类方块类
这里我们直接来写这个柱类方块,因为我们之前已经写过一个可连接方块了,而这一次写的柱子要比之前的沙发还要简单
之前的沙发判断的是左右
,而这一次,我们只要判断上下
的方位就好了
PillarBlock
创建PillarBlock类,继承自Block
1 | public class PillarBlock extends Block { |
方块属性
同样的,我们来写一个方块属性的枚举类
1 | public enum Type implements StringIdentifiable{ |
同样还是实现StringIdentifiable
这个接口,然后按照之前的写法来写4
个不同的状态
声明方块属性
1 | public static final EnumProperty<Type> TYPE = EnumProperty.of("type2", Type.class); |
因为我们之前已经注册了一个EnumProperty
类型的type
,所以这里的注册id
要改一下
然后进行方块属性的初始化
1 | this.setDefaultState(this.getStateManager().getDefaultState().with(TYPE, Type.SINGLE)); |
那么默认就是SINGLE
这个状态
还要将方块属性加入到方块中
1 |
|
重写方法
最后我们就要重写方法,改变方块的方块状态
1 |
|
这里我们要重写getStateForNeighborUpdate
方法
两个布尔值
分别判断当前方块的上下是否为相同的方块,然后根据这两个布尔值来设置不同的方块状态
好了,这个方块类就这样写完了
其实方块状态能玩出很多花活来,你可以用方块状态来实现很多各种各样的方块,
即便你现在不是很熟练,写得多了,自然就会了
注册方块
注册
注册方块和之前一样,直接注册即可
1 | public static final Block PILLAR = register("pillar", |
实例化PillarBlock
,同样,因为这个是Blockbench
制作的非实心方块,所以这里要设置nonOpaque()
物品栏
同样的,我们也要注册物品栏
1 | entries.add(ModBlocks.PILLAR); |
数据文件
语言文件
1 | translationBuilder.add(ModBlocks.PILLAR, "Pillar"); |
模型文件
1 | blockStateModelGenerator.registerParentedItemModel(ModBlocks.PILLAR, ModelIds.getBlockModelId(ModBlocks.PILLAR)); |
方块状态呢,你可以按照之前我们写沙发那样来写,不过我这里就直接自己写了,只让它生成一个方块物品的模型文件就好了
registerParentedItemModel
方法就是生成一个与方块同名的物品模型文件
1 | { |
这个是方块状态文件
测试
那么最后我们就可以进入游戏进行测试了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Tomorrow-Land!