event 包

基本信息

属性 值
位置 src/main/java/com/slprime/chromatictooltips/event/
类数 15
启用版本 Minecraft 1.7.10

15 个事件类(实测完整清单)

类 对应扩展点
TooltipEvent 基类 / 总入口
RenderTooltipEvent 渲染阶段
TooltipEnricherEvent enricher 通用
TextLinesConverterEvent 行转换
TitleEnricherEvent TitleEnricher
StackSizeEnricherEvent StackSizeEnricher
ItemInfoEnricherEvent ItemInfoEnricher
FluidInfoEnricherEvent FluidInfoEnricher
EnchantmentEnricherEvent EnchantmentEnricher
ContextInfoEnricherEvent ContextInfoEnricher
ModInfoEnricherEvent ModInfoEnricher
AttributeEnricherEvent ItemStatsEnricher(属性)
HotkeyEnricherEvent HotkeyEnricher
FoodEffectsEvent FoodEffectsHandler
FoodStatsEvent FoodStatsHandler

⚠️ 15 个事件 ≠ 15 个扩展点

enricher 包 有 11 个 enricher 类, 但只有 9 个 *EnricherEvent 与之对应 —— KeyboardModifierEnricher 与 OreDictionaryEnricher 没有专属事件。

剩余 6 个事件各有归属:

事件 归属
TooltipEvent 基类 / 总入口
RenderTooltipEvent 渲染阶段
TooltipEnricherEvent enricher 通用机制
TextLinesConverterEvent 行转换器
FoodEffectsEvent FoodEffectsHandler
FoodStatsEvent FoodStatsHandler

即 9(enricher 专属)+ 6(机制 / handler)= 15。 不要把事件数与 enricher 数一一对应。

2 个事件监听器

ClientProxy 的 preInit 注册 3 个监听器:

TooltipUtils.registerEventListener(this);              // ClientProxy 自身
TooltipUtils.registerEventListener(new FoodEffectsHandler());
TooltipUtils.registerEventListener(new FoodStatsHandler());

⚠️ 后两个对应 FoodEffectsEvent / FoodStatsEvent。 监听器无静态字段引用,直接 new 后注册(preInit 内即成孤儿对象, 仅靠 Forge 总线的强引用存活)。

⚠️ 注册走 TooltipUtils.registerEventListener(...), 不是 MinecraftForge.EVENT_BUS.register(...) —— 有一层自封装。

命名规则

后缀 数量 含义
*EnricherEvent 10 含 TooltipEnricherEvent(通用)+ 9 个专属
*Event(其余) 5 TooltipEvent、RenderTooltipEvent、TextLinesConverterEvent、FoodEffectsEvent、FoodStatsEvent

⚠️ TooltipEnricherEvent 是通用机制事件, 不是某个具体 enricher 的事件 —— 它比 9 个专属事件更「上层」。 按「*EnricherEvent = 专属事件」统计会多数 1 个。

API 面向 Compat 仓

本包 15 个事件与 api 包 的 16 个类型 共同构成给第三方 mod 的扩展面, 由 ChromaticTooltipsCompat (60 个 mixin + 11 个事件处理器)实际使用。

⚠️ 本 mod 自有的 4 个 mixin 只针对 Minecraft 原版类, 不 fire 这些事件给外部 mod。

关联