脚步声Forge版

脚步声Forge版

Presence Footsteps 从 Fabric 到 Forge 的非官方移植版

概述

这是一个将 Fabric 版 Presence Footsteps 非官方移植到 Forge 的版本。如需 Fabric 版本,请查看原模组。

如果你在使用此 Forge 版模组时遇到任何问题,请在此处提交 issue——不要因为此 Forge 版的问题去打扰 Sollace 关于原 Fabric 版的事。

 

为什么?

简而言之,我想在较新的 Minecraft 版本中与其他 Forge 模组一起继续享受这个模组。过去,该模组使用 LiteLoader,可以选择在 Forge 之上运行,但自从转向 Fabric 之后就不再可能了。

许多人曾请求移植到 Forge,但模组作者表示无意这样做。由于许可证是 MIT,我便亲自动手,在短短几天内做出了尽可能接近 1:1 的移植版本。

这一点应该不言而喻,但我还是要说:请不要因为 Sollace 没有自己移植而去指责他们,这是他们的决定,我尊重这一点。我制作这个移植版是因为这在法律上是允许的,能让更多人享受这个模组,此外还能让 Forge 用户更容易过渡到 Fabric(如果他们愿意的话),因为又多了一个同时支持两个平台的模组(甚至原 Fabric 模组和这个 Forge 移植版之间的配置文件都是兼容的!)。请注意,Sollace 多年来从这个项目中获得了相当一部分 CurseForge 奖励计划积分,尽管他们并未参与此移植版。

如何做到的?

1.19.3/1.19.2/1.18.2

待日后记录。自从 1.16.5 的流程以来,我的移植工作流已经有了一些不错的改进。

1.16.5

过去我曾为个人使用将各种中小型 Fabric 模组移植到 Forge,每次移植都学到了更高效的方法。

对于 Presence Footsteps,我采取了以下步骤:
1. 克隆要移植的 Fabric 模组的仓库
2. 获取 Forge MDK,设置 Mixin 配置和 Yarn2MCP 的 Yarn 映射
3. 使用 updateMappings ForgeGradle 命令将 Yarn 转换为 MCP
到这里已经完成了相当一部分工作!
4. 使用 Linkie Discord 机器人手动将剩余的 Yarn 类名转换为 MCP 类名,同时转换一些 Mixin 相关内容
5. 手动将 Fabric 特有的 API 和做法转换为 Forge 的等价物(例如不同的事件系统、不同的模组初始化方式等……)

关于移植的说明:
- 下次我可能会尝试使用 MojMap 作为中间转换映射,而不是 Yarn2MCP,以减少设置时间,并在使用 ForgeGradle 的 updateMappings 或 Loom 的 migrateMappings 命令之间提供灵活性。这次我没有使用它们,因为上次我检查时,Linkie 不支持在 MojMap 和 MCP 之间转换,但现在这个问题似乎已经解决了。
- 我确实尝试过在转换为 MCP 之前直接在 Yarn2MCP 的 Yarn 映射下运行代码,但由于一个映射错误,遗憾的是这并不可行。
- 该模组使用了一些仅限 Fabric 的模组库,所以我也不得不移植所使用的部分。我在处理库中一个特定函数时遇到了些麻烦,它的名称与一个 MCP 方法名相同,导致代码引用哪个方法产生歧义而编译错误(如果我没记错的话,是关于 GUI 库中按钮的工具提示渲染)。目前,我只是禁用了那一个方法调用来作为变通方案。
- 我记得作者说过他们不喜欢 MCP 映射,但有趣的是,我发现了很多变量名与 MCP 类名匹配而非 Yarn 类名的情况。也许只是从 LiteLoader 时代遗留下来的代码?谁知道呢……
- 这不是我最优雅的解决方案——我当时很无聊,所以在 updateMappings 自动化之后仍然手动复制了库相关内容。

  

下载

此模组适用于 26.2、26.1.2、1.21.11、1.21.10、1.21.8、1.21.5、1.21.4、1.21.1、1.20.4、1.20.2、1.20.1、1.19.4、1.19.3、1.19.2 和 1.18.2 以及 1.16.5。某些版本可能存在限制——请查阅文件的更新日志了解详情,并不时检查更新。

 

赞助者

感谢以下 GitHub 赞助者为我的模组开发工作捐款,他们激励我继续从事像这个 Presence Footsteps 非官方 Forge 移植版这样的项目:

  • (目前暂无)