neiaddons
[!INFO] Git Commit:
1dfa653| Updated: 2026-09-24
NEI Addons(modid NEIAddons)是 bdew 为 Not Enough Items 写的扩展包,GTNH 1.7.10 维护分支。它自己不注册任何游戏内容——没有方块、物品、实体、附魔、维度或指令——全部功能都是给 NEI 增加配方页、搜索索引条目、GUI 叠加层和 tooltip。
一个 jar 里塞了 7 个 @Mod 容器(1 主 + 6 addon),主容器负责按配置逐个激活 addon,NEI 回调 IConfigureNEI.loadConfig() 时再让每个激活的 addon 注册自己的 NEI 扩展。
源码规模
| 属性 | 值 |
|---|---|
| 源文件 | 50 个(49 .java + 1 .scala) |
| 目录 | 全部在 src/main/scala/net/bdew/neiaddons/(GTNH Scala 迁移布局,Java 文件也放在 scala 目录下) |
唯一的 .scala |
forestry/MutationDumper.scala |
| 根包 | net.bdew.neiaddons |
| Minecraft | 1.7.10,Forge 10.13.4.1614,channel stable |
| 构建 | com.gtnewhorizons.gtnhconvention 插件,build.gradle 仅 4 行 |
| 授权 | MMPL 1.0 |
依赖
dependencies.gradle 只有三条,全部带 :dev classifier:
| 声明 | 坐标 | 作用域 | 作用 |
|---|---|---|---|
api |
com.github.GTNewHorizons:NotEnoughItems:2.8.145-GTNH:dev |
硬依赖 | 7 个 NEI 接口的来源 |
implementation |
com.github.GTNewHorizons:ForestryMC:4.11.31:dev |
软依赖 | 5 个遗传类 handler |
implementation |
com.github.GTNewHorizons:waila:1.19.30:dev |
软依赖 | 3 个 WAILA provider |
⚠️ 本仓库没有 devOnlyNonPublishable 配置——grep -rn "devOnlyNonPublishable" --include=*.gradle --include=*.properties 在整个源码树零命中。GTNH 的软依赖惯例是用 :dev classifier 表达:这些依赖只存在于开发期 classpath,发布出去的 pom 会剔除它们。因此:
- 发布版 jar 不声明 Forestry 与 Waila 为依赖,玩家必须自行安装。
- 运行时安全靠两层反射 + 两层自检兜底:
Utils.getAndCheckClass/Utils.getAndCheckStaicField反射加载所有跨 mod 类;BaseAddon.getDependencies()+verifyModVersion()在preInit阶段就判存在性与版本。 - 因此哪个集成真正生效,取决于玩家实际装了谁,而不是 gradle 声明。
7 个 NEI 接口(本 wiki 的核心)
| NEI 接口 | 实现类 | 状态 |
|---|---|---|
IConfigureNEI |
NEIAddonsConfig |
生效 |
IRecipeHandler |
6 个类,经 TemplateRecipeHandler 间接实现 |
生效 |
INEIGuiAdapter |
AppEngGuiHandler |
生效 |
IContainerTooltipHandler |
DeveloperGuiHandler |
生效但默认关闭 |
IOverlayHandler |
CustomOverlayHandler |
死代码,无实例化点 |
ItemFilter |
ModItemFilter |
死代码,无实例化点 |
IStackPositioner |
由 CustomOverlayHandler 实例化 OffsetPositioner 使用 |
随死代码 |
6 个 addon 速查
| addon | modid 后缀 | 目标 mod | 侧 | 产出 |
|---|---|---|---|---|
| Applied Energistics 2 | |AppEng |
appliedenergistics2 | 双端 | AE2 界面 NEI 拖拽填装 + 1 条 C2S 包 |
| Botany | |Botany |
Botany | 仅客户端 | 1 个花育种页 |
| Crafting Tables | |CraftingTables |
8 个老 mod | 仅客户端 | 8 类界面的合成叠加层 |
| Developer Tools | |Developer |
无 | 仅客户端 | 槽位调试 tooltip(默认关闭) |
| Ex Nihilo | |ExNihilo |
exnihilo + Waila | 仅客户端 | 3 个 WAILA provider(非 NEI) |
| Forestry | |Forestry |
Forestry | 双端 | 5 个遗传类配方页 + 5 类搜索注入 |
本 mod 没有的东西(grep 证据)
在 src/main 下全量搜索,下列模式全部零命中文件:
| 模式 | 含义 | 命中 |
|---|---|---|
GameRegistry.registerBlock / registerBlock |
方块注册 | 0 |
registerItem / new Item( / new Block( |
物品注册 | 0 |
registerTileEntity / TileEntity extends |
TileEntity | 0 |
EntityRegistry / @EntityHandler |
实体 | 0 |
extends Block |
Block 子类 | 0 |
Enchantment |
附魔 | 0 |
addChatCommand / CommandBase / ICommand |
指令 | 0 |
new KeyBinding / KeyBinding / registerKeyBinding |
热键 | 0(连 grep 都是 NO MATCH) |
BiomeGen / WorldProvider / registerDimension |
群系 / 维度 / 世界生成 | 0 |
Achievement |
成就 | 0 |
Potion |
Buff / Debuff | 0 |
⇒ 本 mod 没有方块、物品、实体、多方块结构、附魔、世界/维度、热键、Buff/Debuff、群系、结构、成就、物品效果、指令这 13 个维度中的任何一个。 本 wiki 因此不建对应目录。
唯一不属于 NEI 的第三方接口是 WAILA 的 IWailaDataProvider × 3。
死代码清单
以下类在源码中实现接口 / 写完整逻辑,但全仓无任何实例化点,不要当成生效功能:
| 类 | 接口 | 证据 |
|---|---|---|
utils/CustomOverlayHandler |
IOverlayHandler |
grep -rn 只命中自身第 33、40 行 |
utils/SetRecipeCommandHandler |
SubPacketHandler |
只命中自身第 19、24 行 |
utils/ModItemFilter |
ItemFilter |
只命中自身第 15、20 行 |
utils/ItemStackWithTip + utils/PositionedStackWithTip |
— | 只被彼此引用 |
Utils.getAndCheckStaicField |
— | 无调用点(方法名 Staic 为源码原样拼写) |
AppEngGuiHandler.isMouseOverSlot |
— | 无调用点(用的是继承来的同名方法) |
assets/.../textures/items/invalid.png |
— | 无代码引用 |
与 mcmod.info 的不一致
src/main/resources/mcmod.info 声明了 9 个 mod 容器,@Mod 注解只有 7 个。多出的两条元数据:
| mcmod.info 里的 modid | 源码中是否存在 |
|---|---|
NEIAddons|ExtraBees |
❌ 无 AddonExtraBees 类 |
NEIAddons|MiscPeripherals |
❌ 无 AddonMiscPeripherals 类 |
这两条是上游遗留。Extra Bees 的支持仍然存在,但它是以 BeeHelper.getMobCombs() 里 Loader.isModLoaded("ExtraBees") + 反射取 binnie.extrabees.ExtraBees.comb 字段的方式实现的蜂蜡子物品扩展,不是独立 addon。Misc Peripherals 完全没有残留。
条目索引
游戏设定
- 配置文件 -
config/NEIAddons.cfg的全部 21 个选项,逐项标注门控哪个集成 - Addon 架构与加载顺序 - 7 个
@Mod容器的加载链路、checkSide/verifyModVersion判定、meta 描述改写 - 网络协议 - 通道
bdew.neiaddons、hello握手、SetAE2FakeSlot包 - 开发者工具 -
IContainerTooltipHandler槽位调试,唯一默认关闭的 addon - Mutation 转储工具 - 唯一的
.scala文件与 3 处API.addOption
NEI 集成
- NEI 接口实现总表 - 7 个接口 + 简报里假设但源码没有的 6 个接口
- Forestry 集成 - 5 个遗传类 handler、搜索注入、蜂蜡子物品跨模反射
- Botany 集成 - 1 个花育种页,共享 Forestry 的静态开关
- Applied Energistics 2 集成 -
INEIGuiAdapter拖拽语义 + GUI 黑名单 - 合成工作台集成 - 8 个 1.7.10 老 mod 的 GUI 叠加层
- Ex Nihilo 集成 - 3 个 WAILA provider,唯一不含 NEI 代码的 addon
- 叠加层与 GUI 挂钩 - 死代码集中说明 + 5 个
ColorResource+ Access Transformer