ValueComplex

9 个复杂函数

基本信息

属性 值
路径 com.github.lunatrius.ingameinfo.value.ValueComplex
行数 353(value 包最大文件)
注册函数数 9
直接子类数 9 个内部类 + ValueSimple 的 ValueInvalid

全部 9 个函数

主名 别名 内部类 行范围
op operation ValueOperation :37-54
concat 无 ValueConcat :55-71
max maximum ValueMin 家族 :92-111
min minimum ValueMin :72-91
itemquantity 无 ValueItemQuantity :112-142
trans translate ValueTranslate :143-164
formattedtime rltimef ValueFormattedTime :165-182
icon img、image ValueIcon :244-341
file 无 ValueFile :183-243

⚠️ 6 个带别名,是四个 value 类里别名最多的。 icon 有 2 个别名(img、image),formattedtime 的别名 rltimef 与 TagTime 的 rltime24 / rltime12 风格呼应。

逐个说明

op / operation —— 格式化操作

内部类 ValueOperation 把子节点委托给 Operation 枚举的 getValue(Value)。本 mod 用它做 $e、$a、$f 这类格式码插入 (默认配置里 <str>$eDay</str> 的 $e 就是「插入 §e 格式码」的转义写法)。

⚠️ 操作枚举有 7 个常量(见 Operation), 与 16 个 TagFormatting 颜色 tag 是两套并存的机制:$e 走 op,{yellow} 走 tag。

concat —— 拼接

把所有子节点的文本首尾相接,无分隔符。用于把 「数值 + 单位」拼成一行而不用嵌套 str。

max / min —— 取极值

遍历所有子节点取最大 / 最小值。 默认配置第 3-8 行可见 <max><var>light</var><num>7.5</num>…</max> 的用法 —— 取光照与 7.5 的较大者来着色。

⚠️ 内部类名易混:ValueMax 定义在 :92,ValueMin 在 :72, ValueMin 写在 ValueMax 前面,且两者行范围不重叠 (ValueMin 是 :72-91,ValueMax 是 :92-111)。阅读时注意。

itemquantity —— 物品数量

把一个 <str> 物品名解析成 ItemStack 并取堆叠数。 用于「我有几个XX」这类显示。

trans / translate —— 翻译

把子节点文本当本地化 key 翻译。 默认配置里用于把内部 tag 名转成可读文字。

formattedtime / rltimef —— 格式化时间

比 TagTime 的 rltime24 / rltime12 更灵活: 可指定格式串(用 SimpleDateFormat)。

⚠️ 两个 tag 与两个 value 功能重叠 —— tag 版取当前时间,value 版可传格式串。

icon / img / image —— 图标(本类最大,:244-341,98 行)

生成 InfoIcon 渲染节点。 子节点给纹理位置描述(资源域 / 路径 / 图集内子矩形坐标)。

这解释了 Value 的 replaceVariables 里 var.startsWith("ICON") 的早退判断(:68-71)—— {ICON|...} 是本函数的标记语法,必须绕过变量替换。

⚠️ 早退条件用的是 str.contains("ICON")(子串), 若同一行文本里既有 {ICON|...} 又有别的 {tag}, tagAmount 就 ≥ 2,早退不生效,{ICON|...} 会被 indexOf("}", ...) 截断处理 —— 虽然 var.startsWith("ICON") 的 continue 分支仍会跳过它, 但 nextStart 未更新(:68-71 里 continue 前有 nextStart = end + 1, 实际是有更新的)。

file —— 读外部文件

从磁盘读文本并作为 value 输出。 重读间隔由配置项 fileInterval(默认 5 秒,范围 1–60) 控制, 由 ValueFile.tick() 驱动(见 InGameInfoCore 的 :155)。

⚠️ 这是本 mod 唯一读文件系统内容并渲染到 HUD 的功能, 也是唯一有周期性 IO 的 value。fileInterval 范围上限 60 秒, 意味着最快每秒读一次文件。

相关