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+BOLDval > min(已越过最差端)→DARK_RED+BOLD
ToolPartHelper 的 getWeightString、getBowDrawSpeedString、
getBreakChanceString 三个方法正是靠这个特性工作的。
min == max 的含义
返回 RESET(无格式码),即「只有一种材料时不着色」,
而不是返回色阶第一档。
调用方
全部 24 个着色入口在 ToolPartHelper 的 :323-405,
本类不直接被 TooltipHandler 引用。
注意
返回的是格式码字符串前缀,调用方需自行拼接后续文本;
WHITE/DARK_RED 越界分支额外附加 BOLD。