SuperAccessTransformer

将大多数类的修饰符设置为public和非final运行时属性,并支持在开发过程中使用它们。

管理

SuperAccessTransformer (SAT) 是一个开源的 Minecraft 1.21+ coremod,通过在运行时注入 Java Agent 来修改访问修饰符,将大多数 private、protected 和 final 成员转换为 public。它还包含一个 Gradle 插件,允许转换在开发环境中无需额外 JVM 参数即可生效。

核心功能

运行时字节码转换:使用 java.lang.instrument API 和 ASM 库来拦截类加载并修改字节码。转换规则如下:

  • 移除字段的 private、protected 和 final 修饰符,并添加 public

  • 移除方法(<clinit> 除外)的 private、protected 和 final 修饰符,并添加 public

  • 跳过接口和枚举的 $VALUES 字段

开发环境支持

Gradle 插件集成:将 SAT Gradle 插件添加到你的项目中,以在开发时启用转换。该插件与 Fabric 和 NeoForge 模块均兼容。

buildscript {
    dependencies {
        classpath 'io.github.yiyuyan:SuperAccessTransformerPlugin:1.000'
    }
}
apply plugin: 'io.github.yiyuyan.sat-plugin'

你也可以在 test 分支找到针对 Architectury NeoForge 1.21 的示例配置:yiyuyan/SuperAccessTransformer (test)

已知限制与提示

  • Fabric Loader 开发环境:Mob::rotlerp 和 WitherBoss::rotlerp 方法不会被转换。

  • NeoForge 模组列表:作为使用 lowcodefml 加载器的 coremod,SAT 不会出现在 NeoForge 模组列表中。