Minecraft 1.21.4 Fabric模组自定义配方解析错误求助
自定义Minecraft 1.21.4 Fabric模组配方JSON解析失败问题解决
错误日志
[23:41:37] [Render thread/INFO] (Minecraft) Created: 1024x512x0 minecraft:textures/atlas/gui.png-atlas [23:41:44] [Worker-Main-6/ERROR] (Minecraft) Couldn't parse data file 'tutorial-mod:pink_garnet' from 'tutorial-mod:recipe/pink_garnet.json': DataResult.Error['List is too short: 0, expected range [1-9]'] [23:41:44] [Worker-Main-6/ERROR] (Minecraft) Couldn't parse data file 'tutorial-mod:pink_garnet_block' from 'tutorial-mod:recipe/pink_garnet_block.json': DataResult.Error['Map entry '#' : Failed to parse either. First: Input does not contain a key [fabric:type]: MapLike[{"item":"tutorial-mod:pink_garnet"}]; Second: Failed to parse either. First: Not a string: {"item":"tutorial-mod:pink_garnet"}; Second: Failed to parse either. First: Not a json array: {"item":"tutorial-mod:pink_garnet"}; Second: Not a string: {"item":"tutorial-mod:pink_garnet"}'] [23:41:44] [Render thread/INFO] (Minecraft) Loaded 1370 recipes [23:41:44] [Render thread/INFO] (Minecraft) Loaded 1481 advancements
相关文件内容
resource/data/tutorial-mod/recipe/pink_garnet_block.json(原错误文件)
{ "type": "minecraft:crafting_shaped", "category": "misc", "key": { "#": { "item": "tutorial-mod:pink_garnet" } }, "pattern": [ "###", "###", "###" ], "result": { "count": 1, "id": "tutorial-mod:pink_garnet_block" } }
resource/data/tutorial-mod/recipe/pink_garnet.json(原错误文件)
{ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ { "item": "tutorial-mod:pink_garnet_block" } ], "result": { "count": 9, "id": "minecraft:diamond" } }
src/main/java/me/saudoge/TutorialMod.java
package me.saudoge; import me.saudoge.block.ModBlocks; import me.saudoge.item.ModItemGroups; import me.saudoge.item.ModItems; import net.fabricmc.api.ModInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TutorialMod implements ModInitializer { public static final String MOD_ID = "tutorial-mod"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); @Override public void onInitialize() { LOGGER.info("Hello Fabric world!"); ModItems.registerModItems(); ModBlocks.registerModBlocks(); ModItemGroups.registerItemGroups(); } }
问题分析与解决方案
问题根源是1.21版本Minecraft更新了配方JSON格式,旧教程的格式不再兼容,具体修正点如下:
1. 修正方块合成配方(pink_garnet_block.json)
- 把
key内的原料格式从{"item": "..."}改为字符串简写(或完整类型格式) - 将
result中的id字段改为item(1.21版本已废弃id字段)
修正后的文件:
{ "type": "minecraft:crafting_shaped", "category": "misc", "key": { "#": "tutorial-mod:pink_garnet" }, "pattern": [ "###", "###", "###" ], "result": { "count": 1, "item": "tutorial-mod:pink_garnet_block" } }
2. 修正方块拆解配方(pink_garnet.json)
- 使用1.21新增的
minecraft:crafting_deconstruct类型(专门用于拆解方块为原料,替代旧的无配方拆解) - 拆解配方使用
ingredient单数字段,而非ingredients复数 - 将
result中的id改为item,并修正为正确的产出物品(原文件错误写为钻石,应改为自定义的粉石榴石)
修正后的文件:
{ "type": "minecraft:crafting_deconstruct", "category": "building", "ingredient": { "type": "minecraft:item", "item": "tutorial-mod:pink_garnet_block" }, "result": { "count": 9, "item": "tutorial-mod:pink_garnet" } }
3. 文件夹结构验证
你的资源文件夹结构是正确的,无需调整,问题仅出在配方格式不符合1.21版本要求。
内容的提问来源于stack exchange,提问作者Arnold LI




