
HookLib
核心模组框架
简介
这是 MinecraftForge 核心模组(coremod)的框架。
基本上,对模组开发者很有用。
本项目的目标是提供一种简便的方式,在不直接修改原有代码的情况下,通过编写附加代码来修改现有逻辑。
无需了解 JVM 字节码知识。
唉,我发布这个项目确实有点晚了,因为 Mixins 已经席卷了整个世界,但我发现 HookLib 更顺手,而且我还有一些尚未实现的好点子,它们会让它变得更好。所以也许它还是有意义的
入门
理解钩子(hooks)
当存在一些你想改变的代码,但它属于 Minecraft 或其他模组时,你可以这样写:
@HookContainer
public class MyHooks {
@Hook
@OnBegin
public static void resize(Minecraft mc, int x, int y) {
System.out.println("Resize, x=" + x + ", y=" + y);
}
}
HookLib 会在 Minecraft 类中找到名为 resize、带有两个 int 参数的方法,并将对 MyHooks#resize 的调用插入到所找到的目标方法的开头。
之后,当窗口大小改变时,你就会在控制台看到消息。
添加到项目
在 build.gradle 中添加依赖:
repositories { maven { url "https://cursemaven.com" } } dependencies { implementation "curse.maven:hooklib:12345" }
添加 VM 选项
-Dfml.coreMods.load=gloomyfolken.hooklib.minecraft.MainHookLoader
也可以通过 gradle 实现:
minecraft {
mappings channel: 'snapshot', version: '20171003-1.12'
runs {
client {
workingDirectory project.file('run')
property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader" //here
}
server {
workingDirectory project.file('run')
property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader" //here
}
}
}
- 在你的 IDE 中执行 Gradle Refresh
接下来学习
查看我们的 wiki了解 API 细节和高级技巧
路线图
让 HookLib 成为核心模组的模组加载器方法调用处的注入点打印可能的 @LocalVariable 参数的方法表达式处的注入点访问私有变量的方法移植到新版本的 Minecraft
用于编译期校验的注解处理器
核心模组的配置
对应用了钩子的目标类进行缓存
致谢
- 感谢 @GloomyFolken 对原始 HookLib 的开发!
- 感谢 @Foreck 提供超酷的 logo!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。