MixinRuntime

一个能使Mixin更强大的Minecraft模组。 它可以让Mixin注入之前无法注入的类,并让Mixin类可以直接使用。

管理

MixinRuntime

MixinRuntime 是一款 NeoForge 模组,可绕过标准 Mixin 库要求在游戏启动早期定义配置的限制,在运行时动态注入 Mixin 配置。

特性

  • 运行时 Mixin 注入:利用 Java Instrumentation API,无需重启游戏即可动态注册新的 Mixin 配置,甚至能重转换已加载到内存中的类。
  • 内部类修改:对核心平台类进行补丁,包括 MixinProcessor、ModuleClassLoader、ModLauncher 和 ClassTracker,以支持运行时注入能力。
  • 实用工具类:提供丰富的工具类用于与 Mixin 内部交互,包括 MixinAgentUtils、MixinTransformerUtils、MixinProcessorUtils 和 MixinConfigUtils,通过反射访问 Mixin 内部结构。
  • 模块系统绕过:利用 ModuleUtils 打开所有模块进行深度反射访问,从而绕过 Java 平台模块系统 (JPMS) 的限制。

工作原理

模组通过多阶段引导流程运行:

  1. Agent 加载:MixinRuntimePlugin 提取内嵌的 MixinRuntimeAgent.jar,并使用 Attach API 将其自附加到 JVM,从而获得 java.lang.instrument.Instrumentation 的访问权限。
  2. 环境修补:应用类转换器修改 ModuleClassLoader、类追踪器以及 MixinProcessor 自身,抑制运行时注入期间的错误。
  3. Mixin 配置注入:利用 MixinProcessorUtils 将新的 IMixinConfig 实例动态注入到活跃的 Mixin 处理器的配置列表中。

兼容性

  • Minecraft 版本:1.20.1,1.21 和 1.21.10
  • 许可证:MIT

该模组是 VulkanModNeoForge 的核心前置模组,目前仅测试了与 VulkanModNeoForge 的兼容性。由于 MixinRuntime 修改了 ModLauncher 和 ModLoader 的内部类,与其他模组的兼容性目前未知,可能会引起冲突。