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