ColorHelper

7 级相对色阶

基本信息

属性 值
路径 squeek.tictooltips.helpers.ColorHelper
行数 21
唯一方法 getRelativeColor(double val, double min, double max)

色阶(:7-9)

private static final EnumChatFormatting colorRange[] = {
    DARK_RED, RED, GOLD, YELLOW, DARK_GREEN, GREEN, AQUA
};

7 档,private static final,运行期不可改、无配置项。 从「最差」到「最好」单调递增:暗红 → 红 → 金 → 黄 → 暗绿 → 绿 → 青。

算法(:11-20)

if (min == max) return RESET;                                  // :12 退化
else if ((max > min && val > max) || (min > max && val < max))
    return WHITE + BOLD;                                        // :13-14 越过「好」的一端
else if ((max > min && val < min) || (min > max && val > min))
    return DARK_RED + BOLD;                                     // :15-16 越过「差」的一端

int index = (int) ((val - min) / (max - min)) * ...             // :18 实际带 * 6
return colorRange[max(0, min(6, index))];                        // :19 钳位

实际第 18 行是 int index = (int) (((val - min) / (max - min)) * (colorRange.length - 1)); 即 * 6,把 [min, max] 线性映射到 [0, 6] 后取整,再用 Math.max(0, Math.min(6, index)) 钳位防越界。

支持反向区间

min > max 是合法输入,表示「数值越小越好」:

  • val < max(已越过最好端)→ WHITE+BOLD
  • val > min(已越过最差端)→ DARK_RED+BOLD

ToolPartHelper 的 getWeightString、getBowDrawSpeedString、 getBreakChanceString 三个方法正是靠这个特性工作的。

min == max 的含义

返回 RESET(无格式码),即「只有一种材料时不着色」, 而不是返回色阶第一档。

调用方

全部 24 个着色入口在 ToolPartHelper 的 :323-405, 本类不直接被 TooltipHandler 引用。

注意

返回的是格式码字符串前缀,调用方需自行拼接后续文本; WHITE/DARK_RED 越界分支额外附加 BOLD。