MixinExtras 注入器
基本信息
| 属性 | 值 |
|---|---|
| 位置 | module-mixinbooterlegacy/src/main/java/io/github/tox1cozz/mixinextras/ |
| 注入器数 | 4(不是 3) |
| Java 文件 | 12 |
| 启用版本 | Minecraft 1.7.10 |
⚠️ 全部实现在 module-mixinbooterlegacy,不在 module-mixinextras
module-mixinextras 只有 2 个文件
(空 @Mod + MixinExtrasCore)。
真正的 MixinExtras 代码在本条目覆盖的目录里,共 12 个文件。
包路径是 io.github.tox1cozz.mixinextras(作者 tox1cozZ),
不是 com.llamalad7.mixinextras(上游 Fabric 原作者)。
后者是 build.gradle 里 relocate 的源包名。
4 个注解
| 注解 | 对应注入器 | 用途 |
|---|---|---|
ModifyReceiver |
ModifyReceiverInjector |
替换方法接收者 |
ModifyExpressionValue |
ModifyExpressionValueInjector |
改写表达式求值结果 |
ModifyReturnValue |
ModifyReturnValueInjector |
改写返回值 |
WrapWithCondition |
WrapWithConditionInjector |
条件成立时才应用原注入器 |
⚠️ WrapWithCondition 是第 4 个,
module-mixinextras/build.gradle 与 mcmod.info 都只强调前 3 个容易漏掉它。
按「MixinExtras = 3 个注解」统计会少 1 个。
4 组「注解 + InjectionInfo + Injector」
| 注解 | *InjectionInfo |
*Injector |
|---|---|---|
ModifyReceiver |
ModifyReceiverInjectionInfo |
ModifyReceiverInjector |
ModifyExpressionValue |
ModifyExpressionValueInjectionInfo |
ModifyExpressionValueInjector |
ModifyReturnValue |
ModifyReturnValueInjectionInfo |
ModifyReturnValueInjector |
WrapWithCondition |
WrapWithConditionInjectionInfo |
WrapWithConditionInjector |
4 个支撑类
| 类 | 作用 |
|---|---|
MixinExtrasAnnotationProcessor |
注解处理 |
MixinExtrasBootstrap |
引导 |
utils/CompatibilityHelper |
兼容性辅助 |
utils/InjectorUtils |
注入器工具 |
注入器与字符串标识
Injector 子类的父类构造各传入一个字符串形式的注解名:
| 注入器 | 传入 |
|---|---|
ModifyReceiverInjector |
"@ModifyReceiver" |
ModifyExpressionValueInjector |
"@ModifyExpressionValue" |
ModifyReturnValueInjector |
"@ModifyReturnValue" |
⚠️ 这三个字符串是运行期查找键(Mixin 用字符串匹配注解),
不是编译期引用。源码里搜不到 WrapWithCondition 传入的字符串
(它走的是包装语义而非直接标识),进一步说明第 4 个容易被漏。
相关条目
- module-mixinbooterlegacy - 实际实现所在模块
- module-mixinextras - 只有 2 文件的包装模块
- LoadControllerMixin - 消费 MixinExtras 的 mixin 示例
- mixin 配置对照 - 5 个
@Mixin的应用状态