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 属历史写法。
相关条目
- module-gasstation - 所属模块
- mixin 配置对照 - 5 个
@Mixin的应用状态 - HackClasspathModDiscoveryTransformer - 同为 dev 场景
- module-mixinextras -
@ModifyExpressionValue的来源