方块装饰器

基本信息

属性 值
方块侧接口 mcp.mobius.waila.api.IWailaBlockDecorator(IWailaBlockDecorator.java:14)
FMP 侧接口 mcp.mobius.waila.api.IWailaFMPDecorator(IWailaFMPDecorator.java,25 行)
注册方法 registerDecorator(IWailaBlockDecorator, Class)(IWailaRegistrar.java:75)
FMP 注册方法 registerDecorator(IWailaFMPDecorator, String)(IWailaRegistrar.java:77)
存储位置 ModuleRegistrar.blockClassDecorators / FMPClassDecorators(ModuleRegistrar.java:38、ModuleRegistrar.java:50)

装饰器是在世界内、方块位置上绘制 3D 图形的扩展点(典型用途:选中高亮框、覆盖层),与只影响屏幕 HUD 文本的 provider 完全不同。

功能

IWailaBlockDecorator

单个回调方法(IWailaBlockDecorator.java:24):

void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config);

javadoc 契约(IWailaBlockDecorator.java:16-23):回调提供一个已定位到该方块上的标准 GL 栈;实现方不需自行做射线检测或矩阵平移。触发条件为通过 IWailaRegistrar.registerDecorator 注册。

IWailaFMPDecorator

对应 FMP 版本(IWailaFMPDecorator.java):

void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config);

唯一差异是 accessor 类型为 IWailaFMPAccessor,且匹配目标是部件名字符串而非 Class。

数值

项 值 来源
IWailaBlockDecorator 方法数 1 IWailaBlockDecorator.java:24
IWailaFMPDecorator 方法数 1 IWailaFMPDecorator.java
Waila 自带 FMP 装饰器 DecoratorFMP(ProxyServer.java:107) —

FMP 装饰器仅在 ForgeMultipart 加载时注册(ProxyServer.java:105-108),检测标志为 LoadedMods.FORGE_MULTIPART = Loader.isModLoaded("ForgeMultipart")(LoadedMods.java:7)。

交互

装饰器在渲染阶段执行,由 DecoratorRenderer 驱动。Waila.preInit(Waila.java:62)与 Waila.initialize(Waila.java:69)各向 MinecraftForge.EVENT_BUS 注册一次 DecoratorRenderer 实例;客户端启用条件在 Waila.java:68(Side.CLIENT 判断)。

相关条目