Malstone x Fantasy 结局兼容性

Malstone x Fantasy 结局兼容性

修复了Forge 1.20.1版本中Malstone和Fantasy Ending之间出现的StackOverflowError崩溃问题。

杂项

Malstone x Fantasy Ending 兼容补丁

一个适用于 Minecraft Forge 1.20.1 的兼容补丁,用于修复 Malstone 与 Fantasy Ending 之间导致游戏崩溃的冲突。

问题

当两个模组同时安装时,创建世界会因 java.lang.StackOverflowError 而崩溃,其原因是 getMaxHealth 与 getHealth 之间形成了无限循环。

修复方案

Fantasy Ending 会将所有 getHealth() 调用都经由 EntityASMUtil#special_getHealth 转发,而后者会请求 getMaxHealth()。Malstone 向 getMaxHealth() 中添加了会调用 Player#isAlive() 的代码,而原版的 isAlive() 又会再次调用 getHealth()。结果就是无限递归。

本补丁在最大生命值查询周围添加了一个按线程的重入保护:

  • 第一次调用行为与之前完全一致,因此 Malstone 的 ToughBlood 加成仍然有效。
  • 任何嵌套调用都只返回原版的最大生命值,而不会无限递归下去。

本补丁仅在 同时 安装了 Malstone 和 Fantasy Ending 时才会生效。如果缺少其中任意一个模组,它不会执行任何操作。

前置要求

  • Minecraft 1.20.1
  • Forge 47.x
  • Malstone
  • Fantasy Ending

安装方法

  1. 照常安装 Malstone 和 Fantasy Ending。
  2. 将 malstone_fe_compat-1.0.0.jar 放入你的 mods 文件夹。
  3. 启动游戏。创建世界不再崩溃。

备注

  • 这是一个客户端/服务端补丁;如果你在服务器上游玩,请在两端都安装它。
  • 仓库所有者不懂代码,也不了解 GitHub;本项目完全由 DeepSeek(一个 AI 助手)创建。