诡异终结 GeckoLib 补丁

诡异终结 GeckoLib 补丁

让Eldritch End在AzureLib 3.1+上运行。

Bug修复

让 Eldritch End 在 AzureLib 3.1+ 上运行。

Eldritch End 构建于 AzureLib 的旧版动画 API 之上,而该 API 已在 AzureLib 3.1 中被移除。这让你不得不在 Eldritch End 和所有需要新版 AzureLib 的模组之间二选一。

此补丁消除了这个选择:它在 Eldritch End 的类加载时将其引用重写为 GeckoLib,从而让两者可以共存于同一个整合包中。

为什么这能奏效

AzureLib 是 GeckoLib 的一个分支。直到 3.0.x 版本,其 jar 包都同时附带了两套动画系统——一套继承自 GeckoLib,位于 mod.azure.azurelib.* 下,另一套是位于 mod.azure.azurelib.rewrite.* 下的新系统。

在 3.1 中,旧的那套被删除,由重写版取而代之。

Eldritch End 只使用了继承的那一半。因此此补丁并不是将它强制迁移到一个陌生的库上——而是将它指回 AzureLib 最初复制的那份代码。

签名一一对应。

此补丁解决的问题

Cataclysm: Spellbooks 1.2.9+ 与 Eldritch End 共存于同一整合包。

Cataclysm: Spellbooks 1.2.9 需要 AzureLib 3.1+,而 Eldritch End 需要 3.0.x 或更早版本。没有此补丁,你只能二选一安装。

请注意,1.2.5 情况正好相反——它需要 3.0.x——因此降级 Cataclysm: Spellbooks 只是把问题换了个地方。

Mobs of Mythology 3.x 与 Eldritch End 共存于同一整合包。

同样的冲突,同样的修复方式。

任何基于 AzureLib 3.1+ 构建的模组。

这个分裂正好贯穿 AzureLib 自身的版本历史,因此随着越来越多的扩展模组迁移到新 API,这个问题会不断出现。

一个没有任何警告、令人困惑的崩溃。

Eldritch End 在其元数据中声明了 azurelib: "*",意为"任意版本",因此加载时不会有任何警告。

在 3.1+ 上,它的类加载时会直接失败——通常是 NoClassDefFoundError: mod/azure/azurelib/animatable/GeoEntity(它的生物实现了该接口)或 mod/azure/azurelib/renderer/GeoEntityRenderer(它的渲染器继承自该类)。

这两条报错信息都没有指向真正的原因。

安装

将 jar 文件与 Eldritch End 一起放入你的 mods 文件夹中。无需任何配置。

需要 Forge 1.20.1、Eldritch End 0.3.4+、GeckoLib 4.2+、AzureLib 3.0+ 以及 Sinytra Connector(Eldritch End 是一个 Fabric 模组)。

安装 AzureLib 3.0.x 时,此补丁无害但也无用——你只需要在 3.1 及以上版本中使用它。

如果你之后更换了 Eldritch End 的 jar 文件,请删除 mods/.connector/Eldritch_End*,以便 Connector 重新生成其缓存。

此模组不是什么

它不包含任何 Eldritch End 代码,也不重新分发任何内容。

它在游戏加载时于内存中修补官方 jar,因此你仍然需要从 Eldritch End 自己的页面正常下载它。

致谢

Eldritch End 由 ElocinDev 制作——没有它此补丁毫无用处,请去支持原作。

AzureLib 由 AzureDoom 制作。

GeckoLib 由 Bernie 和 Tslat 制作。

报告 Bug 前请先阅读

Eldritch End 的作者从未针对 GeckoLib 进行过测试。

如果安装此补丁后出现问题,请在此处报告,而不是向 Eldritch End 的开发者报告——并请先检查移除补丁后问题是否仍然存在。