默认搜索过滤器(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 步是纯正则,与本模组无关。

相关条目