配方过滤器
大约 2 分钟
配方过滤器
配方过滤器用于筛选合成台包含的配方,以便于玩家在合成台中只看到某些特定配方。
提示
过滤器检索的字段是配方的完整id字符串,比如tutorial:gun/ak47
。
定义一个配方过滤器
配方过滤器位于data/<namespace>/recipe_filters/
目录下,他的文件路径也决定了过滤器的ID。
作为示例,此处创建了一个id为tutorial:example
的过滤器,参考位置如下:
└─tutorial_gun_pack
├─data
│ └─tutorial
│ ├─data
│ ├─index
│ ├─recipe_filters # 配方过滤器目录
│ │ └─example.json # 过滤器文件
│ └─recipes
└─gunpack.meta.json
具体内容如下:
{
// 白名单,只有在白名单中的配方才会被显示,如果白名单为空,默认为全集
// 可以使用正则表达式,正则表达式请以^开头,$结尾
// 常用例子:匹配命名空间xxx下的所有配方:^xxx:.*$
"whitelist": [
"^.*$"
],
// 黑名单,在白名单中的配方中,如果在黑名单中,则不会被显示
"blacklist": [
"tacz:test"
]
}
使用配方过滤器过滤配方
配方过滤器采用黑白名单的方式筛选配方,只有满足白名单中任一条件且不满足黑名单中全部条件的配方才视为满足过滤器的条件。
提示
如果白名单字段为空或缺省,则白名单的范围默认是全集。
黑白名单都由一个数组构成,其中每个元素代表一个匹配项,以^开头,$结尾 的字符串为正则表达式,其他的则匹配一个单独的id。
修改其他枪包的配方过滤器
有时候,你可能想让你的枪包配方只在你自己的工作台中显示,把特定配方从其他的工作台中移除。
于是,配方过滤器提供了一个特别的特性,即类似tag,所有枪包中定义的相同id的配方过滤器将被合并而不是覆盖。
简而言之,只要在你的枪包的相同位置也放置一份相同id的配方过滤器,你的配方将会被合并到其他枪包的配方过滤器中。
举个例子,我们想把所有以tutorial
为命名空间的配方从tacz的默认工作台中移除,那么我们只需在自己的枪包中data/tacz/recipe_filters/default.json
的位置也放置一个配方过滤器并增加一条黑名单,就像这样:
{
"blacklist": [
"^tutorial:.*$"
]
}
那么,这条黑名单就会被合并到tacz的默认工作台的配方过滤器的黑名单中,从而达到我们的目的。