3,334
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(→添加一个新方块的流程: // Edit via Wikiplus) |
(→添加方块对应的物品形式: // Edit via Wikiplus) |
||
== 添加方块对应的物品形式 ==
进入游戏后,读者可能会感到奇怪:创造模式物品栏里,并没有我们的新方块,用/give指令也得不到,只有用/setblock指令才能把该方块放置在世界中。那是因为我们还没有注册该方块的物品形式。
方块的物品形式首先是物品,实际上是ItemBlock——这是Item的一个子类,构造器接受一个Block参数的传入,这种设计很易于理解。我们直接实例化ItemBlock类,再通过监听RegistryEvent.Register<Item>事件即可把它注册进游戏。注意:我们不需要给方块的物品形式的实例调用一系列setter方法,但必须调用setRegistryName——且它的registryName和对应方块的registryName必须相同。
可能会有读者对前面Block类的setUnlocalizedName和setCreativeTab这两个setter感到奇怪——因为其实这两个方法只对物品有意义——毕竟放在世界中的方块需要什么对应的创造模式物品栏?是这样,这两个方法是为ItemBlock服务的。我们用我们的Block对象构造出一个ItemBlock后,该ItemBlock对象中的对应的创造模式物品栏、unlocalizedName这些信息会自动等于对应的Block对象中的对应信息的,这也是为什么我们不需要给ItemBlock调用一大堆的setter。
ItemBlock类中覆写了Item类中的一些方法,导致了ItemBlock对象的通用逻辑为:玩家在世界中对着非空气方块右键时,如果坐标合法(如Y坐标在0~255这个范围内),就会在该处放置一个对应的方块,同时手上的ItemStack的数量这一字段减一。除非你真的有特殊需求,否则你只需要直接实例化ItemBlock类得到方块的物品形式就好了,不用去先继承ItemBlock。
好了,现在再运行游戏,应该可以在创造模式物品栏中看到我们的方块的物品形式了。
== 为方块和ItemBlock提供模型和材质文件 ==
|