LWJGL3ify
[!INFO] Git Commit:
311b750f3553b01bae48151a836f0ea7f08099da| Updated: 2026-10-02
LWJGL3ify 把 LWJGL3 与现代 Java 带到 Minecraft 1.7.10。它不是内容模组——全仓库注册 0 个方块、0 个物品、0 个实体、0 个 TileEntity、0 个配方、0 条指令(grep -rn 'registerBlock\|registerItem\|registerTileEntity\|registerEntity\|GameRegistry.register\|CommandHandler\|CraftingManager' src/main/java/me/eigenraven/ 在 me/eigenraven/lwjgl3ify/ 下无任何命中;唯一的 Forge 事件注册是 ClientProxy.java:75 的 MinecraftForge.EVENT_BUS.register(this))。它的内容是字节码改写、Mixin 注入、API 事件总线与配置——共 4 个 RFB 转换器、12 个 Mixin 条目覆盖 22 个 Mixin 类、396 个 LWJGL 兼容层文件、34 项配置。
标识与版本
| 项 | 值 | 来源 |
|---|---|---|
| modid | lwjgl3ify |
Lwjgl3ify.java:22 的 @Mod(modid = "lwjgl3ify") |
@Mod(name) |
Lwjgl3ify |
Lwjgl3ify.java:23 |
RFB 插件 name |
LWJGL3ify |
META-INF/rfb-plugin/lwjgl3ify.properties:1 |
| 分类目录名 | lwjgl3ify |
本页路径 |
| 根包 | me.eigenraven.lwjgl3ify |
gradle.properties 的 modGroup |
| 资源域 | lwjgl3ify |
assets/lwjgl3ify/ssl/ |
| Minecraft | 1.7.10 |
gradle.properties:27、:33 |
| Forge | 10.13.4.1614 |
gradle.properties:30 |
| LWJGL3 | 3.4.2 |
gradle/libs.versions.toml:5 |
| RFB | 1.1.1 |
gradle/libs.versions.toml:15 |
| ASM | 9.10.1 |
gradle/libs.versions.toml:3 |
| 构建体系 | GTNH RetroFuturaGradle | build.gradle.kts:1-4 |
modid 与分类名一致,均为 lwjgl3ify。但显示名有三种写法:@Mod 用 Lwjgl3ify、RFB 插件 properties 用 LWJGL3ify、relation.md 的显示列用小写 lwjgl3ify——三者都是独立字符串,不可互推。
版本判定证据(3 处一致):gradle.properties:27 的 minecraftVersion = 1.7.10、@Mod(acceptedMinecraftVersions = "[1.7.10]")(Lwjgl3ify.java:25)、@IFMLLoadingPlugin.MCVersion("1.7.10")(Lwjgl3ifyCoremod.java:20)。mcmod.info:8 的 "mcversion": "${minecraftVersion}" 是模板占位符,本身不构成版本证据。
不采用 git describe:该镜像为 depth-1 浅克隆(存在 .git/shallow,git log --oneline | wc -l = 1),且唯一标签 3.0.35 不足以定位 MC 版本。本页引用的 311b750 已用 git cat-file -t 311b750f3553b01bae48151a836f0ea7f08099da 验证返回 commit(提交日期 2026-09-18)。仓库只有 master 一个分支,树内不存在其他 MC 版本的代码。
依赖
不声明任何 FML 依赖:@Mod 注解无 dependencies 参数(Lwjgl3ify.java:21-27),mcmod.info 的 requiredMods / dependencies / dependants 三数组皆空(mcmod.info:15-17)。
README 声明的必需前置是 UniMixins 0.1.23+(需 GTNHMixins 模块);Hodgepodge 强烈推荐。
构建期依赖(dependencies.gradle):RetroFuturaBootstrap 1.1.1 替换 net.minecraft:launchwrapper(:14)、Gson 2.13.2、LWJGL3 的 lwjgl-sdl 与 lwjgl-spng(:26-29)、ASM 全家桶、jakarta.xml.bind、nashorn-core、mvel2。UniMixins 在 dependencies.gradle 中不存在,因此它是通过 RFB 运行时提供的,不在 Gradle 依赖图里。
加载链
LWJGL3ify 的四个加载入口按下列顺序生效,每一步的产物都是下一步的输入:
RfbSystemClassLoader
└─ Lwjgl3ifyRfbPlugin (META-INF/rfb-plugin/lwjgl3ify.properties 发现)
├─ 写黑板 lwjgl3ify:rfb-booted = TRUE
├─ EarlyConfig.load() → config/lwjgl3ify-early.json
├─ Java 版本闸门 (17 → 需 ≥ 17.0.6)
└─ 注册 4 个 RfbClassTransformer
└─ Lwjgl3ifyCoremod (IFMLLoadingPlugin, SortingIndex MAX-2)
├─ Config.loadConfig() → config/lwjgl3ify.cfg (34 项)
├─ 检查 lwjgl3ify:rfb-booted,未就绪则 return
└─ IMixins.getEarlyMixins(Mixins.class) → 10 个 EARLY 条目
└─ Lwjgl3ifyLateMixins (@LateMixin) → 2 个 LATE 条目
└─ Lwjgl3ify (@Mod) preInit / postInit
加载器列表
- FML 加载插件 -
@Mod与IFMLLoadingPlugin双入口,getASMTransformerClass()主动返回 0 个传统转换器 - RetroFuturaBootstrap 加载插件 - 写黑板、读早期配置、Java 版本闸门、注册 4 个转换器
- 启动器配置与 forgePatches - 5 个 PrismLauncher 组件、
java9args.txt、forgePatches jar
字节码转换列表
- RFB 字节码转换器 - redirect / extensible-enum / unfinalize-object-holders / ForgePatch 共 4 个,点定改写 5 个 FML 内部类
Mixin 列表
- Mixin 注册机制总览 - 12 个枚举条目 / 22 个唯一 Mixin 类;三个 mixin JSON 的数组全为空
- FML Java 9+ 兼容补丁 - 唯一走
addCommonMixins的条目,4 个 FML 类,客户端与服务端都生效 - SDL 输入与窗口 Mixin - 4 条目 12 类,文本输入、打开链接改道
redirects.Desktop、浮点鼠标、全屏缩放 - 纹理加载与拼接 Mixin - 3 条目共用同一个
MixinStitcher,受 FastCraft / OptiFine 门控 - 第三方模组兼容 Mixin - Xaero 两项滚轮 120→1 归一、OpenComputers 键盘修复
配置列表
- lwjgl3ify.cfg 配置 - 34 个配置项 / 7 个在用分类;
CATEGORY_IME声明但零引用;GUI 仅暴露 3 个分类 - 早期配置 JSON -
lwjgl3ify-early.json的 56 项可扩展枚举清单,RFB 阶段读入并回写
API 列表
- 输入与显示事件 API -
InputEvents(KeyEvent 同带 LWJGL2/SDL 双编码)、DisplayEvents、两个 record - 配置与注解 API -
ConfigUtils反射访问器、@Lwjgl3Aware、@MakeEnumExtensible
兼容层列表
- LWJGL2→LWJGL3 兼容层 -
org/lwjglx396 个文件(138 手写 + 258 生成)、org/lwjgl182 个哑类、6 个定制重定向类
第三方集成列表
- 第三方兼容钩子 -
TargetedMod6 项判定、CoFH AT 修补、ModularUI2 经InputEvents.KeyboardListener的软绑定
交叉引用
- 被 ModularUI2 以
compileOnlyApi依赖(ModularUI2/dependencies.gradle:33),使用@Optional.Interface软绑定,不装也能运行 - 与 Bugtorch 并列,同为整合包的基础设施类依赖