仿生 ModLauncher 不会梦到 LaunchWrapper
MixinConnector
从 1.13 起,Forge 抛弃了原来的 LauncherWrapper,改用了 cpw 编写的 ModLauncher,也就是说,Mixin 原来基于 Tweaker 的那一套不能用了,为此,Mixin 引入了 MixinConnector
。
首先,你需要让一个类实现 IMixinConnector
,比如:
import org.spongepowered.asm.mixin.connect.IMixinConnector;
public class ExampleConnector implements IMixinConnector {
@Override
public void connect() {
}
}
然后在其中添加需要添加的 Mixin 配置文件:
import org.spongepowered.asm.mixin.Mixins;
import org.spongepowered.asm.mixin.connect.IMixinConnector;
public class ExampleConnector implements IMixinConnector {
@Override
public void connect() {
Mixins.addConfiguration("mixins.example.json");
}
}
最后,你需要在 MANIFEST.MF 文件中,指定这个 jar 文件使用的 Mixin Connector:
文件 META-INF/MANIFEST.MF
Manifest-Version: 1.0
MixinConnector: ExampleConnector
记得在最后空一行。
当然,也可以使用构建工具,比如 Gradle:
jar {
manifest.attributes(
'MixinConnector': 'ExampleConnector'
)
}
剩余的内容就是普通的 Mixin 编写了,包括编写 Mixin 类,配置文件。
ModLauncher 支持
当然,截至本文发出时,ModLauncher 生态仍然没有官方的 Mixin 支持,因此在 ModLauncher 引导 Mixin 需要一点奇淫巧计。
比如我的项目 https://github.com/IzzelAliz/MixinLoader ,下载之后扔到 mods 文件夹,你的 Forge 就有了 Mixin 环境。
其他特性
Mixin 0.8 带来了新的 tsrg
混淆表格式支持,以及 MixinGradle 对 ForgeGradle 3+ 的支持。升级至 MixinGradle 0.7 就可以快乐生成 refmap
了。
同时,现在 Mixin Config 可以继承自其他的,只需要
文件 mixins.example.json
{
"parent": "mixins.parent.json"
}
更多特性可以阅读官方的 Release note