Canary

Canary

矿中毒的早期预警。

管理

Canary(金丝雀)

矿井中有害气体的早期预警。

Canary是一款能够检测其他模组中危险行为并提供多种诊断工具的模组。

检测到的问题

BlockState属性注入

某些模组试图向原版方块添加新的BlockState属性。 不幸的是,这很可能导致方块不同步的问题。

解决方案:

  • 使用 Statement,这是一个专门设计用来安全完成此操作的库
  • 改用自定义方块,并根据需要在自定义方块与原版方块之间进行转换

同步实体数据注入

某些模组试图向原版实体类添加新的同步数据条目(EntityDataAccessor)。 由于字段顺序在客户端与服务器之间并不稳定,这样做很可能导致难以理解的网络错误。

解决方案:

  • 使用 Data Attachment(数据附件)
  • 将值存储在普通字段中,并通过自定义数据包进行同步

诊断功能

此外,Canary还具备以下诊断特性:

  • 在配置中启用("print_blockstate_report": true)时,将在日志中打印一份BlockStates报告
  • 命令 /canaryclient diagnoseDesync 将生成一份客户端和服务器上的方块状态报告

有趣的事实

此模组名称源于现实中在煤矿中使用金丝雀来检测有毒气体的做法。与现实中的对应物一样,如果金丝雀死亡(游戏崩溃),说明你遇到了问题。