本篇教程由作者设定使用 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。

参考资料:

C101S2 的 GitHub

CreaTech 的 GitHub

CrT Wiki Botany Pots 界面

通过 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);