修复闪回

修复闪回

修复由Flashback通过Sinytra Connector在NeoForge上运行时导致的NoClassDefFoundError崩溃。

修复 Flashback

一个小的 NeoForge 兼容性补丁,通过 Sinytra Connector 让 Fabric 模组 Flashback 能够在 NeoForge 整合包中运行而不崩溃。

Flashback 可以录制并回放游戏过程,但当它通过 Connector 在 NeoForge 上加载时,会在多个仅存在于 Forgified Fabric API / ModernFix / NeoForge 技术栈中的位置崩溃。此模组修复了这些崩溃,使录制文件可以正常打开和回放。

机械动力:Flashback 和 机械动力:航空学 Flashback 使 Flashback 模组与 机械动力 和 机械动力:航空学 兼容。

安装

  • 安装 NeoForge 1.21.1 和 Sinytra Connector。
  • 安装 Flashback(下载 Fabric 的 1.21.1 版本;Connector 会为你运行它)。
  • 将 fix_flashback-<版本>.jar 放入你的 mods 文件夹。
  • 完成了 — 像平常一样使用 Flashback 录制和回放即可。

需求

  • Minecraft 1.21.1
  • NeoForge 21.1.x
  • Flashback 0.30+(通过 Sinytra Connector 加载)
  • Sinytra Connector + Forgified Fabric API(在 NeoForge 上运行 Flashback 等 Fabric 模组所需)

备注

  • 这是一个附加补丁,不是 Flashback 的替代品。 必须安装 Flashback 本体。
  • 即使未安装 Flashback,安装此模组也是安全的 — 所有修复都通过 @Pseudo mixin 应用,除非相关模组存在,否则不执行任何操作。
  • 没有已知的冲突模组。它仅挂钩 Flashback / ModernFix / NeoForge 的内部机制以恢复预期行为。

已知不兼容的模组

以下模组会干扰 Flashback 的回放功能。如果你安装了它们,相应的功能将停止工作。移除或禁用它们以使用该功能:

模组 受影响的功能
BadOptimizations 回放期间夜视效果不再生效
机械动力:蒸汽与铁路 旁观者摄像机停止工作
Smooth Movement 时间覆盖功能停止工作

这些仅影响 Flashback 的回放功能;这些模组的其余部分正常工作。

其他修复

  • 回放期间实体卡顿滑动 — 录制的实体在位置之间线性滑动,而不是吸附到回放位置。修复 Flashback 会在每次传送数据包后将客户端插值步数限制回原版默认值,并在回放播放期间禁用实体平滑处理,使实体保持在录制的位置上。

工作原理

Flashback 的虚拟回放玩家依赖于一个 Fabric 内部标记接口以及 Fabric 的网络/要塞缓存行为,而 Forgified Fabric API 未能完全复现这些行为。修复 Flashback 修补了这些缺口:

  • 世界加载崩溃 — Flashback 的虚拟玩家实现了 net.fabricmc.fabric.impl.networking.UntrackedNetworkHandler,这是一个 Forgified Fabric API 从未提供的 Fabric 内部接口。该标记会在加载时从 Flashback 的类中移除(它是空的,因此不会丢失任何内容),并且它所控制的“跳过未跟踪处理器”行为已恢复,使得 Fabric 网络不再将虚拟玩家交给真实的连接监听器。
  • 打开录制文件时崩溃 — ModernFix 的 cache_strongholds 优化对 Flashback 回放服务器的 null 区块生成器进行了向下转型,并抛出 NullPointerException。对于回放服务器,会跳过要塞缓存设置,这是安全的(它只是一个性能优化)。
  • 进入回放时显示“已断开连接” — NeoForge 在为回放注册表中不存在的 BannerPattern 触发 PlayerLoggedInEvent 时抛出异常。该异常会被吞掉,以便观看玩家被正确放置。
  • 回放过程中连接丢失 — 录制的 custom_payload 数据包可能在此整合包中无法读取/编码。损坏的回放操作会被跳过,编码器异常不再关闭连接,因此回放可以继续。

许可证

MIT © tatuto-riku

由于此模组目前仍在开发中,它可能无法正常工作。