介绍
介绍由机器翻译自 CurseForge 原页面,仅供参考。
简介
这是一个用于 MinecraftForge 核心模组的框架。
基本上对模组开发者很有用。
本项目旨在提供一种简单的方式:通过编写额外代码来修改现有逻辑,而无需直接更改其代码。
不需要了解 JVM 字节码。
哎,发布这个项目确实有点晚了,因为 Mixins 已经风靡全球。不过我发现 HookLib 更顺手,而且我还有一些尚未实现的好点子,能让它变得更好。所以,也许这个项目还是有意义的。
入门
了解钩子
如果你想修改某段代码,但它属于 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 刷新
后续学习
查看我们的 Wiki,了解 API 详情和进阶技巧
路线图
- <s>让 HookLib 成为核心模组的模组加载器</s>
- <s>在方法调用处设置注入点</s>
- <s>提供打印可能的 @LocalVariable 参数的方法</s>
- <s>在表达式处设置注入点</s>
- <s>提供访问私有变量的方法</s>
- 移植到新版 Minecraft
- 添加编译时验证用的注解处理器
- 为核心模组添加配置
- 缓存已应用钩子的目标类
致谢
- 感谢 @GloomyFolken 开发了原版 HookLib!
- 感谢 @Foreck 设计了很棒的 Logo!
常见问题
HookLib 支持哪些 Minecraft 版本?
HookLib 支持 Minecraft Java 版 1.12.2,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
HookLib 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
hohserg1 的其他作品
查看全部 →RotN Tweaker
by democat3457, hohserg1 等
为Rebirth of the Night打造。为创意玩家提供各类整合包实用工具与功能。
35.5万
2 个月前
CurseForge
ElegantNetworking
by hohserg1
这是一个框架,让模组中的网络代码更容易编写。
20.7万
4 年前
CurseForge
Ender Compass (EnderCompass)
by hohserg1
添加了末影指南针物品,可指示要塞的方向
7.8万
4 年前
CurseForge
Ender’s Magic
by mousecray, hohserg 等
The End is not as empty as it seems ... Because, it hides many secrets!
1.2万
5 年前
CurseForge
评论
登录后评论和评分