过滤语法 (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("\"")去掉外层引号,但内容里的引号会"大概率"破坏匹配(源码注释)。
相关条目
- 高级存储卡 - 触发过滤生效的载体