本篇教程由作者设定使用 CC BY-NC-SA 协议。
随着 Create 101 Season 2 和 CreaTech 越来越火,许多人都想知道在植物盆里种矿石的操作是如何实现的,群里一直有人在问,所以写了本教程。
本教程基于 Minecraft 1.16.5,Botany Pots 版本:1.16.5-7.0.15,CraftTweaker 版本:1.16.5-7.1.0.246。
推荐使用软件:VScode,推荐加装插件:DHP 以及插件市场里的 Zenscript。
参考资料:
通过 openloader 或数据包添加配方。
本人不是太懂数据包内容,本教程仅供参考,如有纰漏请在评论区指出。
首先,打开 .minecraft/openloader/data 文件夹,新建一个文件夹,名字随意,在刚刚新建的文件夹内新建一个文件夹,名字叫 data,再在 data 文件夹内新建一个文件夹,并命名为 botanypots,在其内再新建一个名为 recipes 的文件夹。然后根据你想修改的东西新建文件夹,文件夹名为下列红色粗体部分。
crops:种子及产物。
fertilizers:肥料。
soil:土壤。
Crop 部分
基本格式:
{
"type": "botanypots:crop",
"seed": {
"item": "minecraft:wheat_seeds" #填写为你想要设置的种子,可为任何物品或 tag。
},
"categories":["farmland"], #[] 内填写土壤种类,后面会提到。
"growthTicks": 3, #生长时间,单位为 tick,不能为 0 或负数。
"growthModifier": 1.2, #生长时间倍数。
"display": {
"block": "minecraft:wheat", #显示为什么方块。
},
"results": [
{
"chance": 0.05, #几率
"output": {
"item": "minecraft:wheat_seeds" #产物
},
"minRolls": 1, #最小抽取次数
"maxRolls": 2 #最大抽取次数
}
]
}
以雪尼的铁票据种植铜锌矿石为例解读:
{
"type": "botanypots:crop",
"display":{"block": "create:copper_ore"}, #显示为铜矿石逐渐长大。
"growthTicks": 200, #花 200 ticks 生长。
"seed": {
"item": "refinedstorage:raw_basic_processor" #使用“铁票据”为种子
},
"results": [
{
"output": {
"item": "create:zinc_ore" #产物为锌矿
},
"minRolls": 2, #最小抽取次数为 2
"maxRolls": 2, #最大抽取次数为 2
"chance": 0.5 #获得产物几率为 0.5
},#如需设置多种产物,这个“,”非常重要!
{
"output": {
"item": "create:copper_ore" #产物为铜矿
},
"minRolls": 2, #最小抽取次数为 2
"maxRolls": 2, #最大抽取次数为 2
"chance": 0.5 #获得产物几率为 0.5
}
],
"categories": ["stone"] #土壤类型为“stone”
}
Fertilizer 部分
Fertilizer 为肥料,如骨粉,使用骨粉右键植物盆即可减少本次所需生长时间。
基本格式:
{
"type": "botanypots:fertilizer",
"fertilizer": {
"item": "minecraft:bone_meal" #肥料物品
},
"minTicks": 50, #最小减少时间,单位:tick。
"maxTicks": 80 #最大减少时间,单位:tick。
}
Soil 部分
{
"type": "botanypots:soil",
"input": {
"item": "minecraft:dirt" #作为土壤的物品
},
"display": {
"block": "minecraft:dirt" #展示为土壤的方块
},
"categories": ["dirt"], #土壤种类
"ticks": 250, #基础生长时间
"growthModifier": 0.3 #总生长时间倍数
}
同样,以雪尼的配方解读,
{
"type": "botanypots:soil",
"input": {
"item": "minecraft:prismarine" #使用海晶石作为土壤
},
"display": {
"block": "minecraft:prismarine" #使用海晶石作为土壤展示方块
},
"growthModifier": 0.3, #总生长时间倍数为 0.3
"categories": ["stone"] #土壤种类
}
同一土壤种类中可包含不同种土壤,请参考此处。
CraftTweaker 部分
同样也分为三个部分:crops、fertilizer 和 soils。
使用哪个部分就需要导入哪个部分的包。
crops:import mods.botanypots.ZenCrop;
soils:import mods.botanypots.ZenSoil;
fertilizer:import mods.botanypots.ZenFertilizer;
Crops 部分
首先添加变量
val crops = <recipetype:botanypots:crop>;
以便后面使用。
首先新增种类,
crops.create("gold", <item:minecraft:gold_nugget>, <blockstate:minecraft:gold_block>, 3000, "dirt");
括号内从左至右依次为:作物 id 种子 展示方块 生长时间 土壤种类。
再添加变量
val xxx = crops.getCrop("作物 id"); #xxx 随便填,需唯一,引号内需要与上面新增种类的第一项对应。
以便后面使用。
添加土壤种类:
xxx.addCategory("soil_category_name");
移除土壤种类:
xxx.removeCategory("dirt");
移除所有土壤种类:
xxx.clearCategories();
增加掉落物:
xxx.addDrop(<item:minecraft:gold_ingot>, 0.75, 1, 2);
() 内依次为:产物 几率 最小次数(非必填) 最大次数(非必填)
次数的意思为尝试生成几次产物。2 即为尝试生成两次产物。
清除产物:
xxx.clearDrops();
清除某种产物:
xxx.removeDrop(<tag:forge:seeds>);
设置生长时间:
xxx.setGrowthTicks(10000);
设置种子:
xxx.setSeed(<tag:forge:seeds/wheat>);
设置显示方块:
xxx.setDisplay(<blockstate:minecraft:gold_block>);
设置多个显示方块:
.setDisplay([<blockstate:minecraft:iron_block>, <blockstate:minecraft:iron_ore>]);
上述的东西不需要全部加上,只加上你所需要的东西即可。
这里以我的脚本为例进行解读,
crops.create("nickel", <tag:items:forge:storage_blocks/nickel>, <blockstate:thermal:nickel_block>, 2400, "oredirts");
括号内从左至右为:作物 id,种子 展示方块 生长时间 土壤种类
val nickel = crops.getCrop("nickel");
nickel.addDrop(<item:thermal:nickel_ore>, 1);
增加产物镍矿 x 1,100%几率
nickel.addDrop(<item:thermal:nickel_block>, 0.1);
增加产物镍块 x 1,1%几率
Soil 部分
首先添加变量
val soils = <recipetype:botanypots:soil>;
以便后面使用。
soils.create("stone", <tag:forge:stone>, <blockstate:minecraft:stone>, 0.15, "stone");
从左至右为:土壤 id,使用物品,显示方块,总时间倍速,土壤种类。
再添加变量
val xxxx = soils.getSoil("土壤 id"); #xxxx 随便填,需唯一,引号内需要与上面新增种类的第一项对应。
以便后面使用。
添加至土壤种类
xxxx.addCategory("test"); #引号内填土壤种类,可不唯一。
从土壤种类中删除
xxxx.removeCategory("dirt");
清除土壤种类
xxxx.clearCategories();
设置右键使用物品
xxxx.setInput(<tag:forge:stone>); #可为 item 或 tag。
设置显示方块
xxxx.setDisplay(<blockstate:minecraft:stone>);
设置总时间倍数
xxxx.setGrowthModifier(0.20); #括号内填倍数
Fertilizer 部分
首先添加变量
val fertilizers = <recipetype:botanypots:fertilizer>;
以便后面使用。
创建肥料:
fertilizers.create("test", <item:minecraft:stick>, 1000);
括号内从左至右为:肥料 id,物品,减少的 ticks。
再添加变量
val xxxxx = fertilizers.getFertilizer("肥料 id"); #xxxxx 随便填,需唯一,引号内需要与上面新增种类的第一项对应。
以便后面使用。
设置物品
xxxxx.setInput(<item:minecraft:stick>);
设置减少的 ticks
xxxxx.setGrowthAmoun(1200, 1500);