Table of Contents
模组编写技巧
基本(API)
Mixins
网络
陷阱
模组编写技巧
以下是与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。