
Canary
矿中毒的早期预警。
Canary(金丝雀)
矿井中有害气体的早期预警。
Canary是一款能够检测其他模组中危险行为并提供多种诊断工具的模组。
检测到的问题
BlockState属性注入
某些模组试图向原版方块添加新的BlockState属性。 不幸的是,这很可能导致方块不同步的问题。
解决方案:
- 使用 Statement,这是一个专门设计用来安全完成此操作的库
- 改用自定义方块,并根据需要在自定义方块与原版方块之间进行转换
同步实体数据注入
某些模组试图向原版实体类添加新的同步数据条目(EntityDataAccessor)。
由于字段顺序在客户端与服务器之间并不稳定,这样做很可能导致难以理解的网络错误。
解决方案:
- 使用 Data Attachment(数据附件)
- 将值存储在普通字段中,并通过自定义数据包进行同步
诊断功能
此外,Canary还具备以下诊断特性:
- 在配置中启用(
"print_blockstate_report": true)时,将在日志中打印一份BlockStates报告 - 命令
/canaryclient diagnoseDesync将生成一份客户端和服务器上的方块状态报告
有趣的事实
此模组名称源于现实中在煤矿中使用金丝雀来检测有毒气体的做法。与现实中的对应物一样,如果金丝雀死亡(游戏崩溃),说明你遇到了问题。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。