法术修复

法术修复

停止由仍使用旧版法术引擎效果渲染器签名的RPG类模组引起的AbstractMethodError崩溃。仅客户端,无需配置,除非安装了受影响模组,否则不执行任何操作。

Bug修复

此模组修复的内容

法术引擎 1.9.10 更改了其 CustomModelStatusEffect.Renderer 接口上的唯一方法——renderEffect 增加了一个参数,且该接口没有提供默认实现。

任何仍基于旧签名构建的类模组,因此都不实现这两种形式。Fabric 会正常加载它们,因为这些模组只声明了宽松的依赖关系,如 spell_engine >=1.5.0,然后在客户端绘制这些状态效果于任何实体上时会立即崩溃:

java.lang.AbstractMethodError: Receiver class net.berserker_rpg.client.effect.RageRenderer
does not define or inherit an implementation of the resolved method
'abstract void renderEffect(long, int, LivingEntity, float, MatrixStack, VertexConsumerProvider, int)'
of interface net.spell_engine.api.effect.CustomModelStatusEffect$Renderer

降级法术引擎通常不是一个选项,因为那些已经重新构建的模组需要更新版本——因此你会被困在整合包的两半之间。

Spell Fix 将当前的重载方法添加回受影响的渲染器中,并将其转发到它们已包含的方法。 效果会像以前一样渲染,而不是崩溃。

此版本涵盖的模组

模组 渲染器
狂战士 RageRenderer
力量法师 ArcaneOverDriveRenderer
誓约圣骑士 SmiteRenderer, MarkRenderer, DivineInterventionRenderer
巫师 QuenActiveShieldRenderer

已经为当前签名重建的模组——弓箭手、吟游诗人、元素法师、More RPG 库、法师——不受影响,并会继续正常工作。

注意事项

  • 仅限客户端。 在专用服务器上不会添加任何内容,那里也不需要它。
  • 不依赖法术引擎或上述任何模组。 每个补丁都宽松地针对其类,因此如果该模组未安装,Spell Fix 就不会执行任何操作。
  • 没有配置、没有命令、没有内容。 它的存在纯粹是为了阻止崩溃。
  • 唯一丢失的是新参数所携带的值,而旧渲染器代码本来就不会读取它。

要求

  • Minecraft 1.21.1
  • Fabric Loader 0.16.0 或更高版本
  • 法术引擎 1.9.10 或更新版本(正是该版本的变化导致了此问题)

如果你的崩溃未在列表中

请提交一个包含崩溃报告的问题。如果是在 CustomModelStatusEffect$Renderer 上出现的相同的 AbstractMethodError,但来自上述表格之外的模组,通常只需几行代码即可添加。