过滤语法 (InfoFilter)

Advanced Memory Card GUI 搜索框支持的 4 类过滤指令。 定义:com.projecturanus.betterp2p.client.gui.InfoFilter + enum Filter。

基本信息

属性 值
输入位置 GUI 顶部搜索框
多过滤组合 用空格分隔,可同时生效(按 Filter.pattern 顺序匹配)
大小写 NAME/TYPE 过滤不区分大小写(lowercase() 比较)
多 token 通过 SEARCH_REGEX 拆分,保留双引号/单引号内的空格

过滤器类型

过滤指令 模式 匹配行为
@in 精确匹配 保留输入 P2P (output == false)
@out 精确匹配 保留输出 P2P (output == true)
@b 精确匹配 保留已绑定 P2P (frequency != 0L)
@u 精确匹配 保留未绑定 P2P (frequency == 0L || error)
@types=<type1>;<type2>;... 前缀匹配 按 P2P 显示名 (dispName.lowercase()) 子串匹配,多个类型用分号分隔
"<name>" 或 name 子串匹配 按 P2P 自定义名/默认名子串匹配;用双引号可包含空格

使用示例

输入 效果
@in 仅显示输入 P2P
@out @b 仅显示已绑定的输出 P2P
@u 仅显示未绑定或出错的 P2P
@types=me;redstone 显示所有 ME 类型 + 红石类型(按 P2P 显示名子串匹配)
机器A 显示名含 “机器A” 的 P2P
"机器 A" 显示名含 “机器 A”(含空格)的 P2P

实现要点

  • InfoFilter.updateFilter(query):把整段 query 拆成 tokens,逐个 token 与 Filter.pattern 匹配并加入 activeFilters。
  • 多个同类型 token 会累加到同一过滤器的列表中(OR 关系)。
  • NAME 过滤会自动用 removeSurrounding("\"") 去掉外层引号,但内容里的引号会"大概率"破坏匹配(源码注释)。

相关条目