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 拿到的是纯文本。

相关