MixinExtras 使用教程
项目介绍
MixinExtras 是一个小型配套库,旨在帮助开发者以更具表现力和兼容性的方式编写 Mixin。它是 SpongePowered Mixin 的扩展,提供了许多自定义注入器,使得字节码操作更加灵活和强大。
项目快速启动
安装 MixinExtras
使用 Fabric 或 Quilt
dependencies {
include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.4.1")))
}
使用 NeoForge
dependencies {
implementation(jarJar("io.github.llamalad7:mixinextras-neoforge:0.4.1")) {
jarJar.ranged(it, "[0.4.1,)")
}
}
初始化 MixinExtras
在项目中适当的位置调用 MixinExtrasBootstrap.init()
方法进行初始化。通常建议在 IMixinConfigPlugin
的 onLoad
方法中进行初始化。
public class MyMixinConfigPlugin implements IMixinConfigPlugin {
@Override
public void onLoad(String mixinPackage) {
MixinExtrasBootstrap.init();
}
// 其他方法实现
}
应用案例和最佳实践
案例一:自定义注入器
MixinExtras 提供了多种自定义注入器,例如 @ModifyExpressionValue
,可以用于修改表达式的值。
@Mixin(SomeClass.class)
public abstract class SomeClassMixin {
@ModifyExpressionValue(method = "someMethod", at = @At(value = "INVOKE", target = "someTarget"))
private Object modifyExpressionValue(Object value) {
// 修改表达式的值
return newValue;
}
}
案例二:兼容性处理
在使用 MixinExtras 时,可以通过 jarJar
工具保持与旧版本的兼容性。
dependencies {
implementation(jarJar("io.github.llamalad7:mixinextras-neoforge:0.4.1")) {
jarJar.ranged(it, "[0.4.1,)")
}
}
典型生态项目
Fabric 和 Quilt
MixinExtras 与 Fabric 和 Quilt 平台紧密集成,提供了无缝的开发体验。许多流行的 Fabric 和 Quilt 模组都使用了 MixinExtras 来增强其功能。
NeoForge
NeoForge 也集成了 MixinExtras,使得在 NeoForge 项目中使用 Mixin 更加方便和高效。
通过以上步骤和案例,您可以快速上手并充分利用 MixinExtras 提供的强大功能,提升您的开发效率和代码质量。