WailaHarvestability
[!INFO] Git Commit:
620c14b| Updated: 2026-06-03
WailaHarvestability(modid WailaHarvestability,显示名 Waila Harvestability)是一个纯 WAILA 插件——它不注册任何方块、物品、实体、附魔、维度、群系、结构或成就,唯一的功能是在玩家注视方块时,往 WAILA 提示栏的 Body 区域追加"这一块能不能挖、要什么工具、几级"的信息。
源码包 squeek.wailaharvestability,共 14 个 Java 文件,作者 squeek(GTNH fork)。
基本信息
| 属性 | 值 |
|---|---|
| modid | WailaHarvestability |
| 显示名 | Waila Harvestability |
| Minecraft | 1.7.10(GTNH 约定构建) |
| 作者 | squeek |
| 依赖 | after:TConstruct;after:ExtraTiC;after:TSteelworks;after:Mariculture |
| 注册内容 | 无方块 / 物品 / 实体 / TileEntity / 网络包 |
| 端 | 全部事件处理器 @SideOnly(Side.CLIENT) |
| 内容维度 | 仅 setting——共 10 个条目 |
| 配置 | 两套:WailaHarvestability.cfg(5 个字符串)+ waila.cfg 的 [Harvestability] 段(16 个布尔) |
工作方式
玩家注视方块
↓
Waila 调 getWailaBody(唯一有输出的回调)
↓
① CreativeBlocks 方块? → 是:原样返回,一行都不加
② 修正判定对象:普通 ItemBlock 按"显示出来的身份"算;GT 机器/外壳按"真实方块"算
③ 读 9 个开关 → 决定显示哪些行
④ 不可破坏 / 冒险模式? → 只输出一行暗红 ✘
⑤ 算 harvestLevel、effectiveTool、剪刀、精准采集
⑥ 过滤:非矿(oresonly)、不需要工具(toolrequiredonly)、已能挖(unharvestableonly)
⑦ 输出最多 3 行(最小模式下合成 1 行)
提示栏 Body 区域最多出现 3 行:
| 行 | 内容 | 出现条件 | 颜色 |
|---|---|---|---|
| 1 | ✔/✘ + ✓ + ✂(同一行,空格分隔) |
三者至少一个非空 | 绿/红 + 亮绿/亮红 |
| 2 | 所需工具(Pickaxe / Shovel / …) | harvestLevel != -1 且有有效工具类别 |
绿/红 |
| 3 | 挖掘等级(Stone / Iron / 数字) | harvestLevel >= 1 |
绿/红 |
配置速查
本模组有两套互不相干的配置,容易混淆:
| 配置文件 | 分段 | 项数 | 类型 | 管什么 |
|---|---|---|---|---|
config/WailaHarvestability.cfg |
Main |
5 | String | 4 个符号字符 + 最小模式分隔符 |
config/waila.cfg |
Harvestability |
16 | Boolean | 显示哪些行、哪些过滤器生效 |
完整表格见 Forge 配置项 与 WAILA 采集选项。
第三方 mod 集成
| 目标 mod | 集成方式 | 提供 |
|---|---|---|
| Tinkers’ Construct | 反射 HarvestTool / DualHarvestTool / HarvestLevels |
双持工具两个采集等级、工具类别、等级名称 |
GregTech(gregtech,排除 gregapi) |
唯一标识匹配 + GT.ToolStats NBT |
GT 矿石/外壳/机器分类、GT 工具识别、跳过 meta 上限截断 |
| Iguana Tweaks T Construct | 反射 HarvestLevels.getHarvestLevelName |
采集等级名称的第 2 级回退 |
| CreativeBlocks | 反射 CreativeBlocks.isCreativeBlock |
跳过创造模式方块 |
| Waila | FML IMC register |
唯一的对外依赖,未在 @Mod 中声明 |
| VersionChecker | FML IMC addVersionCheck |
版本检查 |
设定列表
插件核心
- WailaHandler 插件与提示栏组装 - 5 个
IWailaDataProvider回调逐项清单、getWailaBody流程、getHarvestability判定顺序、3 行输出的构成 - 显示样式与配色 -
ColorHelper的 4 档布尔取色与最小模式拼接
配置
- Forge 配置项 -
WailaHarvestability.cfg的Main段 5 个字符串(4 个符号 + 最小模式分隔符) - WAILA 采集选项 -
waila.cfg的[Harvestability]段 16 个布尔开关完整默认值表
判定逻辑
- 工具类别与有效工具判定 -
ToolHelper/BlockHelper:有效工具类别、挖掘等级、手持物是否对得上 - 采集等级名称解析 -
StringHelper四级回退链与"数字兜底抑制重复后缀" - 矿石判定 -
OreHelper的矿物词典/显示名/非本地化名三级规则 - 缺失采集信息修正 -
MissingHarvestInfo对Blocks.web的唯一补丁
集成与遗留
- 兼容代理 -
ProxyCreativeBlocks/ProxyGregTech/ProxyIguanaTweaks - 按键检测(KeyHelper) - macOS 下把 ⌘ 当 Ctrl 的底层轮询
源码现状提示
本 fork 的代码与语言文件存在若干不一致,均为源码既有现象,如实记录:
- 没有
wailaharvestability.harvestlevel<数字>语言键。StringHelper第 3 级回退(模组自带语言键)在全部 10 个语言文件中都取不到值,实际只会落到"纯数字"兜底。相关说明见 采集等级名称解析。 @Mod依赖里没有after:Waila。本模组完全靠 IMC 注册,WAILA 缺席时这条 IMC 被静默丢弃——模组照样能"装上",只是什么都不显示。- 3 个生命周期处理器全部
@SideOnly(Side.CLIENT),包括postInit里的ToolHelper.init()与ProxyIguanaTweaks.init()。 KeyHelper整个类无调用点;ColorHelper.getRelativeColor与其colorRange数组同样无调用点。二者都是上游遗留。MissingHarvestInfo只剩vanilla()一个补丁段,且只改Blocks.web一行;上游针对其它 mod 的补丁段在本 fork 中已不存在。getShearabilityString中((IShearable) block)是无条件强转,条件分支里包含Blocks.deadbush与Blocks.double_plant,但强转处没有instanceof保护。BlockHelper.testTools用HashMap,entrySet()遍历顺序不保证,对"未声明 harvest tool 的方块"报出的工具类别在原理上不确定。- zh_CN 语言文件 3 处问题:
wrench与cutter两个工具类别键缺失(回退显示为英文Wrench/Cutter);scoop误译为"捕蜂网";unharvestableonly译作"仅显示能否挖掘",与实际语义"只在不能挖掘时显示"相反。 - 第一行内
✔✓✂之间的空格是硬编码的,不受minimal.mode.separator配置影响——该配置只作用于行与行之间。 - 5 个 Forge 配置项没有传 comment,因此生成的
.cfg里只有键=值,不含任何描述行。