NEI 与 WAILA 集成

基本信息

属性 值
依赖声明 after:CoFHCore(WAILA 走 IMC,无硬依赖);NEI 在 dependencies.gradle 中为 api
WAILA 编译期依赖 compileOnly("com.github.GTNewHorizons:waila:1.19.31:api")
NEI 编译期依赖 api("com.github.GTNewHorizons:NotEnoughItems:2.8.125-GTNH:dev")

WAILA 集成

接入方式:FML IMC 消息,而非 @Mod 依赖。Gendustry.scala:139-143 在 init 阶段发出:

FMLInterModComms.sendMessage("Waila", "register", "net.bdew.gendustry.waila.WailaHandler.loadCallback")

WAILA 侧收到后反射调用 WailaHandler.loadCallback(IWailaRegistrar),注册 4 项:

注册方法 Provider 目标类
registerBodyProvider WailaDataSlotsDataProvider TilePowered(全部通电机器与工具类 Tile)
registerBodyProvider WailaApiaryDataProvider TileApiary
registerNBTProvider WailaDataSlotsDataProvider TilePowered
registerNBTProvider WailaApiaryDataProvider TileApiary

BodyProvider 提供同步的 tooltip 文本,NBTProvider 提供客户端到服务端的 NBT 请求 —— 两组都注册意味着既能看到即时状态,也能在需要时拉取完整数据槽。

TileApiary 同时匹配两条规则(它也是 TilePowered),因此蜂箱会同时得到通用数据槽提示与专用蜂箱提示。

NEI 集成

nei/NEIGendustryConfig 共注册 9 个 recipe handler(grep -c 'addRecipeHandler' nei/NEIGendustryConfig.scala = 10,其中 1 处是方法定义 def addRecipeHandler,9 处是调用点):

Handler 目标机器
TemplateCraftingHandler Gene Template 的无序合成(ShapelessRecipeHandler)
MutagenProducerHandler Mutagen Producer
MutatronHandler Mutatron
SamplerHandler Genetic Sampler
ImprinterHandler Genetic Imprinter
ExtractorHandler DNA Extractor
LiquifierHandler Protein Liquifier
ReplicatorHandler Genetic Replicator
TransposerHandler Genetic Transposer

8 个机器 handler 全部继承 BaseRecipeHandler(5, 13)(TemplateRecipeHandler),即共用的 5×13 配方模板布局。

另有 SmeltingTooltipHandler —— 给 Forestry 熔炉的 NEI 提示追加 Gendustry 的信息。

覆盖缺口:Advanced Mutatron 与 Industrial Apiary 没有 NEI handler。这与 client.config 只有 8 个配方开关(无 AdvMutatron)一致。

NEI 自定义物品名

bees_color.cfg:390-407 与 recipes.cfg:238-239 注册了一批 regOreDict 自定义栈名,让 NEI 显示友好的名称:

自定义名 物品
gendustry:HoneyComb.<颜色> ×16 16 种 Colored Comb
gendustry:HoneyDrop.<颜色> ×16 16 种 Colored Honey Drop
gendustry:"upgrade.<cfg名>" ×21 21 种 Apiary Upgrade(Upgrades.init())

registerCustomItemStack 让 NEI / WAILA 优先显示自定义名而非内部 ID。

相关条目