Not Enough SQL Exporter

[!INFO] Git Commit: dba624e | Updated: 2026-10-02

Not Enough SQL Exporter(mod id nesql-exporter)是一个 纯客户端的数据库导出工具模组。 它扫描当前整合包里所有已加载模组的物品、流体、配方、生物与任务数据, 转成 SQL 脚本并导入本地仓库或 PostgreSQL,用来搭建一个可查询的「整合包配方/物品数据库」网站。

⚠️ 本 mod 注册内容为 0

这是本 wiki 中少数几个 有 @Mod 注解、会被 FML 正常加载,但不注册任何游戏内容的模组。 全仓库检索注册调用点的结果:

注册表 数量
方块 0
物品 0
TileEntity 0
实体 0
附魔 / 配方 / 维度 0
服务端命令 1(/nesql)
配置 GUI 1(ConfigGuiFactory)

源码里唯一出现的 GameRegistry 调用是 GameRegistry.findUniqueIdentifierFor(item) (util/IdUtil.java:37、plugin/base/factory/ItemFactory.java:41-42)—— 这是只读查询「某个 ItemStack 属于哪个 mod」,不是注册。

因此本 wiki 不为它建立方块 / 物品 / 实体条目——那会是凭空捏造的内容。

工作方式

  1. 执行 /nesql(可选带文件名后缀)
  2. 导出在独立线程中跑,不阻塞客户端
  3. PluginRegistry 按启用状态遍历 9 个插件
  4. 每个插件把扫到的数据交给 com.github.dcysteine.nesql.sql.* 下的 SQL 生成器
  5. 结果写入本地仓库(默认目录名 nesql-repository)或推送到 PostgreSQL

命令用 new Thread(exporter::exportReportException).start() 启动, 异常通过 exportReportException 捕获而不会打断游戏。

插件(9 个)

插件 内部名 门控依赖 收录情况
BASE base 无(强制启用) —
MINECRAFT minecraft 无 原版数据
NEI nei 无 —
FORGE forge 无 —
MOBS_INFO mobsinfo mobsinfo 不在本 wiki 收录范围
AVARITIA avaritia Avaritia 已登记,尚未成文(前向引用 avaritia)
GREGTECH gregtech gregtech(版本不以 GT6 开头) 本 wiki 已收录
THAUMCRAFT thaumcraft Thaumcraft + thaumcraftneiplugin 本 wiki 已收录
QUEST quest betterquesting 已登记,尚未成文(前向引用 betterquesting)

GREGTECH 的门控特别处理过:GT5 与 GT6 共用 modid gregtech, ModDependency.GREGTECH_5.isLoaded() 会额外检查版本串是否以 GT6 开头。

依赖范围说明

  • NotEnoughItems(required-after:NotEnoughItems)— 硬依赖,不在本 wiki 收录范围
  • acceptableRemoteVersions = "*",且所有逻辑都提前 return 掉服务端分支, 实际是纯客户端模组,装在客户端即可
  • 上述各插件的依赖均为运行期软依赖(ModDependency 枚举逐个 isModLoaded)

设置列表

源码缺陷

  1. Main.MOD_DEPENDENCIES 声明 required-after:NotEnoughItems;, 但全部实际逻辑都只跑在客户端——服务器端被强制要求装 NEI 毫无必要。
  2. ModDependency 枚举里定义了 FORESTRY("Forestry"), 但 PluginRegistry 的 9 个插件没有任何一个门控它——死枚举项。
  3. database_password 默认空串,且配置 GUI 明文回写配置文件,无脱敏处理。
  4. 实体/物品的 mod 归属依赖 GameRegistry.findUniqueIdentifierFor, 对未注册进 Forge 物品注册表的对象会返回 null, IdUtil 直接 .getModId() / .getName() 而没有 null 检查—— 对第三方未规范注册的物品可能 NPE。