MrCrayfish’s Furniture Mod 兼容
事实基准:
harvestcraft-1.3.14-GTNH.jar(MC 1.7.10 / Forge 10.13.4.1614)CFR 0.152 反编译源码。
触发方式与安全性
| 属性 | 值 | 来源 |
|---|---|---|
| 依赖 modid | cfm |
HarvestCraft.java:129 |
不使用 Loader.isModLoaded |
由配置项控制 | HarvestCraft.java:128 |
| 配置键 | ItemRegistry.enablemrcrayfishcompatibility |
ItemRegistry.java:996 |
| 配置分类 / 默认值 | general / true |
配置:通用 |
| 注入方式 | FMLInterModComms.sendMessage("cfm", "register", "<方法名字符串>") |
HarvestCraft.java:129 |
| 传递的字符串 | "com.pam.harvestcraft.CrayfishCompatibility.registerRecipes" |
HarvestCraft.java:129 |
| 注入目标方法 | public static void registerRecipes(IRecipeRegistry registry) |
CrayfishCompatibility.java:15 |
| 调用时机 | init()(FMLInitializationEvent),经 sendIMCMessages() |
HarvestCraft.java:116,128-130 |
| CfM 未安装 | IMC 目标 modid 不存在,消息被丢弃,安全 | — |
注意:本模组只发一条 IMC 消息,内容是一个方法名字符串。真正调用 CrayfishCompatibility.registerRecipes 的是 CfM 侧(它按 "<类名>.<方法名>" 反射调用)。本模组不保证 CfM 存在时反射一定成功,也不做失败兜底。
注入的配方:92 条
CrayfishCompatibility.registerRecipes(CrayfishCompatibility.java:15-386)为 CfM 的 IRecipeRegistry 注册 92 条配方。
92 是用集合运算核对的:registry.registerRecipe(...) 的字面调用点 92 处,完整解析出的配方块 92 个 —— 两者相等,无遗漏、无重复。
| 家电 | 条数 | registerRecipe 的第一个参数 |
|---|---|---|
oven(烤箱) |
46 | "oven" |
microwave(微波炉) |
45 | "microwave" |
toaster(烤面包机) |
1 | "toaster" |
| 合计 | 92 | — |
每条配方的结构固定:
RecipeVariables <var> = new RecipeVariables();
<var>.addValue("input", (Object)new ItemStack(<输入>));
<var>.addValue("output", (Object)new ItemStack(<产物>));
registry.registerRecipe("<家电>", <var>);
RecipeVariables 与 IRecipeRegistry 均来自 com.mrcrayfish.furniture.api(CrayfishCompatibility.java:6-7)。
完整配方清单(92 条)
oven —— 46 条
| # | 变量名 | 输入 | 产物 |
|---|---|---|---|
| 1 | bread |
ItemRegistry.doughItem |
Items.field_151025_P(SRG 未解析) |
| 2 | toast |
Items.field_151025_P(SRG 未解析) |
ItemRegistry.toastItem |
| 3 | roastedpumpkinseeds |
Items.field_151080_bb(SRG 未解析) |
ItemRegistry.roastedpumpkinseedsItem |
| 4 | grilledmushroomred |
Blocks.field_150337_Q(SRG 未解析) |
ItemRegistry.grilledmushroomItem |
| 5 | grilledmushroombrown |
Blocks.field_150338_P(SRG 未解析) |
ItemRegistry.grilledmushroomItem |
| 6 | mutton |
ItemRegistry.muttonrawItem |
ItemRegistry.muttoncookedItem |
| 7 | calamari |
ItemRegistry.calamarirawItem |
ItemRegistry.calamaricookedItem |
| 8 | grilledasparagus |
ItemRegistry.asparagusItem |
ItemRegistry.grilledasparagusItem |
| 9 | ricecake |
ItemRegistry.riceItem |
ItemRegistry.ricecakeItem |
| 10 | tea |
ItemRegistry.tealeafItem |
ItemRegistry.teaItem |
| 11 | popcorn |
ItemRegistry.cornItem |
ItemRegistry.popcornItem |
| 12 | bakedsweetpotato |
ItemRegistry.sweetpotatoItem |
ItemRegistry.bakedsweetpotatoItem |
| 13 | coffee |
ItemRegistry.coffeebeanItem |
ItemRegistry.coffeeItem |
| 14 | grilledeggplant |
ItemRegistry.eggplantItem |
ItemRegistry.grilledeggplantItem |
| 15 | raisins |
ItemRegistry.grapeItem |
ItemRegistry.raisinsItem |
| 16 | grilledmushroom |
ItemRegistry.whitemushroomItem |
ItemRegistry.grilledmushroomItem |
| 17 | toastedcoconut |
ItemRegistry.coconutItem |
ItemRegistry.toastedcoconutItem |
| 18 | vanilla |
ItemRegistry.vanillabeanItem |
ItemRegistry.vanillaItem |
| 19 | roastedchestnut |
ItemRegistry.chestnutItem |
ItemRegistry.roastedchestnutItem |
| 20 | anchovy |
ItemRegistry.anchovyrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 21 | bass |
ItemRegistry.bassrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 22 | carp |
ItemRegistry.carprawItem |
Items.field_151101_aQ(SRG 未解析) |
| 23 | catfish |
ItemRegistry.catfishrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 24 | charr |
ItemRegistry.charrrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 25 | eel |
ItemRegistry.eelrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 26 | grouper |
ItemRegistry.grouperrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 27 | herring |
ItemRegistry.herringrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 28 | mudfish |
ItemRegistry.mudfishrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 29 | perch |
ItemRegistry.perchrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 30 | snapper |
ItemRegistry.snapperrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 31 | tilapia |
ItemRegistry.tilapiarawItem |
Items.field_151101_aQ(SRG 未解析) |
| 32 | trout |
ItemRegistry.troutrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 33 | tuna |
ItemRegistry.tunarawItem |
Items.field_151101_aQ(SRG 未解析) |
| 34 | walleye |
ItemRegistry.walleyerawItem |
Items.field_151101_aQ(SRG 未解析) |
| 35 | clam |
ItemRegistry.clamrawItem |
ItemRegistry.clamcookedItem |
| 36 | crab |
ItemRegistry.crabrawItem |
ItemRegistry.crabcookedItem |
| 37 | crayfish |
ItemRegistry.crayfishrawItem |
ItemRegistry.crayfishcookedItem |
| 38 | frog |
ItemRegistry.frograwItem |
ItemRegistry.frogcookedItem |
| 39 | octopus |
ItemRegistry.octopusrawItem |
ItemRegistry.octopuscookedItem |
| 40 | scallop |
ItemRegistry.scalloprawItem |
ItemRegistry.scallopcookedItem |
| 41 | shrimp |
ItemRegistry.shrimprawItem |
ItemRegistry.shrimpcookedItem |
| 42 | snail |
ItemRegistry.snailrawItem |
ItemRegistry.snailcookedItem |
| 43 | turtle |
ItemRegistry.turtlerawItem |
ItemRegistry.turtlecookedItem |
| 44 | turkey |
ItemRegistry.turkeyrawItem |
ItemRegistry.turkeycookedItem |
| 45 | rabbit |
ItemRegistry.rabbitrawItem |
ItemRegistry.rabbitcookedItem |
| 46 | venison |
ItemRegistry.venisonrawItem |
ItemRegistry.venisoncookedItem |
microwave —— 45 条
| # | 变量名 | 输入 | 产物 |
|---|---|---|---|
| 1 | microwavebread |
ItemRegistry.doughItem |
Items.field_151025_P(SRG 未解析) |
| 2 | microwavetoast |
Items.field_151025_P(SRG 未解析) |
ItemRegistry.toastItem |
| 3 | microwaveroastedpumpkinseeds |
Items.field_151080_bb(SRG 未解析) |
ItemRegistry.roastedpumpkinseedsItem |
| 4 | microwavegrilledmushroomred |
Blocks.field_150337_Q(SRG 未解析) |
ItemRegistry.grilledmushroomItem |
| 5 | microwavegrilledmushroombrown |
Blocks.field_150338_P(SRG 未解析) |
ItemRegistry.grilledmushroomItem |
| 6 | microwavemutton |
ItemRegistry.muttonrawItem |
ItemRegistry.muttoncookedItem |
| 7 | microwavecalamari |
ItemRegistry.calamarirawItem |
ItemRegistry.calamaricookedItem |
| 8 | microwavegrilledasparagus |
ItemRegistry.asparagusItem |
ItemRegistry.grilledasparagusItem |
| 9 | microwavericecake |
ItemRegistry.riceItem |
ItemRegistry.ricecakeItem |
| 10 | microwavewater |
ItemRegistry.freshwaterItem |
ItemRegistry.boiledwaterItem |
| 11 | microwavepopcorn |
ItemRegistry.cornItem |
ItemRegistry.popcornItem |
| 12 | microwavebakedsweetpotato |
ItemRegistry.sweetpotatoItem |
ItemRegistry.bakedsweetpotatoItem |
| 13 | microwavegrilledeggplant |
ItemRegistry.eggplantItem |
ItemRegistry.grilledeggplantItem |
| 14 | microwaveraisins |
ItemRegistry.grapeItem |
ItemRegistry.raisinsItem |
| 15 | microwavegrilledmushroom |
ItemRegistry.whitemushroomItem |
ItemRegistry.grilledmushroomItem |
| 16 | microwavetoastedcoconut |
ItemRegistry.coconutItem |
ItemRegistry.toastedcoconutItem |
| 17 | microwavevanilla |
ItemRegistry.vanillabeanItem |
ItemRegistry.vanillaItem |
| 18 | microwaveroastedchestnut |
ItemRegistry.chestnutItem |
ItemRegistry.roastedchestnutItem |
| 19 | microanchovy |
ItemRegistry.anchovyrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 20 | microbass |
ItemRegistry.bassrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 21 | microcarp |
ItemRegistry.carprawItem |
Items.field_151101_aQ(SRG 未解析) |
| 22 | microcatfish |
ItemRegistry.catfishrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 23 | microcharr |
ItemRegistry.charrrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 24 | microeel |
ItemRegistry.eelrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 25 | microgrouper |
ItemRegistry.grouperrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 26 | microherring |
ItemRegistry.herringrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 27 | micromudfish |
ItemRegistry.mudfishrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 28 | microperch |
ItemRegistry.perchrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 29 | microsnapper |
ItemRegistry.snapperrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 30 | microtilapia |
ItemRegistry.tilapiarawItem |
Items.field_151101_aQ(SRG 未解析) |
| 31 | microtrout |
ItemRegistry.troutrawItem |
Items.field_151101_aQ(SRG 未解析) |
| 32 | microtuna |
ItemRegistry.tunarawItem |
Items.field_151101_aQ(SRG 未解析) |
| 33 | microwalleye |
ItemRegistry.walleyerawItem |
Items.field_151101_aQ(SRG 未解析) |
| 34 | microclam |
ItemRegistry.clamrawItem |
ItemRegistry.clamcookedItem |
| 35 | microcrab |
ItemRegistry.crabrawItem |
ItemRegistry.crabcookedItem |
| 36 | microcrayfish |
ItemRegistry.crayfishrawItem |
ItemRegistry.crayfishcookedItem |
| 37 | microfrog |
ItemRegistry.frograwItem |
ItemRegistry.frogcookedItem |
| 38 | microoctopus |
ItemRegistry.octopusrawItem |
ItemRegistry.octopuscookedItem |
| 39 | microscallop |
ItemRegistry.scalloprawItem |
ItemRegistry.scallopcookedItem |
| 40 | microshrimp |
ItemRegistry.shrimprawItem |
ItemRegistry.shrimpcookedItem |
| 41 | microsnail |
ItemRegistry.snailrawItem |
ItemRegistry.snailcookedItem |
| 42 | microturtle |
ItemRegistry.turtlerawItem |
ItemRegistry.turtlecookedItem |
| 43 | microturkey |
ItemRegistry.turkeyrawItem |
ItemRegistry.turkeycookedItem |
| 44 | microrabbit |
ItemRegistry.rabbitrawItem |
ItemRegistry.rabbitcookedItem |
| 45 | microvenison |
ItemRegistry.venisonrawItem |
ItemRegistry.venisoncookedItem |
toaster —— 1 条
| # | 变量名 | 输入 | 产物 |
|---|---|---|---|
| 1 | toastertoast |
Items.field_151025_P(SRG 未解析) |
ItemRegistry.toastItem |
未解析的 SRG 名(本机无 MCP 映射表)
| SRG 名 | 出现位置 | 语义佐证 |
|---|---|---|
Items.field_151025_P |
CrayfishCompatibility.java:20,22(bread / toast) |
由 doughItem 产出、又能产出 toastItem;PamFoodRecipes.java:56-57 另有 addSmelting(doughItem → field_151025_P) 与 (field_151025_P → toastItem)。即面包。 |
Items.field_151080_bb |
:26 |
产出 roastedpumpkinseedsItem(烤南瓜籽)→ 南瓜种子。 |
Blocks.field_150337_Q |
:30 |
与 field_150338_P 同产物 grilledmushroomItem;本文件把两者命名为 grilledmushroomred / grilledmushroombrown → 红色蘑菇 / 棕色蘑菇。 |
Blocks.field_150338_P |
:34 |
同上 → 棕色蘑菇。 |
Items.field_151101_aQ |
30 处(15 条鱼 × oven/microwave) | 输入输出都是它自己,即"烤熟鱼";OvenRecipes.java:53 有 addSmeltingRecipe(fishtype → Items.field_151101_aQ, fishtype 的 meta) → 烤鱼(带 meta,代码里刻意保留 func_150976_a() 变体 meta)。 |
以上"推定"来自变量名与上下文,不是 MCP 映射表。
源码缺陷 / 观察
| 位置 | 问题 |
|---|---|
CrayfishCompatibility.java:87-89 |
oven 段的 vanilla 配方是 input = vanillaItem → output = vanillaItem,即输入与输出相同。若原意是"香草荚 → 香草荚"(无意义)或写错了输入,源码无法区分。(鱼类配方不是"输入=输出":30 条鱼类配方的输入是本模组的 ItemRegistry.<鱼>rawItem,输出才是 Items.field_151101_aQ。) |
HarvestCraft.java:129 |
注入靠方法名字符串反射,未装 CfM 时消息被丢弃(安全),装了 CfM 但反射失败时无任何异常处理。 |