SuperAccessTransformer
Set the modifiers of most classes to public and non-final runtime attributes, and support their use during the development.
English
SuperAccessTransformer (SAT) is an open-source coremod for Minecraft 1.21+ that modifies access modifiers at runtime by injecting a Java Agent, converting most private, protected, and final members to public. It also includes a Gradle plugin, allowing the transformations to work in development environments without extra JVM arguments.
Core Functionality
Runtime Bytecode Transformation: Uses the java.lang.instrument API along with the ASM library to intercept class loading and modify bytecode. The transformation:
-
Removes
private,protected, andfinalmodifiers from fields and addspublic -
Removes
private,protected, andfinalmodifiers from methods (except<clinit>) and addspublic -
Skips interfaces and enum
$VALUESfields
Development Environment Support
Gradle Plugin Integration: Add the SAT Gradle plugin to your project to enable transformation at development time. The plugin is compatible with both Fabric and NeoForge modules.
buildscript {
dependencies {
classpath 'io.github.yiyuyan:SuperAccessTransformerPlugin:1.000'
}
}
apply plugin: 'io.github.yiyuyan.sat-plugin'
You can also find an example setup for Architectury NeoForge 1.21 at the test branch: yiyuyan/SuperAccessTransformer (test)
Known Limitations & Notes
-
Fabric Loader Dev Environment:
Mob::rotlerpandWitherBoss::rotlerpmethods will not be transformed. -
NeoForge Mod List: As a coremod using the
lowcodefmlloader, SAT does not appear in the NeoForge mod list.
简体中文
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 插件可在开发环境中启用运行时转换,同时适用于 Fabric 与 NeoForge 模块.
buildscript {
dependencies {
classpath 'io.github.yiyuyan:SuperAccessTransformerPlugin:1.000'
}
}
apply plugin: 'io.github.yiyuyan.sat-plugin'
你也可以参考针对 Architectury NeoForge 1.21 的示例项目:yiyuyan/SuperAccessTransformer at test
已知限制与提示
-
Fabric Loader 开发环境:
Mob::rotlerp和WitherBoss::rotlerp这两个方法不会被转换。 -
NeoForge 模组列表:该模组基于
lowcodefml加载器,作为 coremod 不会出现在 NeoForge 模组列表中。
