ValueLogic
9 个逻辑函数
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.github.lunatrius.ingameinfo.value.ValueLogic |
| 行数 | 213 |
| 注册函数数 | 9 |
全部 9 个函数
| 主名 | 别名 | 语义 | 参数 |
|---|---|---|---|
if |
无 | 三目条件 | 3(cond, then, else) |
not |
无 | 取反 | 1 |
and |
无 | 逻辑与 | 2+ |
or |
无 | 逻辑或 | 2+ |
xor |
无 | 逻辑异或 | 2+ |
greater |
more |
> |
2 |
lesser |
less |
< |
2 |
equal |
equals |
== |
2 |
contains |
in |
字符串包含 | 2 |
⚠️ if 是保留字?不是 —— 在 XML 配置里它是元素名 <if>,
完全合法。默认配置 assets/ingameinfo/InGameInfo.xml 第 3-8 行可见:
<if>
<var>daytime</var>
<str>$eDay</str>
<str>$8Night</str>
</if>
这是本 mod 最核心的函数:所有条件显示都靠它。
比较函数的类型宽容
greater / lesser / equal 需要两侧可比。
Value 提供 getIntValue() / getDoubleValue() /
getBooleanValue() 三条路径,比较函数按失败回退:
⚠️ 若一侧是 <str> 文本(如 TagWorld 的 worldname),
数值解析会抛 NumberFormatException。
所以 equal / contains 这类面向文本的函数与
greater / lesser 这类面向数值的函数虽然并列注册,
但可用数据源不同 —— 数值比较对文本 tag 无效。
contains(别名 in)是唯一的纯字符串比较,
适用于物品名、生物群系名、药水名等。
短别名风格
more / less / equals / in 四个别名说明本 mod
刻意支持「长名 + 口语短名」两套写法。与
ValueMath 的 percent / percentage、
ValueComplex 的 img / image 同一风格。
返回值
| 函数 | 返回 |
|---|---|
if |
被选中分支的文本 |
not / and / or / xor |
true / false 文本 |
greater / lesser / equal / contains |
true / false 文本 |
逻辑结果输出的是字符串 true / false(Java Boolean.toString),
不是布尔 —— 下游 InfoText 拿到的是纯文本。