DiagramGenerator
基本信息
api.diagram.DiagramGenerator —— 全部 15 个生成器实现的接口,只有两个方法:
public interface DiagramGenerator {
DiagramGroupInfo info();
DiagramGroup generate();
}
生命周期
- 构造 ——
Registry通过RegistryEntry.get()调用构造器工厂generatorConstructor().apply(groupId),每个生成器只构造一次, 把groupId存进info。 - info() ——
Registry.initialize()与NeiIntegration读取,用于建DiagramGroupInfo列表、写配置文件、注册 NEI handler info。 - generate() ——
Registry.generateDiagramGroups()调用,返回待注册的DiagramGroup。 - 丢弃 ——
Registry.cleanUp()把生成器列表置null供 GC。
构造与生成分离,是为了让「配置文件里能看到所有组名」(第 2 步)不必付出 第 3 步的内存代价。
15 个实现类
| 组 | 实现类 |
|---|---|
| debug.nbtviewer | NbtViewer |
| debug.ruler | DebugRuler |
| enderstorage.chestoverview | EnderStorageChestOverview |
| enderstorage.tankoverview | EnderStorageTankOverview |
| forge.fluidcontainers | ForgeFluidContainers |
| forge.oredictionary | ForgeOreDictionary |
| forge.worldgenloot | ForgeWorldgenLoot |
| gregtech.circuits | GregTechCircuits |
| gregtech.lenses | GregTechLenses |
| gregtech.materialparts | GregTechMaterialParts |
| gregtech.materialtools | GregTechMaterialTools |
| gregtech.oredictionary | GregTechOreDictionary |
| gregtech.oreprefixes | GregTechOrePrefixes |
| gregtech.oreprocessing | GregTechOreProcessing |
| gregtech.recipedebugger | GregTechRecipeDebugger |
注意
DiagramFactory(出现在多个包下的同名类)不是DiagramGenerator, 它们只负责把布局/配方汇总成Diagram。
返回类型
接口声明返回 DiagramGroup,但 GregTech Recipe Debugger
的实现把返回类型协变为 CustomDiagramGroup —— 这是合法的 Java 协变返回,
不是接口变更。
相关条目
源码
src/main/java/com/github/dcysteine/neicustomdiagram/api/diagram/DiagramGenerator.java