缺失采集信息修正
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 启动期方块数据补丁 |
| 源码 | 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 |
相关条目
- WailaHandler 插件与提示栏组装 - 补丁生效后被消费的判定流程
- 工具类别与有效工具判定 -
getHarvestTool/getHarvestLevel的读取点 - WAILA 采集选项 -
toolrequiredonly默认true,正是它让这个补丁成为必需 - 兼容代理 - 同为对外部方块数据的读取,本条目为写入