默认搜索过滤器(Display Filter)
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 物品列表物品名匹配过滤器 |
| 实现类 | net.moecraft.nechar.NecharDisplayFilter |
| 父类 | codechicken.nei.ItemList.PatternItemFilter |
| 构造方式 | NecharDisplayFilter::new(BiFunction<String, Pattern, ItemFilter> 方法引用) |
| 关联提供器 | default(前缀 '\0',见 搜索提供者) |
字段
| 字段 | 类型 | 说明 |
|---|---|---|
searchText |
String |
构造器收到的原始搜索文本(未编译的正则字符串),由 super(pattern) 之外的字段单独保存 |
匹配逻辑(matches(ItemStack))
按顺序尝试三步,任一步命中即返回 true:
| 步骤 | 取名方式 | 附加条件 | 匹配调用 |
|---|---|---|---|
| 1 | itemStack.getDisplayName() |
先用 EnumChatFormatting.getTextWithoutFormattingCodes 去掉颜色代码;结果非空才继续 |
contain(displayName, searchText, enableVoltageSpecialSearchName) |
| 2 | itemStack.getItem().getItemStackDisplayName(itemStack) |
仅当 itemStack.hasDisplayName() 为 true 时才执行;同样去格式码且要求非空 |
contain(displayName, searchText, enableVoltageSpecialSearchName) |
| 3 | 父类回退 | 无 | super.matches(itemStack)(PatternItemFilter 的正则匹配) |
要点:
- 第 1 步用物品栈自身的显示名,第 2 步用物品类型的默认显示名。因此被重命名(自定义名称)的物品会先按自定义名匹配,失败后再按其所属物品的默认名匹配,两条名称任一命中即算匹配成功。
- 第 2 步的
hasDisplayName()守卫意味着:只有被重命名的物品栈才会额外尝试默认名,未重命名的物品直接进入父类正则回退。 - 前两步的拼音/子串匹配走 NecharUtils.contain,并受配置项
enableVoltageSpecialSearchName控制是否启用电压特殊搜索;第 3 步是纯正则,与本模组无关。
相关条目
- 搜索提供者 - 本过滤器的注册位置与前缀
- NecharUtils.contain - 第 1/2 步调用的匹配函数
- 配置系统 -
enableVoltageSpecialSearchName配置项 - Tooltip 搜索过滤器 - 另一条搜索路径的过滤器