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

加载器列表

字节码转换列表

  • RFB 字节码转换器 - redirect / extensible-enum / unfinalize-object-holders / ForgePatch 共 4 个,点定改写 5 个 FML 内部类

Mixin 列表

配置列表

  • lwjgl3ify.cfg 配置 - 34 个配置项 / 7 个在用分类;CATEGORY_IME 声明但零引用;GUI 仅暴露 3 个分类
  • 早期配置 JSON - lwjgl3ify-early.json 的 56 项可扩展枚举清单,RFB 阶段读入并回写

API 列表

兼容层列表

  • LWJGL2→LWJGL3 兼容层 - org/lwjglx 396 个文件(138 手写 + 258 生成)、org/lwjgl 182 个哑类、6 个定制重定向类

第三方集成列表

  • 第三方兼容钩子 - TargetedMod 6 项判定、CoFH AT 修补、ModularUI2 经 InputEvents.KeyboardListener 的软绑定

交叉引用

  • 被 ModularUI2 以 compileOnlyApi 依赖(ModularUI2/dependencies.gradle:33),使用 @Optional.Interface 软绑定,不装也能运行
  • 与 Bugtorch 并列,同为整合包的基础设施类依赖