内容包配置

基本信息

属性 值
加载清单 assets/gendustry/config/files.lst(5 行有效条目)
内部配置 tuning.cfg / recipes.cfg / upgrades.cfg / bees_color.cfg / bees_patreon.cfg
用户配置目录 <游戏目录>/config/gendustry/
覆盖目录 <游戏目录>/config/gendustry/overrides/(同名文件覆盖内部配置)
首次运行 写一份 readme.txt 说明加载顺序与覆盖机制

5 个内部配置文件

文件 内部位置 行数 内容
tuning.cfg assets/gendustry/config/ 180 机器 / 工具 / 遗传 / 电力参数
recipes.cfg 同上 241 合成配方与液体转化
upgrades.cfg 同上 303 21 种蜂箱升级件定义与配方
bees_color.cfg 同上 567 16 个染色蜂种 + 16 蜂巢 + 16 蜂蜜滴 + 离心与变异配方
bees_patreon.cfg 同上 47 1 个赞助蜂种

hives.cfg 不在清单里,仓库中只以示例形式存在于 example_configs/hives.cfg(不在 src/main/resources 内),因此默认不加载、默认注册 0 个蜂巢方块。

加载顺序

TuningLoader.loadConfigFiles 调 RecipesHelper.loadConfigs:

  1. 读取 classpath 上的 files.lst,按清单顺序释放 5 个文件到 config/gendustry/
  2. 再扫描 config/gendustry/ 下的所有 .cfg,按文件名字母序加载
  3. overrides/ 子目录中同名文件可整体替换内部配置

因为用户配置在内部配置之后加载,用户可以只写需要改的键来做局部覆盖(同段 / 同名键被后加载者覆盖),也可以用 overrides/ 做整体替换。

loader.loadDelayed() 在 postInit 阶段(Gendustry.scala:148)调 loader.processRecipeStatements(),此时才真正把配方语句提交给 Forge —— 因为配方可能引用尚未注册完的方块与物品。

条件指令

配置语言支持三类条件表达式(config/loader/ast.scala 等):

语法 语义
if HaveMod <modid> 模组已加载
if HaveMod "<modid>"|statements BuildCraft 风格命名空间与版本
if HaveOD <物品字典名> EnderIO 物品字典条目存在
if HaveForestryModule <Bees|Trees> Forestry 模块启用
<< / >> 块级条件包裹(bees_color.cfg / bees_patreon.cfg 整段用)

HaveOD 比 HaveMod 更细:EnderIO 的物品字典条目可能来自别的模组的整合包,因此按条目判定比按 modid 判定更稳。

配置合并语义

cfg 同名段会合并而非覆盖:

  • bees_color.cfg:365 注释写明 “Section can appear in multiple files at once, entries will be merged” —— 因此玩家可以在自己的 cfg 里只写一个 cfg HoneyCombs { cfg mycolor { ... } } 来追加第 17 种染色,而不必复制全部 16 种
  • HoneyCombs 与 HoneyDrops 的格式完全相同,注释也点明 “Same format as combs”
  • Branches 段的 cfg 名 “is unused but must be unique” —— 唯一性靠段名保证,但真正生效的是 UID

蜂巢定义格式

example_configs/hives.cfg 提供 2 个完整示例(HiveGen Test / HiveGen Rock),指令清单与 自定义蜂巢方块 页一致。仓库同时附带 3 份本地化示例文件(hives.en_US.lang 2 行、example_bees.en_US.lang 4 行、example_bees.ru_RU.lang 3 行),以及 example_configs/example_bees.cfg —— 它是逐字段带注释的教学模板(文件头指向 http://bdew.net/gendustry/configuration/adding-custom-bees/),用 UID = "gendustry.test" 的占位蜂种演示 cfg Branches 与 cfg Bees 的全部字段。

CustomContent.registerSpecies 支持两个可选的条件字段 RequireMod 与 RequireOreDict(蜂种 UID 级别):前者要求指定 modid 已加载,后者要求指定物品字典条目存在,不满足则整条蜂种跳过注册并打日志。仓库内 5 个蜂种配置文件(bees_color.cfg 与 bees_patreon.cfg)一个都没用到这两个字段(grep -cE 'RequireMod|RequireOreDict' bees_color.cfg = 0,example_bees.cfg 同样为 0),因此这属于纯玩家自定义内容可用的扩展点。

相关条目