编织

编织

针对Kilt的补丁,用于减少崩溃并改善特定MOD的兼容性。

Bug修复

Weave 修复了通过 Kilt 运行时,Forge 模组与原生 Fabric 模组一同运行时可能出现的种种问题。

Weave 力求仅在确实需要时才保持 Forge 兼容性激活,同时不影响正常的 Fabric 行为。

这可能会或可能不会提高与整合包的兼容性,测试是在我自己约 1000 个模组的整合包上进行的,所以我认为我已经在加载 Forge 模组的最坏情况下进行了测试。我最初构建这个是因为我甚至无法加载 Kilt,特别是因为多加载器模组在同一个 .jar 中同时包含 Forge 和 Fabric 兼容性。

欢迎留言告知你遇到的问题,如果值得研究,我可能会修复它,但我主要是为了自己的整合包而做这些,分享给他人使用主要是为我私人工作的副产品。


Weave 修复了哪些问题?

更好地区分 Fabric 和 Forge 模组

仅仅因为存在 Forge 相关的类或兼容代码,Kilt 有时会将 Forge 特定的行为应用于原生 Fabric 模组。

Weave 会在允许这些兼容路径运行之前,检查是否确实需要 Forge 行为。

这有助于防止:

  • Fabric 模组被错误地当作 Forge 模组处理
  • 多加载器模组意外激活 Forge 行为
  • Kilt 触发其自身的兼容系统
  • 包含 net.minecraftforge.* 兼容类的 Fabric 模组被误认为是实际的 Forge 模组
  • 无关的 Kilt 兼容钩子在不需要时保持激活状态

更少的 Kilt mixin 冲突

一些 Kilt 兼容性 mixin 仅在实际依赖它们时才有必要存在。

Weave 会禁用不必要的兼容性钩子,同时在需要时保持相关的 Kilt 系统在一起。

这减少了 Kilt 与原生 Fabric 模组之间的冲突,而不会移除真正的 Forge 模组所依赖的 Forge 行为。


键位绑定兼容性修复

Fabric 键位有时可能通过 Forge 特定的按键注册传递并导致崩溃,尤其是在使用 Alt 等修饰键时。

Weave 将 Fabric 拥有的和 Forge 拥有的按键映射分开,以便各自使用正确的注册路径。


修复 FREEZE_DATA 启动卡死

在 Minecraft 启动期间冻结和烘焙注册表时,Kilt 可能会几乎完全卡住。

Weave 修复了受影响的注册表路径,以便加载能够正常继续。


更安全的启动网络

一些 Forge 模组可能会在 Minecraft 完全进入有效的游玩状态之前尝试发送数据包。

Weave 会防止这些调用过早运行,并等待客户端真正就绪。


GeckoLib 兼容性改进

Kilt 的 Forge GeckoLib 兼容性可能会干扰原生 Fabric GeckoLib 行为并导致无效的事件转换。

Weave 保持 Fabric 和 Forge GeckoLib 路径分离。


Architectury 兼容性改进

一些 Kilt 集成依赖于多个钩子协同工作。

Weave 防止仅启用部分的兼容系统,从而避免出现损坏的半激活状态。


Tooltip 兼容性修复

Forge tooltip 钩子可能会在实际上不需要的地方保持激活状态。

Weave 将这些钩子限制在需要的代码路径上。


对 Forge 粒子提供 AsyncParticles 支持

Weave 增加了对通过 Kilt 加载的 Forge 粒子的 AsyncParticles 支持。

当 Forge 粒子的渲染器兼容异步处理时,可以使用异步处理。

如果粒子渲染器需要 Kilt/Forge 的正常渲染行为,Weave 会自动将其保持在更安全的同步渲染路径上,而不是强制其通过不兼容的异步渲染器。

粒子 tick 和渲染是分开处理的,因此在安全的情况下,粒子仍然可以从异步处理中受益。


Forge 自定义模型修复

Weave 改进了对通过 Kilt 加载的 Forge 自定义模型的支持。

它还将 Kilt 相关的自定义模型系统保持在一起,以免模型处于加载了但无法正确渲染的部分工作状态。


创造模式物品栏崩溃修复

Fabric 的创造模式物品栏在极短时间内可能达到其物品组显示上下文尚未创建的状态。

Kilt 的兼容性可能会触及该状态并导致崩溃。

Weave 安全地处理了该特定的临时状态。


修复损坏的菜单文本和巨型三角形

Kilt 可能会全局地用 Forge 版本替换 Minecraft 的普通文本 RenderType。

使用批处理 GUI 渲染时,某些文本装饰——尤其是带阴影的删除线文本——可能会破坏渲染,在菜单上产生巨大的对角三角形或条纹。

Weave 保持正常的 Fabric 和原版文本在 Minecraft 的正常渲染路径上,除非确实需要 Forge 文本行为。


更好的 Kilt + Sodium 区块重建并发性

Kilt 通常在 Sodium 区块重建期间,对某些 Forge ModelData 查找使用全局同步锁。

Weave 缩小了对使用 Forge 正常默认 ModelData 行为的模型的同步范围,允许不相关的区块更独立地重建。

具有自定义 Forge ModelData 行为的模型仍保持在 Kilt 的原始安全路径上。

如果 Weave 无法安全识别预期的 Kilt 代码,优化将简单地保持禁用状态,并使用 Kilt 的原始行为。


特定模组的兼容性修复

这些修复是通过单个 Forge 模组发现的,但由 Weave 自动处理。

Bosses Rise

修复了十字弩海盗失败的问题,因为通过 Kilt 运行时,它需要访问 Minecraft 通常为包私有的十字弩状态。

Monster Expansion

修复了由 Porting Lib 尝试对不可变的空模型元素列表调用 clear() 导致的模型加载崩溃。