数据类型转换
在 JSON UI 绑定、变量进行操作或运算时,数字、字符串、布尔值(以下简称数据类型,不包括数组等其他类型)不能直接带入条件式。(例如在 label 中,数字类型不能直接作为 #text 的绑定属性)
此时,我们需要把数据类型进行转换再带入条件式。"test": {
"type": "label",
"text": "#text",
"bindings": [
{
"binding_type": "view",
"source_property_name": "('§_' + #test)",
"target_property_name": "#text"
}
]
}
在示例中,假如 #test 为 64,这个文本控件就会显示 64。
"test": {
"type": "label",
"text": "hello world",
"bindings": [
{
"binding_type": "global",
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "((#hud_title_text_string * 1) < 100)",
"target_property_name": "#visible"
}
]
}
在示例中,title的数字字符串小于 100 才会显示这个文本控件。
"test": {
"type": "label",
"text": "hello world",
"bindings": [
{
"binding_type": "global",
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "(not (not (#hud_title_text_string * 1)))",
"target_property_name": "#visible"
}
]
}
在示例中,title的数字字符串不等于 0 才会显示这个文本控件。
"test": {
"type": "label",
"text": "#text",
"bindings": [
{
"binding_type": "global",
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "('§_' + (#hud_title_text_string - 'test_'))",
"target_property_name": "#text"
}
]
}
当我们/title @s title test_123 时,文本控件只会显示123。
此时,我们需要把数据类型进行转换再带入条件式。
下方是数据类型转换的方法:
数据类型转字符串
通过数据类型(这里用数字举例)转字符串,我们可以将一个数字显示在文本控件。下方是一个使用绑定演示数字转字符串的例子:我们可以通过一个新的字符串再加上数字类型的数据进行转换。一个新的字符串可以不包含 § 字符,此处 § 的作用是转换后只显示数字字符串,不会包含多余的字符。
你也不必担心 § 字符会改变字体颜色,§ 后面的文字让 Minecraft 不能识别为样式代码就行了。
你也可以不用到 § 字符,只要使用蒙版剪辑(clips_children 属性)把多余的文字剪去即可。
如果绑定属性为小数,则会忽略小数点后方的所有数字。在部分绑定属性中,不能直接转字符串(数字不会显示)。
数据类型转数字
通过数据类型(这里用字符串举例)转数字,我们可以使用数字字符串进行比较、计算。下方是一个使用绑定演示字符串转数字的例子:我们可以将数字字符串乘于一转换为数字。前提是这个字符串仅包含数字,没有多余的文字(如果有多余的文字请减去多余的文字)。
你也可以在字符串中减去多余的文字仅保留数字字符串,这样会直接解析为数字。
进行任何四则运算都可以将数据类型转为数字,这里推荐使用 * 1 转数字。
数据类型转布尔值
通过数据类型(这里用数字举例)转布尔值,我们可以使用布尔值进行条件运算。下方是一个使用绑定演示数字转字符串的例子:字符串提取纯数字字符串
有些时候,我们可能需要提取字符串中的数字字符串。在示例中,首先通过 (#hud_title_text_string - 'test_') 去除文字中的 test_。此时,数据的类型已由字符串转为的数字,之后我们还需要将数字重新转化为字符串。