Mixin与AT
当你的mod开发到一定程度时,很有可能会遇到需要修改原版已有内容的情况。在这一章,我们将会介绍两个有用的工具,来帮助你达成这个目标。
Mixin
Mixin是一个非常强大的工具,它基于ASM,帮助你方便地修改原版内容。
对了,Mixin的正确读法是mix-in,而不是mi-xin。虽然你非要读后者也没事。
tip
你应该尽量避免使用Mixin。请先确认已经没有其他方法(例如监听事件或继承子类),或是替代方法非常不划算后再使用Mixin。Mixin的加入可能会极大地提高错误出现的可能性和诊断错误的难度。
caution
在Minecraft模组编写时,Mixin的作用范围仅限于MC本身和其他mod,不能对其他依 赖进行修改。比如说,net.minecraft.commands.arguments.coordinates.Vec3Argument是一个有效的Mixin目标,而com.mojang.brigadier.arguments.DoubleArgumentType则不行。
如果你确实需要对DoubleArgumentType这样的第三方类进行修改,那不妨考虑继承后再@Override等其他方法。
Mixin在理论上确实可以用于其他非Minecraft项目。
caution
所有的Mixin类应该放且仅放在mixin包中。mixin包中也不应该包含普通类,比如你的方块或者实体什么的。
当然,你也可以分好几个包,但多数情况下这没有必要。
Mixin通过各式各样的注解和背后的注解处理器来完成大多数工作。以下先介绍一些常用或者常见的注解说明。
@Mixin标记这是一个Mixin类,并在参数中指定目标类。
info
关于Mixin类、目标类、父类、