缺失采集信息修正

基本信息

属性 值
类型 启动期方块数据补丁
源码 squeek.wailaharvestability.setup.MissingHarvestInfo(14 行)
调用时机 FMLInitializationEvent(@SideOnly(Side.CLIENT))
配置项 无

概述

MissingHarvestInfo 在模组初始化阶段直接改写原版方块的 harvest 数据,让那些本身没有声明采集要求的方块能显示正确的工具信息。

这是本模组除 WAILA 插件之外唯一的行为副作用——虽然不注册方块,但确实修改了游戏里的方块属性。

全部补丁内容

init() 只做一件事:调用 vanilla()。

vanilla() 全部内容只有一行:

Blocks.web.setHarvestLevel("sword", 0);
目标方块 修改 效果
Blocks.web(蜘蛛网) 设定 harvest tool 类别为 sword、harvest level 为 0 让蜘蛛网在 WAILA 提示栏里显示"所需工具:剑 / 挖掘等级 0"

蜘蛛网在原版中既非"需要工具"也非"可剪",getHarvestTool() 返回 null、getHarvestLevel() 返回 -1,没有这行补丁的话它会被 toolrequiredonly(默认 true)过滤掉,提示栏上不会有任何采集信息。

⚠️ vanilla() 是本 fork 中唯一的补丁段。 类里没有 gregTech() / tweaks() 之类的方法,init() 也没有任何分支。上游版本中针对其它 mod 的补丁段在本 fork 中已不存在。

与判定链的关系

补丁在 FMLInitializationEvent 写入,而 WAILA 提示栏的渲染发生在之后,因此所有读取 block.getHarvestTool() / block.getHarvestLevel() 的判定都会看到补丁后的值——包括 工具类别与有效工具判定 里的 BlockHelper.getEffectiveToolOf 一级分支。

源码现状提示

  • 该类不检查 mod 是否加载,也没有配置开关——Blocks.web 是原版方块,无条件生效。
  • 写入的是静态方块字段,不涉及 TileEntity、NBT 或存档。已存在的世界不需要迁移。
  • 方法全为 public static,init() 与 vanilla() 都可被外部单独调用,但模组内部只有 init() 一个调用点。

数值

数值 值
补丁段数 1(vanilla)
实际修改的方块数 1(Blocks.web)
配置开关数 0
setHarvestLevel 调用数 1

相关条目