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 秒,
意味着最快每秒读一次文件。
相关
- Value - 基类
- Operation -
op的实现 - InfoIcon -
icon的产物 - ConfigurationHandler -
fileInterval配置