我的世界自定义添加作物、土壤、肥料和盆栽交互
说明
已经有个类似的教程了:运用 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.x 为 15
代码中的 数据包简介 字段是数据包的简介,可以使用字符串或原始JSON文本来修改。
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 是完成交互后发出的音效,数值可以参考 Wiki 。
-
sound 的 category 是音效类型。
-
drops 的 item 是交互完成后所获得的物品,格式为 MODID:物品ID 。如果不设的话,那就把
,
"drops": [
{
"item": "minecraft:hanging_roots"
}
]
这段代码删掉就行了,注意:前面的 「 , 」一定要删掉!
打包成 zip 压缩包
写完之后就可以打包成 zip 压缩包了。
返回到制作数据包的文件夹里,选中 pack.mcmeta 文件和 data 文件夹,然后右键 pack.mcmeta 文件和 data 文件夹随便一个,点击「 添加到压缩文件 」,选择 zip 格式,点击「 确定 」,完成!
使用
打包完成之后就可以使用了。
在创建世界时点击「 数据包 」,将打包好的数据包拖进游戏窗口,点击「 是 」,然后可用列表里会有一个新项,把它移到已选列表里,点击 「 完成 」就行了。
如果世界已经创建了,也可以找到世界文件夹里的 datapacks 文件夹,将打包好的数据包拖到里面也行。