配置

本 mod 只有一个配置文件:config/JustEnoughCalculation/main.cfg。 ⚠️ 重要:这 4 个配置项全部被写入配置文件,但没有任何游戏逻辑读取它们(证据见下方)。

基本信息

属性 值
配置类 me.towdium.jecalculation.JecaConfig
配置文件 <config>/JustEnoughCalculation/main.cfg
Forge 版本 new Configuration(configFile, Tags.VERSION)
初始化时机 ClientProxy 的 preInit 阶段 → JecaConfig.preInit(event)
分类 全部落在 general 分类(EnumCategory.General.toString() 返回 "general")
配置项总数 4

preInit 的流程是固定的:

config = new Configuration(configFile, Tags.VERSION);
config.load();
handleInit();      // 对 EnumItems.values() 逐个调用 init()
config.save();

handleInit() 就是「把 4 个枚举值全部落盘」:

for (EnumItems item : EnumItems.values()) {
    item.init();
}

配置项全表

项名 类型 默认值 声明的注释(原文) 是否被读取
ClientMode Boolean true Set to true to force client mode: no item and recipe allowed, use key bindings instead. 否
EnableInventoryCheck Boolean true Set to false to disable auto inventory check 否
ListRecipeBlackList String[](空数组) new String[0] Add string identifier here to disable quick transfer of this type recipe + Names can be found in ListRecipeCategory 否
ListRecipeCategory String[] {"minecraft.crafting", "minecraft.smelting"} List of categories, this is maintained by the mod automatically 否

默认值来自 EnumItems.getDefault() 的 switch:

case ClientMode:
case EnableInventoryCheck:
    return true;
case ListRecipeBlackList:
    return new String[0];
case ListRecipeCategory:
    return new String[] { "minecraft.crafting", "minecraft.smelting" };

类型来自 EnumItems.getType():前两项是 EnumType.Boolean, 后两项是 EnumType.ListString。EnumType 共有 3 个取值 (Boolean / ListString / Error),Error 仅作为 switch 兜底返回值出现。

⚠️ ListRecipeCategory 的注释说「this is maintained by the mod automatically」, 但 getDefault() 返回的是一个硬编码常量,且没有任何代码往这个列表里写入条目。 它只是一个永不变化的初始值。

⚠️ 这 4 项都没有被读取(grep 证据)

JecaConfig 里唯一会读配置的方法是:

public static boolean isClintMode() {
    return EnumItems.ClientMode.getProperty().getBoolean();
}

(方法名 isClintMode 是源码里的拼写,Clint 而非 Client。)

但 grep -rn "isClintMode" 在整个 src/ 下只命中 JecaConfig.java 自己的定义处, 零调用点。而 getProperty() / .getBoolean() 的全部命中也只在 JecaConfig.java 内部:

src/main/java/me/towdium/jecalculation/JecaConfig.java:31:        return EnumItems.ClientMode.getProperty()
src/main/java/me/towdium/jecalculation/JecaConfig.java:32:            .getBoolean();
src/main/java/me/towdium/jecalculation/JecaConfig.java:124:        public Property getProperty() {

JecaConfig. 的所有跨文件引用也只涉及文件路径常量(dataDir / recordFile / defaultFile / preInit / getDataFile),没有任何一处涉及 EnumItems:

network/ClientProxy.java:28:        JecaConfig.preInit(event);
data/Controller.java:67,98,232,233,253:   JecaConfig.dataDir / getDataFile / recordFile
data/structure/Recipes.java:43:      File file = JecaConfig.defaultFile;

结论:这 4 个配置项在 GTNH fork 中已完全失效。它们被写入 main.cfg 供玩家看到, 但改动它们不会改变任何游戏行为。ClientMode 的注释尤其有误导性——它描述的是 上游「靠物品触发」的行为,而本 fork 已经不再有那些物品(见 本 mod 没有的东西)。

配置文件之外的数据文件

JecaConfig 同时定义了一组不受 Forge 配置系统管辖的数据文件路径:

字段 路径 用途
configDir <config>/JustEnoughCalculation/ 根目录
configFile .../main.cfg 上述 4 个配置项
recordFile .../record.json 会话状态(合成/数学/玩家记录)
defaultFile .../default.json 默认配方库
dataDir .../data/ 用户配方库(每组一个文件)
getDataFile(group) .../data/<group>.json 按组拼路径

详见 数据文件。

相关条目