NovaEngineering-Source / StellarCore

Full range of optimization for a better 1.12.2.
https://www.curseforge.com/minecraft/mc-mods/stellarcore
GNU Lesser General Public License v3.0
35 stars 8 forks source link

feat: remove usage for MixinBooter `IEarlyMixinLoader` to runnable in… #5

Closed SettingDust closed 5 months ago

SettingDust commented 5 months ago

… environment that can't keep the mod filename

SettingDust commented 5 months ago

这个问题是 mixinbooter 没有进入 classpath 所以根本没有 IEarlyMixinLoader 类,不是 mixinbooter 未初始化

https://github.com/NovaEngineering-Source/StellarCore/commit/8c12bba5676515792be2df175f96f373c47b0e09 不会修复这个问题

这个问题是 coremod 实例化时按照文件名顺序,所以实例化某个 coremod 时 mixinbooter 没有进入 classpath,根本没有 IEarlyMixinLoader 类,不是 mixinbooter 未初始化

KasumiNova commented 5 months ago

必须打包 mixin 环境?

SettingDust commented 5 months ago

必须打包 mixin 环境?

不是的,在 injectdata 的时候 mixinbooter 的 coremod 已经实例化了,也就是提供了相应的 mixin 环境,所以只需要修改成这样就可以使用了

injectdata 是在 coremod 都实例化之后运行的,所以 mixinbooter 也是在这里添加配置,这里才能拿到所有的 coremod 实例

KasumiNova commented 5 months ago

唉,沟槽的模组改名

SettingDust commented 5 months ago

然后就是我看了一下 mixinbooter 的扫描,https://github.com/CleanroomMC/MixinBooter/blob/main/src/main/java/zone/rong/mixinbooter/MixinBooterPlugin.java#L69-L74 ,他支持一个 IMixinConfigHijacker 来禁止 mixin,如果需要支持就需要自己迭代一下所有 coremod,做一遍他那个逻辑,他没给 API 或者一个成员来让外部访问,感觉是设计问题

KasumiNova commented 5 months ago

不知道会不会破坏正常环境下的 mixin 注入,某些《特殊》模组会用自己的方法去注入代码。

SettingDust commented 5 months ago

不知道会不会破坏正常环境下的 mixin 注入,某些《特殊》模组会用自己的方法去注入代码。

添加配置的逻辑和 mixinbooter 是一致的,运行时机也是一致的,如果有问题应该也会破坏 mixinbooter