显示样式与配色

基本信息

属性 值
类型 渲染样式辅助类
源码 squeek.wailaharvestability.helpers.ColorHelper(32 行)
职责 把"是/否"与"是否附条件"映射为聊天颜色码
调用点 仅 WailaHandler(4 处)

概述

模组不用任何自定义颜色,只复用原版 EnumChatFormatting 的 8 种颜色。ColorHelper 负责把判定布尔值翻译成颜色码字符串。

两套颜色数组

booleanColorRange(4 项,实际使用)

getBooleanColor(boolean val, boolean modified) 取下标 (val ? 2 : 0) + (modified ? 1 : 0):

val modified 下标 颜色 含义
false false 0 DARK_RED(暗红) 不满足,且无条件修饰
false true 1 RED(亮红) 不满足,但"手持了相关工具/条件已具备,只差别的东西"
true false 2 DARK_GREEN(暗绿) 满足
true true 3 GREEN(亮绿) 满足,且附带额外条件

modified 的作用是把颜色升一档(暗 → 亮),而不是换语义色。

getBooleanColor(boolean val) 是单参数重载,等价于 modified = false。

colorRange(7 项,本 fork 中未被使用)

DARK_RED, RED, GOLD, YELLOW, DARK_GREEN, GREEN, AQUA,仅供 getRelativeColor(val, min, max) 使用——把一个数值在 [min, max] 区间内线性映射到 7 档颜色。

⚠️ getRelativeColor 在整个源码中没有任何调用点,colorRange 因此也不可达。它是上游遗留的渐变染色功能,提示栏当前只用 booleanColorRange。

四处调用的参数

位置 调用 着色对象
不可破坏方块 getBooleanColor(false) 恒为暗红的一行 ✘
第 1 行 ✔/✘ getBooleanColor(isCurrentlyHarvestable) 当前手持物能否挖掘
第 1 行 ✂ getBooleanColor(isShearable, !isShearable && isHoldingShears) 不手持剪刀 → 暗红;手持剪刀但不可剪 → 亮红
第 1 行 ✓ getBooleanColor(hasSilkTouch) 手上是否有精准采集
第 2 行 所需工具 getBooleanColor(isEffective && (!isHoldingTinkersTool || canHarvest), isHoldingTinkersTool && isEffective && !canHarvest) 工具类别对得上;Tinkers 工具专属的 modified 逻辑
第 3 行 挖掘等级 getBooleanColor(isAboveMinHarvestLevel && canHarvest) 手持物是否满足该等级

⚠️ 上表共 6 行调用点,其中只有"所需工具"一行会传入 modified = true。该条件仅在手持 Tinkers 工具、工具类别对得上、但还没达到挖掘等级时成立——此时显示亮绿,表示"方向对了,但等级不够"。

最小模式

harvestability.minimal 为真时:

  1. 三行(或更少)被 StringHelper.concatenateStringList 用 EnumChatFormatting.RESET + MINIMAL_SEPARATOR_STRING(默认 RESET + " : ")拼成单行;
  2. 各字段的文字前缀(Effectivetool / Harvest Level / Currently Harvestable 的翻译)全部省略,只留符号与工具名/等级值;
  3. 颜色逻辑完全不变。

分隔符 RESET 前缀的作用是在每个分隔符前重置颜色,避免上一段的暗红/绿色渗到下一段。

数值

数值 值
booleanColorRange 长度 4
colorRange 长度 7(本 fork 未使用)
可用颜色种类 7(DARK_RED/RED/DARK_GREEN/GREEN/GOLD/YELLOW/AQUA)
布尔取色档数 4
使用 modified 档的调用点 1
最小模式分隔符默认值 " : "(前置换色码 RESET)

相关条目