
KubeJSMixin
通过KubeJS实现的Mixin
在 KubeJS 中编写 Mixin,无需创建自定义模组
KubeJSMixin 允许整合包开发者使用 kubejs/mixins/ 目录下的 JavaScript 文件来编写 Mixin。这消除了为对模组行为进行小型针对性修改而创建单独模组的需要。
为什么选择 KubeJSMixin?
整合包开发者经常需要对模组进行小修复或调整——更改伤害值、修改两个模组之间的交互方式,或修复不兼容问题。传统上,这需要创建一个完整的自定义模组,并配备完整的开发环境,仅仅为了几行代码。
KubeJSMixin 通过将 Mixin 引入 KubeJS 解决了这个问题。将您的修改编写为简单的 JavaScript 文件,这些文件会在运行时自动编译成合适的 Mixin 字节码。
特性
- 完整的 Mixin 支持 - 所有标准 Mixin 注解(@Inject、@Redirect、@ModifyVariable、@Shadow、@Accessor、@Invoker 等)
- MixinExtras 集成 - 高级注解,如 @ModifyReturnValue、@WrapOperation、@ModifyExpressionValue
- 自动拆分类 - Accessor Mixin 自动变成接口,常规 Mixin 保持为类
- 类型安全 - 注解模式在加载时验证您的脚本
- 调试导出 - 使用 @KubeJSMixin.DebugExport 导出生成的字节码以供检查
工作原理
在 kubejs/mixins/ 中创建一个 .js 文件:
@Mixin(value = "net.minecraft.world.entity.player.Player") class PlayerMixin { @Inject(method = "tick", at = @At(value = "HEAD")) onTick(ci: CallbackInfo): void { console.log("Player is ticking!"); } }
KubeJSMixin 解析您的 JavaScript,使用 ASM 生成合适的 Mixin 字节码,并在运行时应用它。无需 Java IDE,无需模组编译,无需麻烦。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。