行转换器

基本信息

属性 值
位置 src/main/java/com/slprime/chromatictooltips/converter/
类数 3
注册键 各自的静态 PATTERN(java.util.regex.Pattern)
启用版本 Minecraft 1.7.10

3 个类

类 注册实参 作用
ModifierConverter ModifierConverter.PATTERN 文本修饰符
DividerTextConverter DividerTextConverter.PATTERN 分隔线文本
DividerConverter DividerConverter.PATTERN 分隔线

ClientProxy 的 preInit 尾部注册全部 3 个:

addLineConverter(ModifierConverter.PATTERN,   new ModifierConverter());
addLineConverter(DividerTextConverter.PATTERN, new DividerTextConverter());
addLineConverter(DividerConverter.PATTERN,     new DividerConverter());

⚠️ 3 个类 ↔ 3 次注册,严格一一对应(与 enricher 的 「11 类 / 12 实例」不同)。

关键机制:按正则而非按类型注册

TooltipRegistry 的签名为:

addLineConverter(Pattern regexp, ITooltipLineConverter converter)

⚠️ 三个实现类都 implements ITooltipLineConverter(同一个接口), 接口类型无法用来区分它们 —— 区分靠 Pattern 键。 这意味着:

  • 可以注册同一个类的多个实例(配不同正则),接口方案做不到;
  • 正则写在转换器类自己的静态字段里,不在 TooltipRegistry 中。

⚠️ 与 enricher 形成对比:addEnricher(ITooltipEnricher) 只传实例, 没有正则键 —— 匹配靠 sectionId()(见 enricher 清单 中 ItemStatsEnricher 的两实例)。

与事件的关联

event/ 包中 TextLinesConverterEvent 是行转换器对应的事件。 另有 DividerConverter / DividerTextConverter 名字相近但用途不同 (一个画线、一个转文本),容易混淆。

关联