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 版本检查

设定列表

插件核心

配置

  • Forge 配置项 - WailaHarvestability.cfg 的 Main 段 5 个字符串(4 个符号 + 最小模式分隔符)
  • WAILA 采集选项 - waila.cfg 的 [Harvestability] 段 16 个布尔开关完整默认值表

判定逻辑

集成与遗留

源码现状提示

本 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 里只有 键=值,不含任何描述行。