zh_cn:tutorial:modding_tips

模组编写技巧

以下是与Fabric有关的编写模组的小技巧。这些技巧是从API的使用经验中积累的。

基本(API)

  • 由于 Fabric API 开发的基于注入的方法,我们不需要以用户可见的方式彻底修改类。发现一些你做不到的东西时,你有时只需要找原版类的 Fabric 扩展。比如:
    • Block.Settings → FabricBlockSettings(除了 1.20.5)
    • EntityType.Builder → FabricEntityTypeBuilder
  • 对于内建的资源包或者数据包,请确保分别存在“assets/模组id”或“data/模组id”的目录!IDEA用户可能会发现他们偶然创建了“assets.模组id”目录——这不起作用。

Mixins

  • 要将类强制转换为它未实现的接口,或强制转换为最终类,或将 mixin 强制转换为目标类,你可以使用“(TargetClass) (Object) sourceClassObject”的技巧。
  • @Redirect 和 @ModifyConstant mixins 目前无法嵌套(多个模组同时应用在同一个地方)。这在开发中可能以后会改变——然而,目前,同 @Overwrite 一样,请尽量避免使用(或尝试将钩子桥接至 Fabric API,或者考虑放在小的 JAR 中 JAR API 中。
  • 如果你要添加非私有的自定义字段或方法,请加上“模组id$”的前缀,或者加上其他独一无二的字符串并注解为 @Unique。比如,“mymod$secretValue”而不是“secretValue”。这样可以避免多个模组以相同方式添加字段或者方法。

网络

  • 封包永远是在网络线程开始执行的,但它对 Minecraft 大多数内容的访问都不是线程安全的。因此,如果你确定你在做什么,你应该在网络线程解析封包(将所有值读出来),然后使用任务队列主服务器/客户端线程上执行额外操作。

陷阱

  • 避免使用 java.awt 包以及其子包。AWT 在有的系统上运作不佳。一些用户已经报告了该包会挂起 Minecraft。
zh_cn/tutorial/modding_tips.txt · Last modified: 2024/04/15 02:25 by solidblock