说明

已经有个类似的教程了:运用 Open Loader 或 CraftTweaker 自定义植物盆配方

但它有点不完整,也是个人教程,不能改,所以自己写的一个。

注释:此教程只教数据包的,至于 CraftTweaker 的,请看另一个类似教程或 Wiki 。

注意:此教程有两处操作需要开启显示文件扩展名!

做好基础

首先做好基础。

新建文件夹

新建一个文件夹,随便命名一个,用于制作数据包。

pack.mcmeta 文件

打开制作数据包的文件夹,在里面新建一个 pack.mcmeta 文件,需开启显示文件扩展名,可能会警告,点击「 是 」。

打开 pack.mcmeta 文件,在里面输入代码:

{
  "pack": {
    "pack_format": X,
    "description": "数据包简介"
  }
}

根据 Minecraft 版本替换代码中的 X :

  • 1.16.5 为 6

  • 1.18.2 为 9

  • 1.19.2~1.19.3 为 10

  • 1.19.4 为 12

  • 1.20~1.20.1 为 15

  • 更多数值请参考:数据包/版本

代码中的 数据包简介 字段是数据包的简介,可以使用字符串或文本组件来修改。

data 文件夹

在制作数据包的文件夹里新建一个 data 文件夹。

然后在 data 文件夹里再新建文件夹,文件夹名是你的数据包命名空间ID,请使用数字、小写字母、下划线和连字号(减号)来命名。

然后再在里面新建一个 recipes 文件夹。

之后根据你想自定义的东西在里面新建文件夹:

  • crops:种子及产物

  • soil:土壤

  • fertilizers:肥料

  • pot_interaction:盆栽交互(1.18.2 新增)

最后在文件夹里新建文件命为合法字符的 json 文件,需开启显示文件扩展名,可能会警告,点击「 是 」。

选择 植物盆栽 所用的 Minecraft 版本

由于植物盆栽出 1.16.5 以上的版本后,代码变了,和 1.16.5 的不一样了,所以请选择植物盆栽所用的 Minecraft 版本。

1.16.5

Crops 代码

{
  "type": "botanypots:crop",
  "seed": {
    "item": "minecraft:coal" 
  },
  "categories":["coal"], 
  "growthTicks": 1200, 
  "growthModifier": 1.2, 
  "display": {
    "block": "minecraft:coal_ore"
    },
  "results": [
    {
      "chance": 1, 
      "output": {
        "item": "minecraft:coal" 
      },
      "minRolls": 2, 
      "maxRolls": 3 
    }
  ]
}
  • seed 的 item 是种子,物品输入格式为 MODID:物品ID 。

  • categories 是土壤类型,取决于这个能种在哪个土壤上,如果要设置第 2 个,在「 [] 」里的倒数第 1 个「 " 」后面添加「 , 」,然后接着输入「 "" 」,在里面填写土壤类型;同理,设置多个就重复 在「 [] 」里的倒数第 1 个「 " 」后面添加「 , 」,然后接着输入「 "" 」,在里面填写土壤类型 的操作,后面的土壤代码会有。

  • growthTicks 是基础生长时间,单位为 tick ,1 秒 = 20 tick,填 0 无效

  • growthModifier 是基础生长时间倍数。

  • display 的 block 是生长时所显示的方块,方块的输入格式为 MODID:方块ID 。

  • results 就是产物了, chance 是几率,output 的 item 是产出的物品,格式为 MODID:物品ID ,minRolls 是最小产量数量,maxRolls 是最大产量数量;如果想设置第 2 个产物,就在倒数第 2 个的「 } 」后面添加「 , 」,然后换一行再写代码:

    {
      "chance": 1, 
      "output": {
        "item": "minecraft:coal" 
      },
      "minRolls": 2, 
      "maxRolls": 3 
    }

同理,设置多个产物就重复 在倒数第 2 个的「 } 」后面添加「 , 」,然后换一行再写代码 的操作。

Soil 代码

{
  "type": "botanypots:soil",
  "input": {
    "item": "minecraft:coal_block"
  },
  "display": {
    "block": "minecraft:coal_block"
  },
  "growthModifier": 0,
  "categories": ["coal"]
}
  • input 的 item 是所使用的物品,物品输入格式为 MODID:物品ID 。

  • display 的 block 是显示的方块,方块的输入格式为 MODID:方块ID。

  • growthModifier 是修改基础生长时间倍数,公式为 生长时间=基础生长时间*(1+修改生长时间倍数)

  • categories 是土壤类型,可以多设。

Fertilizer 代码

{
  "type": "botanypots:fertilizer",
  "fertilizer": {
    "item": "minecraft:coal" 
  },
  "minTicks": 50, 
  "maxTicks": 80 
}
  • fertilizer 的 item 是所使用的物品,物品输入格式为 MODID:物品ID 。

  • minTicks 是最小减少 tick 值。

  • maxTicks 是最大减少 tick 值。

1.18.2+

Crops 代码

{
  "type": "botanypots:crop",
  "seed": {
    "item": "minecraft:coal"
  },
  "categories": [
    "coal"
  ],
  "growthTicks": 1200,
  "display": {
    "block": "minecraft:coal_ore"
  },
  "drops": [
    {
      "chance": 1.00,
      "output": {
        "item": "minecraft:coal"
      },
      "minRolls": 2,
      "maxRolls": 3
    }
  ]
}
  • seed 的 item 是种子,物品输入格式为 MODID:物品ID 。

  • categories 是土壤类型,取决于这个能种在哪个土壤上,如果要设置第 2 个,在「 [] 」里的倒数第 1 个「 " 」后面添加「 , 」,然后回车,对齐上面的(其实不用对齐也行,纯属美观),接着输入 「 "" 」,在里面填写土壤类型;同理,设置多个就重复 在「 [] 」里的倒数第 1 个「 " 」后面添加「 , 」,然后回车,对齐上面的,接着输入「 "" 」,在里面填写土壤类型 的操作,后面的土壤代码会有。

  • growthTicks 是基础生长时间,单位为 tick , 1 秒 = 20 tick,填 0 无效

  • display 的 block 是生长时所显示的方块,方块的输入格式为 MODID:方块ID 。

  • drops 就是产物了, chance 是几率,output 的 item 是产出的物品,格式为 MODID:物品ID ,minRolls 是最小产量数量,maxRolls 是最大产量数量;如果想设置第 2 个产物,就在倒数第 2 个的「 } 」后面添加「 , 」,然后换一行再写代码:

    {
      "chance": 1, 
      "output": {
        "item": "minecraft:coal" 
      },
      "minRolls": 2, 
      "maxRolls": 3 
    }

同理,设置多个产物就重复 在倒数第 2 个的「 } 」后面添加「 , 」,然后换一行再写代码 的操作。

Soil 代码

{
  "type": "botanypots:soil",
  "input": {
    "item": "minecraft:coal_block"
  },
  "display": {
    "block": "minecraft:coal_block"
  },
  "categories": [
    "coal"
  ],
  "growthModifier": 1
}
  • input 的 item 是所使用的物品,物品输入格式为 MODID:物品ID 。

  • display 的 block 是显示的方块,方块的输入格式为 MODID:方块ID。

  • categories 是土壤类型,可以多设。

  • growthModifier 是修改基础生长时间倍数,公式为 生长时间=基础生长时间*修改生长时间倍数

Fertilizer 代码

{
  "type": "botanypots:fertilizer",
  "ingredient": {
    "item": "minecraft:coal"
  },
  "min_growth": 50,
  "max_growth": 80
}
  • ingredient 的 item 是所使用的物品,物品输入格式为 MODID:物品ID 。

  • min_growth 是最小减少生长时间。

  • max_growth 是最大减少生长时间。

Pot_interaction 代码

{
  "type": "botanypots:pot_interaction",
  "held_ingredient": {
    "item": "minecraft:lava_bucket"
  },
  "soil_ingredient": {
    "item": "minecraft:water_bucket"
  },
  "soil_output": {
    "item": "minecraft:stone",
    "count": 1
  },
  "sound": {
    "sound": "minecraft:block.fire.extinguish",
    "category": "blocks"
  },
  "drops": [
    {
      "item": "minecraft:hanging_roots"
    }
  ]
}
  • held_ingredient 的 item 是手持什么物品点击目标,格式为 MODID:物品ID 。可以将 item 改为 tag 来使用标签。

  • soil_ingredient 的 item 是目标物品,格式为 MODID:物品ID 。如果要设置第二个,就在倒数第一个「  ,  」的后面回车,然后输入代码

  {
    "item": "minecraft:water_bucket"
  },

同理,如果多个就重复 在倒数第一个「  ,  」的后面回车,然后输入代码 的操作。

  • soil_output 的 item 是手持 held_ingredient 物品点击目标后,输出什么物品做土壤,格式为 MODID:物品ID 。

  • soil_output 的 count 是输出什么物品做土壤的数量。

  • sound 的 sound 是完成交互后发出的音效,数值可以参考 Minecraft Wiki 。

  • sound 的 category 是音效类型。

  • drops 的 item 是交互完成后所获得的物品,格式为 MODID:物品ID 。如果不设的话,那就把

,
  "drops": [
    {
      "item": "minecraft:hanging_roots"
    }
  ]

这段代码删掉就行了,注意:前面的 「 , 」一定要删掉!

打包成 zip 压缩包

写完之后就可以打包成 zip 压缩包了。

返回到制作数据包的文件夹里,选中 pack.mcmeta 文件和 data 文件夹,然后右键 pack.mcmeta 文件和 data 文件夹随便一个,点击「 添加到压缩文件 」,选择 zip 格式,点击「 确定 」,完成!

使用

打包完成之后就可以使用了。

在创建世界时点击「 数据包 」,将打包好的数据包拖进游戏窗口,点击「 是 」,然后可用列表里会有一个新项,把它移到已选列表里,点击 「 完成 」就行了。

如果世界已经创建了,也可以找到世界文件夹里的 datapacks 文件夹,将打包好的数据包拖到里面也行。