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

本教程编写版本为1.20.1

本教程需要一定的kubejs基础

请勿直接将本文的代码复制粘贴,否则会出现引号错误或是空格错误的情况

事前准备

首先请确认你的模组文件夹内有以下模组:

机械动力、KubeJs、KubeJs Create、ProbeJS

并且你的设备中安装了vscode

如果你在教程中发现了错误的地方或是有什么建议请在评论区指出

开始编写代码

启动你的minecraft,这时你会发现版本文件夹下多出了kubejs文件夹,我们接下来的工作都要在这里面进行。

在游戏中输入/probejs dump并将你的kubejs文件夹用vscode打开

在sever_scripts文件夹中创建一个XXX.js文件,或在文件夹中创建文件夹并在创建的文件夹中创建文件(好绕啊)

如果你不想自动添加配方(石磨自动添加粉碎轮配方,工作台合成自动添加动力合成器配方等),请在配方 ID 的末尾添加:manual_only

例:

event.recipes.create.milling('minecraft:wet_sponge', ['minecraft:sponge']).id('命名空间:***_manual_only')

示例

ServerEvents.recipes(event =>{

})

这是一个固定搭配,不论是添加配方或是移除配方都必须写,下文的所有代码都必须写在大括号/花括号中间

const {create} = event.recipes

这一段这么写是因为接下来会更方便我们去边写代码,你也可以不这么做,那么你接下来要记得替换

辊压机

动力辊压机(机械动力6.0.0及以后版本翻译为动力冲压机)分为压块塑形和金属压片

压块塑形

例

泥土被压一下变成草方块无中生草

create.compacting("minecraft:grass_block","minecraft:dirt")

前面的是输出,后面的是输入


动力辊压机也可以加热或者超级加热

create.compacting("minecraft:grass_block","minecraft:dirt").heated()
//加热
create.compacting("minecraft:grass_block","minecraft:dirt").superheated()
//超级加热


同时动力辊压机也可以输出流体

例

岩浆被压一下变成水

create.compacting(fluid.water(1000),fluid.lava(1000))


同时辊压机可以进行概率输出与多种物品输出

例

压沙砾100%输出燧石,10%输出钻石

create.compacting(["minecraft:flint",Item.of("diamond").withChance(0.1)],"minecraft:gravel")

withChance中的概率1为100%,0.1为10%,以此类推


金属压片

泥土通过压片变成草方块

create.pressing("minecraft:dirt","minecraft:grass_block")

可以看见与压块没有什么太大的区别,仅仅只是将“compacting”替换成了“pressing”,其余都相同。


搅拌器

搅拌器支持多个输入输出,概率输出,加热和超级加热

泥土加水搅拌成草方块

create.mixing("minecraft:grass_block",[fluid.water(1000),"minecraft:dirt"])

可以看见与压块没有什么太大的区别,仅仅只是将“compacting”替换成了“mixing”,其余都相同。


鼓风机

鼓风机只能更改水洗和缠魂,因为鼓风机熔炼和烟熏自动绑定高炉和烟熏炉,想要添加请添加高炉/烟熏炉配方

鼓风机支持多物品输出和概率输出

水洗

水洗草方块获得泥土

create.splashing("minecraft:dirt","minecraft:grass_block")
//前输出,后输入

缠魂

缠魂泥土获得灵魂土

create.haunting("minecraft:soul_soil","minecraft:dirt")
//前输出,后输入


石磨

石磨支持多物品输出以及概率输出

磨砂土获得2*泥土

create.milling(Item.of('minecraft:dirt',2),'minecraft:coarse_dirt')
//前输出,后输入


粉碎轮

粉碎轮支持添加处理时间(可选)

粉碎砂土获得2*泥土

create.crushing(Item.of('minecraft:dirt',2),'minecraft:coarse_dirt).processingTime(20*200)
//前输出,后输入


注液器

注液器需要输入物品,输入流体,输出物品

泥土注入水获得草方块

create.filling("minecraft:grass_block",["minecraft:dirt",Fluid.of('minecraft:water',1000)])
//前输出物品,中输入物品,后输入流体


分液池

分液池与注液器相反,它需要输入物品,输出流体,输出物品

草方块分液出泥土和水

create.emptying([Fluid.of('water',1000),'minecraft:dirt'],'minecraft:grass_block')
//前输出流体,中输出物品,后输入物品


动力锯

动力锯支持多个输出和概率输出,并且自定义支持处理时间

锯西瓜获得6*西瓜片

create.cutting(Item.of('minecraft:melon_slice',6),'minecraft:melon')
//前输出,后输入


机械手

机械手支持多个输出和概率输出

小齿轮安装木板变成大齿轮

create.deploying('create:large_cogwheel',['create:cogwheel','minecraft:oak_planks'])
//这里前面是输出,中间是被安装的,后面是机械手上面拿的,不要搞混了

或者不消耗机械手上的物品

create.deploying('create:large_cogwheel',['create:cogwheel','minecraft:oak_planks']).keepHeldItem


砂纸

砂纸支持概率输出

氧化铜块磨成铜块

create.sandpaper_polishing('minecraft:copper_block','minecraft:oxidized_copper')
//前输出,后输入


动力合成器

动力合成器和工作台类似,但是比工作台大,最多支持9*9的合成表

create.mechanical_crafting('minecraft:spawner',
//输出
[
"IBBI",
"B  B",
"B  B",
"IBBI"
],
//合成配方
{
I:"minecraft:iron_ingot",
//铁锭
B:"minecraft:iron_bars"
//铁栏杆
}
//字母所代表的物品
)


序列组装

序列组装会有半成品出现,例如半成品精密构件,所以我们需要先来指定一个半成品。官方文档给出的建议是使用半成品精密构件,因为它没有配方,当然你也可以用别的。这里我使用半成品精密构件来演示

const incomplete = 'create:incomplete_precision_mechanism'(可选,选了会方便,不选的记得替换)

create.sequenced_assembly(
[
Item.of("dirt").withChance(0.1),
Item.of("oak_planks").withChance(0.9)
],
//输出列表,最上面的为主产物,下面的为副产物
'minecraft:oak_log',
//输入物品
[
//参与的机器,有四种可选
//输入输出物品均为半成品物品
//机械手,可物品不消耗
//动力锯
//注液器
//辊压机
create.deploying(incomplete,[incomplete,'minecraft:grass_block']).keepHeldItem(),
create.cutting(incomplete,incomplete),
create.filling(incomplete,[incomplete,Fluid.water(1000)]),
create.pressing(incomplete,incomplete)
]
)
.transitionalItem(incomplete)
//半成品物品
.loops(10)
//循环次数,默认为5