3,430
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(// Edit via Wikiplus) |
(// Edit via Wikiplus) |
||
| (未显示同一用户的3个中间版本) | |||
| 第3行: | 第3行: | ||
很简单,如果我们排除掉使用TileEntity的方块,那么剩下的那些高级的物品/方块,几乎都是通过覆写Item类或Block类下的若干方法实现的,这些方法有的是Minecraft原生支持的,还有一些是Forge塞进去的。你可能会看到Minecraft有些原生支持的方法被@Deprecated了,那可能是因为Forge觉得这个方法提供的形参不够多,对于对应功能的控制还不够精细,因此patch了一个更为强大的同功能重载方法。另外,如果你实在找不到可以覆写的方法,那么可以考虑监听一些事件。 | 很简单,如果我们排除掉使用TileEntity的方块,那么剩下的那些高级的物品/方块,几乎都是通过覆写Item类或Block类下的若干方法实现的,这些方法有的是Minecraft原生支持的,还有一些是Forge塞进去的。你可能会看到Minecraft有些原生支持的方法被@Deprecated了,那可能是因为Forge觉得这个方法提供的形参不够多,对于对应功能的控制还不够精细,因此patch了一个更为强大的同功能重载方法。另外,如果你实在找不到可以覆写的方法,那么可以考虑监听一些事件。 | ||
想必读者也看到了,覆写这些方法通常涉及到一些很重要也比较复杂的类,这些类比较琐碎,应用也非常广泛,如果真的按照“讲到了对应的专题再详细讲”这个原则安排内容,会导致一系列问题——例如,World类是一个非常重要的类,用到的地方超级多,但是读者想必也不希望掌握如何创建一个新维度后,再回来写高级的物品/方块吧?因此这一节就专门讲这些琐碎的类以及它们涉及到的一些重要概念。 | 想必读者也看到了,覆写这些方法通常涉及到一些很重要也比较复杂的类,这些类比较琐碎,应用也非常广泛,如果真的按照“讲到了对应的专题再详细讲”这个原则安排内容,会导致一系列问题——例如,World类是一个非常重要的类,用到的地方超级多,但是读者想必也不希望掌握如何创建一个新维度后,再回来写高级的物品/方块吧?因此这一节就专门讲这些琐碎的类以及它们涉及到的一些重要概念。 | ||
== 一些枚举类 == | == 一些枚举类 == | ||
| 第42行: | 第28行: | ||
== ActionResult<T> == | == ActionResult<T> == | ||
这是对EnumActionResult的一个扩展——有时候,Minecraft处理游戏逻辑时,在获取对某个对象的处理的结果时,不仅想知道处理是否成功(SUCCESS、PASS、FAIL这些结果),还想知道该对象的最终值,这个时候就需要用到这个类了,该类的构造很简单,就是<code>( | 这是对EnumActionResult的一个扩展——有时候,Minecraft处理游戏逻辑时,在获取对某个对象的处理的结果时,不仅想知道处理是否成功(SUCCESS、PASS、FAIL这些结果),还想知道该对象的最终值,这个时候就需要用到这个类了,该类的构造很简单,就是<code>(EnumActionResult typeIn, T value)</code>。实际上我们一般能见到的是ActionResult<ItemStack>。 | ||
== AxisAlignedBB == | == AxisAlignedBB == | ||
| 第88行: | 第74行: | ||
显然,这很让人摸不着头脑。不过Forge在<code>Constants.BlockFlags</code>类下提供了相应的常量,并通过注释和常量名说明了flags的具体含义。简单地说,Minecraft会从传入的幻数中获取很多信息,每一种信息的具体值都由传入的幻数对应的二进制数的每一位决定: | 显然,这很让人摸不着头脑。不过Forge在<code>Constants.BlockFlags</code>类下提供了相应的常量,并通过注释和常量名说明了flags的具体含义。简单地说,Minecraft会从传入的幻数中获取很多信息,每一种信息的具体值都由传入的幻数对应的二进制数的每一位决定: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! 常量名及含义 !! 数值(二进制形式) | |||
|- | |- | ||
| | | NOTIFY_NEIGHBORS(邻近方块更新) || 0b00001 | ||
|- | |- | ||
| | | SEND_TO_CLIENTS(将相关数据同步到客户端) || 0b00010 | ||
|- | |- | ||
| RENDERER_MAIN_THREAD(让方块的渲染状态在游戏主线程中立刻被更新) || 0b01000 | | | NO_RENDERER(该方块的渲染状态不会被更新) || 0b00100 | ||
|- | |||
| RENDERER_MAIN_THREAD(让方块的渲染状态在游戏主线程中立刻被更新) || 0b01000 | |||
|- | |||
| NO_OBSERVERS(该行为不会被观察者方块观测到) || 0b10000 | |||
|- | |- | ||
|} | |} | ||