[已解决]请问如何在远行星号mod使用mixin?
本帖最后由 Alphard 于 2026-6-27 03:30 编辑如题,已经用普通的手段写了自己的ClassLoader,绕过了反射限制
但是在尝试添加mixin时遇到了困难
嗯...要不要去加下MOD群? 我记得对BUG和验证状态之类的问题, 回复还是蛮有活力的说~ 本帖最后由 全自动电棍 于 2026-6-26 12:49 编辑
你可以看一下我手搓的Nanoforge,如果你的实现是pre-main类型的话
https://github.com/StarFabricated/NanoForge/tree/dev
以及Enaium的这个视频
https://www.bilibili.com/video/BV1NG4y1A7GN
但我看你好像是像用自定义cl搞侧载在原版框架下使用。
你可以考虑一下运行时类转换,在self-attach之后用ClassTransformer库,他这个有Mixin注解翻译
https://github.com/Lenni0451/ClassTransform
同作者还有一个库可以让你不用手动self-attach,并且提供了更多打破封装性的工具
https://github.com/Lenni0451/Reflect
关于self-attach你可以看一下冰蝎作者的这篇文章
https://www.cnblogs.com/rebeyond/p/15162264.html
self-attach其实挺简单的。只要有反射就行。
反射拿unsafe然后强制解除allowAttachSelf限制,之后就能随便用instrument了
但这种方式的类转换能力是有限制的,你无法对你加载前就已经执行过(且仅执行一次)的代码生效。
即使你转换了类,效果也是在你转换前便起效的,换句话说,你无法修改你加载前已经发生的事情。
原版Mixin其实也是有Agent的,但是没见到有人用它
页:
[1]