GasStation dev mixin

基本信息

属性 值
位置 module-gasstation/src/main/java/com/falsepattern/gasstation/mixins/mixin/dev/
类数 2(均未被应用)
启用版本 Minecraft 1.7.10

2 个类

类 目标 remap 注入
ModDiscovererMixin ModDiscoverer false @Shadow private List<ModCandidate> candidates;
LoaderMixin Loader false @Redirect(method = "identifyMods", at = @At(value = "INVOKE", …))

声明

@Mixin(value = ModDiscoverer.class, remap = false)
public abstract class ModDiscovererMixin implements IModDiscovererMixin { … }

@Mixin(value = Loader.class, remap = false)
public abstract class LoaderMixin { … }

⚠️ 两个都是 abstract class(另两个 LoadControllerMixin 是普通 class), 因为 ModDiscovererMixin 需 implements IModDiscovererMixin 暴露接口。

⚠️ 目标类 ModDiscoverer 与 Loader 都是 mixin loader 的 dev 环境内部类 (Loader 另需与 FML 的 cpw.mods.fml.common.Loader 区分)。

⚠️ 这两个 mixin 不会被应用

mixins.gasstation.json 的 mixins 数组是 [](空), 且 DevMixinPlugin.getMixins() 返回 Collections.emptyList()。

即:本仓 5 个 @Mixin 中,这 2 个是死代码。 详见 module-gasstation 与 mixin 配置对照。

⚠️ 放在 dev/ 子包本身也说明它们只服务于开发环境 (runClient),与 HackClasspathModDiscoveryTransformer 服务的是同一场景。

LoaderMixin 的 @Redirect

@Redirect(method = "identifyMods", at = @At(value = "INVOKE", …)) —— 重定向 identifyMods 方法中的某个调用,用以改变 mod 发现行为。 这是 dev 环境下让 classpath mod 可见的常规手法。

⚠️ @Redirect 在 0.8+ 已被 MixinExtras 的 @ModifyExpressionValue 取代 (见 module-mixinextras)。 在 1.7.10 移植场景下仍用 @Redirect 属历史写法。

相关条目