AdaptiveWidthDiagramGroup

基本信息

api.diagram.AdaptiveWidthDiagramGroup —— CustomDiagramGroup 的子类, 在 NEI 里按首张图的实测宽度动态调整处理器尺寸。

核心逻辑

@Override
public void onUpdate() {
    super.onUpdate();
    int width = this.diagrams.get(0).dimension(diagramState).width() + 3;
    this.handlerInfo.setHandlerDimensions(width, this.handlerInfo.getHeight());
}

宽度 = 首图实际宽度 + 3 像素(+3 是边框留白),高度保持不变。

⚠️ 硬编码 get(0):假定该页至少有一张图,否则 IndexOutOfBoundsException。 实际由 emptyDiagramPredicate 保证不会把空图交给它。

与静态宽度的区别

DiagramGroupInfo 的 width 工厂默认值是固定 166, 且 buildHandlerInfo 一次性 setWidth(...)。本类在每次 onUpdate() 改写 NEI 的 HandlerInfo.setHandlerDimensions,因此可随内容变化。

构造器(3 个)

签名 说明
(info, ComponentDiagramMatcher, ImmutableMap<String, Supplier<Collection<Diagram>>>) 带自定义行为映射
(info, DiagramMatcher) 便捷版,行为映射传 ImmutableMap.of()
(CustomDiagramGroup parent, Iterable<? extends Diagram>) NEI 分页复制用

三个构造器都会执行 GuiRecipeTab.getHandlerInfo(getHandlerId(), null) 取得可变的 handlerInfo 引用(protected 字段)。

相关条目

源码

  • src/main/java/com/github/dcysteine/neicustomdiagram/api/diagram/AdaptiveWidthDiagramGroup.java