Sinborn 包修复

Sinborn 包修复

为《辛伯恩奥德赛II》制作兼容性补丁:提高历史阶段的阶段定义同步上限,修复粒子雨加载顺序竞争问题,并保持已发现的受限物品可拾取。

Sinborn Pack 修复

一个用于 Forge 1.20.1 的小型兼容性模组,修复了基于 HistoryStages 构建的整合包中四个特定问题。 它是为 Sinborn Odyssey II(一个包含 439 个模组的进度整合包,其中每个配方都通过研究卷轴进行限制)编写的,但此处的内容并不特定于任何整合包。如果你正在构建任何大量使用 HistoryStages 覆盖的内容,你至少会遇到第一个问题。

修复内容

1. “字符串过长”登录崩溃

HistoryStages 通过一个带有 262,144 字符上限的单个数据包将其阶段定义同步到客户端。一个具有全面覆盖限制的整合包会直接超过此限制,并且每个玩家在登录时都会被踢出,并提示 String too big 或 Invalid player data。此模组会使用 gzip 压缩有效载荷并提高上限,从而让完整的卷轴集能够干净地同步。

如果你的整合包限制了数千个物品,并且玩家无法登录,这几乎可以肯定是原因所在。

2. Particle Rain 加载顺序竞争

Particle Rain 4.0.0-beta.5 可能会在初始化之前读取其配置,并且异步精灵拼接随后会导致加载界面崩溃。这保证了 ConfigManager.config 在类初始化时非空。

3. 已找到的物品可保留

HistoryStages 的 onItemPickup 忽略了 lockItemPickup=false,并将受限物品从玩家库存中弹出。这破坏了战利品系统:你找到了一个尚未研究的剑,游戏却会将其从你手中夺走。

此修复使该模块失效,因此限制适用于制作,而非拥有。你可以携带和使用你找到的物品。但在研究它之前,你仍然无法制作它。

4. 针对每个玩家的 JEI 隐藏

HistoryStages 内置的 JEI 隐藏功能只检查全局阶段。它从不查询个人的、针对每个玩家的阶段,因此一个按玩家进行限制的整合包会在 JEI 中显示所有物品,无论设置如何。

此修复针对了解锁检查(个人感知方面)重新实现了隐藏功能,并在阶段同步和解锁时重新应用。该过程是幂等的,并通过 ID 而非 ItemStack 来跟踪隐藏条目,因此隐藏功能在重新登录后仍然有效,而不会悄悄失效。

需求

  • Minecraft 1.20.1,Forge
  • HistoryStages(必需)
  • JEI,用于修复 4
  • Particle Rain,用于修复 2(可选,如果没有它,此修复将不执行任何操作)

备注

  • 服务器和客户端都需要安装,并且版本必须匹配,因为修复 1 更改了同步数据包的编码方式。
  • 它不添加任何物品、方块、配方或配置。它只是补丁。
  • MIT 许可。 使用它、分叉它、在你的整合包中发布它,无需许可。