justenoughcalculation
[!INFO] Git Commit:
ef2a0a1| Updated: 2025-03-02
Just Enough Calculation(modid jecalculation,包名 me.towdium.jecalculation)
是 GTNH 1.7.10 上的一个纯客户端配方计算器。它把 NEI 里的配方拆解成
「要做出这个东西,到底需要哪些原始材料、各多少个」,并且能反过来算出
「我背包里这些东西能做出什么、多出多少」。
它的本质是一个递归配方展开算法 + 一个标签合并系统,全部逻辑都在客户端, 不注册任何方块、物品、实体,也不注册服务端内容(无网络封包、无服务端指令)。
它到底显示什么
只有数量。 结果面板上的每一个格子都是一种标签(物品 / 流体 / 矿物词典 / 占位符) 的个数或百分比。它不显示任何装备属性——没有伤害、没有攻速、没有挖掘速度、 没有爆炸抗性、没有耐久、没有护甲。相关 grep 证据见 本 mod 没有的东西。
三个使用入口
| 入口 | 说明 |
|---|---|
| 打开合成计算器 | 热键 keyOpenGuiCraft,默认未绑定 |
| 打开数学计算器 | 热键 keyOpenGuiMath,默认未绑定 |
| 指令 | /jeca craft、/jeca math,权限等级 0 |
两个热键的默认按键都是
Keyboard.KEY_NONE,所以装完必须自己绑定, 否则只能走/jeca指令。
游戏设定
- 合成显示模式 -
RecordCraft.Mode全部 4 个取值(INPUT/OUTPUT/CATALYST/STEPS)与Recipe.IO全部 3 个取值,以及每个模式渲染什么 - 数学显示模式 -
RecordMath.State全部 3 个取值与Operator全部 5 个取值的精确算式,含 7 位有效数字的除法精度 - 代价列表算法 - 核心算式:
multiplier = ⌈需求量 / 产出量⌉ = (amountB + amountA - 1) / amountB,以及合并、缩放、1000 步硬上限 - 合成步骤优化 -
STEPS模式的贪心重排 + 死胡同时的逆序回退,含背包槽位估算Σ ⌈数量 / 64⌉ - 标签类型与合并 - 4 种标签类型(itemStack/fluidStack/oreDict/placeholder)与 5 条合并规则,含模糊合并的符号门槛
- 配方消歧 - 同槽位多候选时的浮层、数量输入的红色/白色校验、
#与%互斥按钮 - 配方库管理 - 按组浏览、重命名、导入导出;「全部」视图的删除无二次确认
- NEI 集成 - tooltip 与 overlay 两个钩子、催化剂的 NEI ≥ 2.1.0-GTNH 版本门槛
- 配方适配器 - 8 个
IAdapter实现类(GT5/GT6 互斥,故同时最多 7 个)的 overlay 标识符与转换逻辑 - 指令 -
/jeca根指令 + 4 个子命令,权限等级 0 - 数据文件 -
record.json的 4 个顶层键、配方库 JSON 结构、导入导出 - 配置 -
main.cfg的 4 个配置项,以及为什么它们全部无效 - 本 mod 没有的东西 - 反向索引:11 个空维度 + 逐条 grep 证据
热键列表
⚠️ 三个容易踩的坑
-
两个计算器物品在游戏里不存在。 资源目录里留有
item_calculator_crafting/item_calculator_math的模型、贴图和item.*.name本地化条目,但全仓库 Java 代码零引用,也没有任何registerItem调用。这是上游遗留的孤儿资源。 证据见 本 mod 没有的东西。 -
main.cfg的 4 个配置项全部是死配置。 它们会被写入文件, 但唯一的读取点JecaConfig.isClintMode()零调用方,改了不会有任何效果。 详见 配置。 -
/jeca state恒输出未本地化的字面量。 它无条件发new ChatComponentTranslation("inactive")——注意是裸键而非jecalculation.command.state.inactive,所以原版客户端不会翻译它。 详见 指令。