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 个容易被漏。

相关条目