配置
本 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 |
按组拼路径 |
详见 数据文件。
相关条目
- 数据文件 -
record.json/default.json/data/*.json的结构 - NEI 集成 - NEI 侧的版本门槛(另一类「开关」,但不是配置文件项)
- 本 mod 没有的东西 - 本 mod 不提供的数值维度