You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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

火山引擎 最新活动