模板变量 - SQwatermark/Patchouli-wiki-zh_cn GitHub Wiki
正如使用模板中解释的,变量可用于将章节文件的数据传递给模板渲染器。
如果你不熟悉模板或其中的变量,请先阅读使用模板页面,因为这个页面提到的案例更为复杂。注意,此页面仅介绍模板设计,而不介绍如何从章节 json 文件中传递变量。
内联变量
变量可以内联到模板的任何字符串中。你需要用 # 包装变量,就像下面演示的这样:
{
"type": "text",
"text": "String interpolation with #inline_text# in the middle of the string!",
"x": 20,
"y": 30
}
然后就可以在章节 json 文件中定义变量的值:
"inline_text": "anything you want"
游戏中你看到的文本块将会是 "String interpolation with anything you want in the middle of the string!"。你可以内联任意多的变量。
字符串推导(String Derivation)
变量可以推导出其他数据。例如,用 ItemStack 字符串填写的变量可以推导出物品的名字。
可以通过对其使用函数以推导出其他变量。为此,你要将 ->func
附加到变量,并将 "func" 替换为你想使用的函数。例如,如果 "item" 是一个带有 ItemStack 字符串的变量,要获得它的物品名,你需要使用 #item->iname
。
函数列表
- iname: 用于包含 ItemStack 字符串的变量。导出物品的显示名。
- icount: 用于包含 ItemStack 字符串的变量。导出 ItemStack 中物品的数量。
- ename: 用于包含实体 ID 的字符串。导出实体的显示名。
- upper: 导出变量的_大写_ 值。
- lower: 导出变量的_小写_ 值。
- trim: 导出变量的值,去掉首尾的空格。
- capital: 导出变量的值,第一个词首字母大写。
- fcapital: 导出变量的值,所有单词首字母大写。
- exists: 如果变量的值是空字符串,导出 "false",否则导出 "true"。
- iexists: 如果变量包含一个 ItemStack 字符串且字符串表示的 ItemStack 存在且非空,导出 "true",否则导出 "false"。
- inv: 如果变量的值为 "false"(不区分大小写)导出 "true",反之导出 "false"。
其他要点
- 你可以推导内联变量,所以
This recipe produces #item->iname#.
是有效的。 - 你可以多次推导一个变量,所以
#item->iname->capital
是有效的。 - 导出值为 "true" 和 "false" 的函数可以用于模板组件中的 "guard" 属性。