本 mod 没有的东西
本条目是反向索引:记录 JustEnoughCalculation(GTNH fork)明确不存在的内容, 并给出可复现的 grep 证据。之所以需要它,是因为这个 mod 的资源文件里残留着 大量已经不存在的注册物的痕迹(见第 1 节),极易让人误以为它注册了物品。
核实基准:
/Users/evlos/a/mirror/JustEnoughCalculation/,commitef2a0a1, 提交时间2025-03-02T13:33:36+01:00。 全仓库src/main/java共 105 个 Java 文件,其中 97 个是本 mod 自己的代码, 另 8 个位于me/towdium/jecalculation/polyfill/(反编译的 Minecraft / Forge 兼容垫片,不含任何注册逻辑)。本条目所有 grep 均排除polyfill/。
1. 没有注册任何物品 —— 但资源文件留下了痕迹
资源侧确实存在
| 文件 | 内容 |
|---|---|
assets/jecalculation/models/item/item_calculator_crafting.json |
{"parent": "item.generated", "layer0": "jecalculation:items/item_calculator_crafting"} |
assets/jecalculation/models/item/item_calculator_math.json |
同上,纹理为 item_calculator_math |
assets/jecalculation/textures/items/item_calculator_crafting.png |
贴图 |
assets/jecalculation/textures/items/item_calculator_math.png |
贴图 |
lang/en_US.lang 第 2~3 行 |
item.item_calculator_crafting.name=Crafting calculator / item.item_calculator_math.name=Math calculator |
lang/zh_CN.lang 第 2~3 行 |
同键,中文为「合成计算器」「数学计算器」 |
lang/ru_RU.lang 第 2~3 行 |
同键,俄文为「Калькулятор создания」「Математический калькулятор」 |
(三个 lang 文件的这两行位置完全一致,都在第 1 行注释之后。)
item.<注册名>.name 正是原版物品显示名的命名空间,配合 item/generated 模型,
这是一套完整的「已注册物品」资源。
代码侧完全不存在
$ grep -rn --include=*.java "item_calculator_crafting\|item_calculator_math\|calculator_crafting\|calculator_math" src/
(零命中)
本 mod 自己的 97 个 Java 文件里,所有物品注册惯用法全部为零:
| 检索模式 | 命中数 |
|---|---|
registerItem |
0 |
GameRegistry.register |
0 |
extends Item |
0 |
extends ItemBlock |
0 |
new Item( |
0 |
RegistryEvent |
0 |
class .* extends .*Item |
0 |
grep -rn "Registry.register" 命中的两行其实是
ClientRegistry.registerKeyBinding(...)(热键注册,不是物品);
grep -rn "Item item =" 命中的三处是 utils/ItemStackHelper.java:25、
data/label/labels/LOreDict.java:156 和 ILabel.java:77 的局部变量声明,
全部是「读别人的物品」,没有一处是「定义自己的物品」。
结论:合成计算器物品与数学计算器物品在本 fork 中不存在。 它们的模型、贴图与本地化条目是上游遗留的孤儿资源,游戏里拿不到。 要打开这两个界面只能用 热键 或
/jeca craft//jeca math(见 指令)。
更多「已移除」痕迹
| 位置 | 残留物 | 说明 |
|---|---|---|
data/Controller.java:62 |
static Optional<ItemStack> getStack() { return Optional.empty(); } |
方法体恒返回空,原本用于「取玩家手持的计算器物品」 |
lang/*.lang |
jecalculation.chat.server_mode=...you cannot open the interface without an calculator item |
该键无任何 Java 引用,是物品移除前的提示 |
lang/*.lang |
jecalculation.config.force_client |
无任何 Java 引用 |
lang/*.lang |
jecalculation.command.state.active |
无任何 Java 引用(见 指令) |
lang/*.lang |
jecalculation.command.state.inactive |
代码传的是裸键 "inactive",这个带前缀的键同样无人引用 |
lang/*.lang |
jecalculation.chat.help |
无任何 Java 引用 |
⚠️ 判定本地化条目是否被使用时不能直接搜全名:
Utilities.I18n.get(key)会 自动补上"jecalculation."前缀,ISubCommand.getKey(k)也按"jecalculation.command." + getName() + "." + k拼接。所以jecalculation.gui.*下的大部分条目虽然搜不到全名,实际上都在用。 上面列出的 6 条是逐条确认过连后缀形式也搜不到的。
2. 没有方块、TileEntity、实体、多方块结构
| 检索模式 | 命中数 |
|---|---|
registerBlock |
0 |
registerTileEntity |
0 |
registerEntities |
0 |
extends TileEntity |
0 |
extends Entity |
0 |
extends EntityLiving |
0 |
主类 JustEnoughCalculation 只有 5 个 @Mod.EventHandler:
preInit / init / postInit 与 5 个服务器生命周期回调,且全部只是转发给
proxy,proxy 侧也不做任何注册。CommonProxy 里五个服务器回调是空转发,
ClientProxy 只做 4 件事:读配置、注册事件、注册 2 个热键、注册 1 条客户端指令。
3. 没有附魔、维度、群系、结构、成就、Buff、物品效果
| 检索模式 | 命中数 |
|---|---|
EnchantmentData |
3(见下方说明,均为消费而非注册) |
Enchantment(作为注册) |
0 |
DimensionProvider / WorldProvider |
0 |
WorldGen / BiomeProvider |
0 |
WorldSavedData |
0 |
Achievement |
0 |
MobEffect / Potion |
0 |
onItemUse / onEntityItemUpdate |
0 |
关于 EnchantmentData:本 mod 确实在 ILabel.Converter 里处理了它,但那是一个
物品(原版附魔书的内容载体),处理方式是「读别人已有的附魔并包装成标签」:
if (item instanceof EnchantmentData) {
ItemStack itemStack = new ItemStack(Items.enchanted_book);
new ItemEnchantedBook().addEnchantment(itemStack, (EnchantmentData) item);
return new LItemStack(itemStack);
}
即把 NEI 给出的「附魔数据」转成一个 Items.enchanted_book 的 ItemStack 标签。
本 mod 没有 extends Enchantment、没有 registerEnchantment,
不提供任何附魔。
src/main/resources/META-INF/jeca_at.cfg 里只有 2 条 access transformer,
都是给 NEI 读 NBT 用的,且都只是取消字段的 private:
# NEI Access Transformer configuration file
public net.minecraft.nbt.NBTTagCompound field_74784_a #tagMap
public net.minecraft.nbt.NBTTagList field_74747_a #taglist
不涉及任何方块、附魔或世界生成。
4. 没有服务端指令、没有网络封包
| 检索模式 | 命中数 |
|---|---|
ICommand(按词精确匹配,grep -w) |
0 |
ICommandSender |
20(全部是 JecaCommand / 4 个子命令的方法签名形参类型) |
extends CommandBase |
1(JecaCommand,即客户端指令本身) |
registerServerCommand |
0 |
SimpleNetworkWrapper / FMLEmbeddedChannel |
0 |
IMessage / MessageContext |
0 |
⚠️
grep -rn "ICommand"会命中 20 次,但全部是ICommandSender(子串), 并不存在ICommand实现。要精确判定需加grep -w。
指令只通过 ClientCommandHandler.instance.registerCommand(...) 注册,
纯客户端。CommonProxy.serverStarting 上方有一句注释
// register server commands in this event handler,但方法体是空的。
唯一出网的调用是 NEIPlugin.findItem 向 Find It 发
FindItNetwork.CHANNEL.sendToServer(new FindItemRequest(...))——那是第三方模组的通道,
不是本 mod 的。
5. 不显示装备属性数值
本 mod 没有任何读取装备属性的代码。它不显示:
| 常见「计算器」属性 | 本 mod 有无 |
|---|---|
| 攻击伤害(damage) | 无 |
| 攻速(attack speed) | 无 |
| 护甲值(armor) | 无 |
| toughness / knockback resistance | 无 |
| 挖掘速度(mining speed) | 无 |
| 挖掘等级(harvest level) | 无 |
| 爆炸抗性(blast resistance) | 无 |
| 耐久(durability) | 无 |
| 步行速度 / 跳跃高度 | 无 |
| 附魔附魔(enchantability) | 无 |
grep -rn "getItemAttributeModifiers\|ToolMaterial\|getExplosionResistance\|getMaxItemUseDuration\|getDurabilityForMinecraft\|getAttackDamage\|EntityEquipmentSlot\|EquipmentAttribute" 在本 mod 代码中零命中(排除 polyfill/)。
计算器结果面板里的每一个格子都是一种标签的数量——物品、流体、矿物词典或 占位符,没有任何一种格子承载属性数值。这是它与「Damage Indicators」「IndustrialCraft 的 EIO Player Inspector」一类属性显示模组的根本区别。
6. 没有 REI / JEI 支持
| 检索模式 | 命中数 |
|---|---|
me.cqpire.roughlyenoughitems / REI |
0 |
mezz.jei / JEI |
0 |
本 mod 只支持 NotEnoughItems(codechicken.nei.*),
且通过 @Mod(dependencies = "required-after:NotEnoughItems") 声明为硬依赖。
它也不提供任何 NEI 搜索提供者(search provider)或自定义配方处理器,
只消费别人已有的配方处理器。详见 NEI 集成。
7. 没有 REI/JEI 之外的高级显示选项
main.cfg 里看起来有 4 个可调项,但它们全部未被读取(详见 配置):
| 配置项 | 声明的效果 | 实际情况 |
|---|---|---|
ClientMode |
强制客户端模式,不允许物品和配方,改用热键 | 无读取点 |
EnableInventoryCheck |
设为 false 关闭自动背包检查 | 无读取点 |
ListRecipeBlackList |
禁止某类配方快速导入 | 无读取点 |
ListRecipeCategory |
配方分类列表(注释称由 mod 自动维护) | 无读取点,且默认值为硬编码常量 |
唯一的读取点 JecaConfig.isClintMode() 在全仓库零调用。
这正是「客户端模式」在本 fork 中已经变成事实(没有物品了)而非可选项的体现—— 配置项没跟上代码的删除。
8. 没有的维度一览
以下 11 个维度在本 mod 中确认无内容,故未创建对应目录:
| 维度 | 为何为空 |
|---|---|
| 方块 | 无 registerBlock,无方块类 |
| 物品 | 无 registerItem,模型/贴图是孤儿资源(第 1 节) |
| 实体 | 无 registerEntities,无 Entity 子类 |
| 多方块 | 无任何结构类 |
| 附魔 | 无 extends Enchantment、无 registerEnchantment(EnchantmentData 的 3 处命中是读取,见第 3 节) |
| 维度 | 无 DimensionProvider |
| 药水效果 | 无 MobEffect / Potion |
| 群系 | 无 WorldGen / BiomeProvider |
| 结构 | 无 WorldSavedData |
| 成就 | 无 Achievement |
| 物品效果 | 无 onItemUse 等物品交互覆写 |