MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
用户:MashKJo/1.12.2模组开发教程/11.高级物品和方块 - 前置概念:修订间差异
(创建页面,内容为“首先,笔者想对能看到这里的读者,道一声恭喜!因为能学到这里,读者应该已经掌握了创建一个新物品或新方块的基本的标准化流程,且已经熟悉了相关的重要概念(如ItemStack和NBT格式的运用),这已经超越了许多新手modder了。不过应该也有读者存有疑问:之前学习的东西,充其量只能搞出一些没有任何额外行为和高级功能的,仅能被当作合成材料…”) |
(→一些枚举类: // Edit via Wikiplus) |
||
第5行: | 第5行: | ||
然而,覆写这些方法通常涉及到一些很重要也比较复杂的类,这些类比较琐碎,应用也非常广泛,如果真的按照“讲到了对应的专题再详细讲”这个原则安排内容,会导致一系列问题——例如,World类是一个非常重要的类,用到的地方超级多,但是读者想必也不希望掌握如何创建一个新维度后,再回来写高级的物品/方块吧?因此这一节就专门讲这些琐碎的类以及它们涉及到的一些重要概念。 |
然而,覆写这些方法通常涉及到一些很重要也比较复杂的类,这些类比较琐碎,应用也非常广泛,如果真的按照“讲到了对应的专题再详细讲”这个原则安排内容,会导致一系列问题——例如,World类是一个非常重要的类,用到的地方超级多,但是读者想必也不希望掌握如何创建一个新维度后,再回来写高级的物品/方块吧?因此这一节就专门讲这些琐碎的类以及它们涉及到的一些重要概念。 |
||
== 一些枚举类 == |
== 一些枚举类 == |
||
在给我们的高级的物品/方块实现一些功能时,我们会和很多枚举类打交道,如: |
|||
* EnumActionResult:这个枚举类有3个实例:SUCCESS、PASS和FAIL,它用于描述某个交互逻辑进行后,返回的结果(或者说执行结果)。其实它的意义不是那么大,因为它也就只是一个返回值而已,你可以在写一堆你自己的自定义逻辑后返回FAIL,本质上就是一个标记而已。不过对于物品的使用而言,SUCCESS和FAIL都不会在执行完主手上的物品的相关逻辑后,继续执行副手上对应物品的相关逻辑,而PASS则会,这个特性需要小小地注意一下。 |
|||
* EnumFacing:这是一个表示方向的枚举类,可以表示东、南、西、北、上、下六个方向,前面已经提过,此处不再赘述。 |
|||
* EnumHand和EnumHandSide:二者都用于表示主手和副手,不知道Mojang出于怎样的考量写出了这两个定位几乎一样的枚举类,反正用的时候也没区别,注意一下到底是哪个类型就行。 |
|||
* EntityEquipmentSlot:用于描述一个有物品栏的生物的物品栏槽位种类,总共有6种:主手、副手、头部、胸部、腿部、脚部。 |
|||
以上就是一些常用的枚举类,多亏了MCP,它们的类名和实例名都很容易让人顾名思义,用起来也比较简单,这里就不多说了。 |
|||
== 一些向量类 == |
== 一些向量类 == |
2024年12月24日 (二) 20:17的版本
首先,笔者想对能看到这里的读者,道一声恭喜!因为能学到这里,读者应该已经掌握了创建一个新物品或新方块的基本的标准化流程,且已经熟悉了相关的重要概念(如ItemStack和NBT格式的运用),这已经超越了许多新手modder了。不过应该也有读者存有疑问:之前学习的东西,充其量只能搞出一些没有任何额外行为和高级功能的,仅能被当作合成材料或建材使用的物品/方块,那么那些知名模组中的看起来很高级的物品/方块,都是怎么做出来的呢?
很简单,如果我们排除掉使用TileEntity的方块,那么剩下的那些高级的物品/方块,几乎都是通过覆写Item类或Block类下的若干方法实现的,这些方法有的是Minecraft原生支持的,还有一些是Forge塞进去的。你可能会看到Minecraft有些原生支持的方法被@Deprecated了,那可能是因为Forge觉得这个方法提供的形参不够多,对于对应功能的控制还不够精细,因此patch了一个更为强大的同功能重载方法。另外,如果你实在找不到可以覆写的方法,那么可以考虑监听一些事件。
然而,覆写这些方法通常涉及到一些很重要也比较复杂的类,这些类比较琐碎,应用也非常广泛,如果真的按照“讲到了对应的专题再详细讲”这个原则安排内容,会导致一系列问题——例如,World类是一个非常重要的类,用到的地方超级多,但是读者想必也不希望掌握如何创建一个新维度后,再回来写高级的物品/方块吧?因此这一节就专门讲这些琐碎的类以及它们涉及到的一些重要概念。
一些枚举类
在给我们的高级的物品/方块实现一些功能时,我们会和很多枚举类打交道,如:
- EnumActionResult:这个枚举类有3个实例:SUCCESS、PASS和FAIL,它用于描述某个交互逻辑进行后,返回的结果(或者说执行结果)。其实它的意义不是那么大,因为它也就只是一个返回值而已,你可以在写一堆你自己的自定义逻辑后返回FAIL,本质上就是一个标记而已。不过对于物品的使用而言,SUCCESS和FAIL都不会在执行完主手上的物品的相关逻辑后,继续执行副手上对应物品的相关逻辑,而PASS则会,这个特性需要小小地注意一下。
- EnumFacing:这是一个表示方向的枚举类,可以表示东、南、西、北、上、下六个方向,前面已经提过,此处不再赘述。
- EnumHand和EnumHandSide:二者都用于表示主手和副手,不知道Mojang出于怎样的考量写出了这两个定位几乎一样的枚举类,反正用的时候也没区别,注意一下到底是哪个类型就行。
- EntityEquipmentSlot:用于描述一个有物品栏的生物的物品栏槽位种类,总共有6种:主手、副手、头部、胸部、腿部、脚部。
以上就是一些常用的枚举类,多亏了MCP,它们的类名和实例名都很容易让人顾名思义,用起来也比较简单,这里就不多说了。