本篇教程由作者设定使用 CC BY-NC 协议。

游戏版本:1.20.1(经测试,1.14.4-1.20.1均通用)

  • 创建data目录和pack.mcmeta文件

    本教程使用的pack.mcmeta如下

  • {
        "pack": {
            "pack_format": 4,
            "description": "教程用数据包"
        }
    }
  • 在data下创建文件夹,目录名即为命名空间,本教程中为test

  • 在test创建文件夹,目录结构如下

  • 当前的目录结构

pack.mcmeta

data

    test

        advancements

            return
        functions

        recipes

在recipes下创建配方,这里以金锭胡萝卜合成金胡萝卜返还金粒为例

{
  "type": "minecraft:crafting_shapeless",
  "category": "misc",
  "ingredients": [
    {
      "item": "minecraft:gold_ingot"
    },
    {
      "item": "minecraft:carrot"
    }
  ],
  "result": {
    "item": "minecraft:golden_carrot"
  }
}

以上为一个基础的无序合成配方,不懂可自行查阅wiki或站内外教程

在return下创建一个文件,命名为*.json(*处可替换,这里以get_gold_carrot.json为例)

{
  "criteria": {
    "craft_lantern": {
      "trigger": "recipe_crafted",
      "conditions": {
        "recipe_id": "test:golden_carrot"
      }
    }
  },
  "rewards": {
    "function": "test:return_gold"
  },
  "sends_telemetry_event": false
}

在上面的json中,我们创建了一个名为get_gold_carrot的进度(与文件名相同),当进行test:golden_carrot合成后获得test:get_gold_carrot进度并执行函数test:return_gold,下面我们就来编写这个函数

在function文件夹下创建一个文件,命名为*.mcfunction(*处需与上文json中"function": "test:return_gold"
值命名空间后的部分相同,这里为return_gold.mcmeta)

execute as @s at @s run give @s minecraft:gold_nugget 1
advancement revoke @s only test:return/golden_carrot

在上面的函数中,我们给予了触发该进度的玩家一个金粒并移除了该进度,使得下次合成时仍将正常触发

好了,可以打包进游戏测试了数据包教程1:如何使自己数据包中的合成配方返还材料?-第1张图片数据包教程1:如何使自己数据包中的合成配方返还材料?-第2张图片




-第一次写教程,如有误请指正-