多方块构建
多方块选取
首先我们使用这个玩意儿,来选取多方块
这是第一层,注意这个【流体输入仓】,后面要考的(选取有gui交互的方块时可以shift+右键来选取)
然后这是第二层,注意不要右键点到【机械控制器】了
第三层,注意这个【能源输出仓】,也要考的
最后我们对着【机械控制器】shift+右键,完成结构设计
多方块的注册与替选方块
我们首先需要进入保存了多方块结构的文件夹,以下是路径:
.minecraft\versions\你的整合包名字\config\modularmachinery\machinery
我们用vscode来打开json文件夹(如果你是记事本战神也不是不行)
第一步:先删nbt
可以在左侧的放大镜图标里搜索nbt然后删掉整行代码
重要部分1-替选方块
接下来是第一个重要部分!
在用crt写配方的时候,我们用的是这种形式:
<minecraft:wool:0> //白色羊毛
而在写多方块的时候,我们应当用这种形式:
"minecraft:wool@0" //还是白色羊毛
方块meta值前面的冒号变成了@符号,这是需要注意的
再是替选方块的写法,以下是刚才【中型物品输入仓】的part:
{
"x": 0,
"y": 0,
"z": 2,
"elements": [
"modularmachinery:blockinputbus@2"
]
},
我希望在这个地方可以用所有的物品输入仓,那么删掉后面的meta值@2即可
{
"x": 0,
"y": 0,
"z": 2,
"elements": [
"modularmachinery:blockinputbus"
]
},
我希望可以用上【流体输入仓】和【能源输出仓】,还可以用【机械外壳】来替换
{
"x": 0,
"y": 0,
"z": 2,
"elements": [
"modularmachinery:blockinputbus",
"modularmachinery:blockfluidinputhatch",
"modularmachinery:blockenergyoutputhatch",
"modularmachinery:blockcasing"
]
},
实际上,想要添加输入输出仓,可以在游戏中通过/ct hand指令获取方块id,然后删掉meta值即可
modularmachinery:blockinputbus //物品输入仓
modularmachinery:blockoutputbus //物品输出仓
modularmachinery:blockfluidinputhatch //流体输入仓
modularmachinery:blockfluidoutputhatch //流体输出仓
modularmachinery:blockenergyinputhatch //能源输入仓
modularmachinery:blockenergyoutputhatch //能源输出仓
modularmachinery:blockcasing //机械外壳
此外,如果想要使用所有mmce的方块作为替选方块(包括各种输入输出仓、齿轮箱一类装饰性方块在内),我们可以这样写
{
"x": 0,
"y": 1,
"z": 1,
"elements": "casings_all"
},
这是因为mmce已经为我们预设了替选方块组(在variables文件夹里)
{
"casings_all": [
"modularmachinery:blockcasing",
"modularmachinery:blockinputbus",
"modularmachinery:blockenergyinputhatch",
"modularmachinery:blockfluidinputhatch",
"modularmachinery:blockoutputbus",
"modularmachinery:blockenergyoutputhatch",
"modularmachinery:blockfluidoutputhatch"
],
"casings_decorative": [
"modularmachinery:blockcasing"
],
"casings_fluid": [
"modularmachinery:blockfluidinputhatch",
"modularmachinery:blockfluidoutputhatch"
],
"casings_energy": [
"modularmachinery:blockenergyinputhatch",
"modularmachinery:blockenergyoutputhatch"
],
"casings_item": [
"modularmachinery:blockinputbus",
"modularmachinery:blockoutputbus"
]
}
里面并不包括咕咕工具的输入输出仓,这个可以自己再添加
在弄完替选方块后,我们可以注册机器了:
{
"registryname": "wind_tunnel",
"localizedname": "风洞舱",
"requires-blueprint": false,
"color": "dfdfea",
"parts": [
在花括号后,part前分别是注册名、本地化名称、是否需要蓝图、颜色代码
什么?你问我颜色怎么取?
我们首先前往模组文件夹
.minecraft\versions\你的整合包\mods
然后以压缩包形式打开.jar文件,这里我们以热力基本为例
ThermalFoundation-1.12.2-2.6.7.1-universal.jar\assets\thermalfoundation\textures\blocks\storage\
把方块贴图导入ps里
用alt+左键进行一个颜色的取,然后左键取到的色块
复制颜色代码
然后复制到color后面即可
保存后进入游戏,有预览说明大功告成了
配方的编写
我们首先在
.minecraft\versions\你的整合包\scripts
文件夹里创建一个txt
然后改名字和后缀
看不见拓展名建议查百度
进入vsc页面,导个包先
#reloadable
import mods.modularmachinery.RecipeBuilder;
import mods.modularmachinery.RecipePrimer;
import mods.modularmachinery.IngredientArrayBuilder;
import mods.modularmachinery.RecipeModifierBuilder;
因为这是一个风力发电机,我们加入电力输出
#reloadable
import mods.modularmachinery.RecipeBuilder;
import mods.modularmachinery.RecipePrimer;
import mods.modularmachinery.IngredientArrayBuilder;
import mods.modularmachinery.RecipeModifierBuilder;
RecipeBuilder.newBuilder("wind", "wind_tunnel", 1)
.addEnergyPerTickOutput(16)
.build();
wind是配方名称,可以随便写,只要不重样,你写1234abcd都没关系
wind_tunnel是机器注册名,这个可不能错
1是机器工作时间,单位是tick(20tick=1s)
addEnergyPerTickOutput是每tick输出电量
然后我们就得到了一个自发电的配方
接下来我们加入物品的输入:(还是游戏内/ct hand获取手上物品id)
RecipeBuilder.newBuilder("wind", "wind_tunnel", 1)
.addItemInputs(<mekanismgenerators:turbineblade>).setChance(0)
.addItemInputs([
<thermalfoundation:material:2051>,
<enderio:block_infinity_fog>
])
.addEnergyPerTickOutput(16)
.build();
如果不是多种输入,那么就不需要中括号,如果是多种输入,那么需要在中括号中用逗号分隔两个物品id
setChance是某种要素(物品、流体、能量、魔力)被消耗/产出的概率,多种物品只取最后一个,所以建议分开写
addItemInputs是物品输入
addItemInputs是物品输出
再是流体的输入和输出:(也是/ct hand获取id)
RecipeBuilder.newBuilder("wind", "wind_tunnel", 1)
.addItemInputs(<mekanismgenerators:turbineblade>).setChance(0)
.addItemInputs([
<thermalfoundation:material:2051>,
<enderio:block_infinity_fog>
])
.addEnergyPerTickOutput(16)
.addFluidInput(<liquid:cryotheum>*2)
.addFluidOutput(<liquid:water>*2)
.build();
等等,我们好像没有设置流体输出仓,赶紧删掉流体输出
重要部分2-催化剂
第二个重要部分——催化剂
首先是催化剂的写法:
.addCatalystInput(<thermalfoundation:material:1026>,
["此催化剂可以提高100%发电量"],
[RecipeModifierBuilder.create("modularmachinery:energy", "output", 2, 1, false).build()]).setChance(0)
从上往下分别是物品id
催化剂效果描述
强化效果
其中强化效果:
RecipeModifierBuilder.create("modularmachinery:energy", "output", 2, 1, false).build()
加粗部分分别为:强化类型、输入/输出端、强化系数、计算方式(1是乘算,0是加算)
强化类型有:duration item energy fluid aspect aura lifeessence starlight mana impetus
duration是制作时间,item是物品,energy是能量,fluid是液体
输入输出为:input和output
强化系数为:原数值*强化系数(在operation值为0时为加算,也就是原数值*∑强化系数)
重要部分3-方块升级
回到machinery文件夹,打开我们机器文件(我刚刚偷偷改名了)
然后,我们加入方块升级
{
"registryname": "wind_tunnel",
"localizedname": "风洞舱",
"requires-blueprint": false,
"color": "dfdfea",
"modifiers": [
{
"elements": "tconstruct:metal@5",
"x": 1,
"y": 0,
"z": 0,
"description": "替换成此方块时会提高50%的发电量",
"modifier": {
"target": "modularmachinery:energy",
"io": "output",
"operation": 1,
"multiplier": 1.5
}
}
],
"parts": [
elements后面填升级用的方块
target后面是强化类型
io后面是输入/输出端
operation后面是计算方式(1是乘算,0是加算)
multiplier后面是强化系数
关于坐标问题,以控制器方块为坐标原点建立空间直角坐标系,然后可以根据其他方块的位置判断xyz轴的方向,如果要替换的方块是唯一的,那我们可以直接把坐标复制过来
两个强化方块之间用逗号分隔,以及别忘了meta值:
"modifiers": [
{
"elements": "tconstruct:metal@5",
"x": 1,
"y": 0,
"z": 0,
"description": "替换成此方块时会提高50%的发电量",
"modifier": {
"target": "modularmachinery:energy",
"io": "output",
"operation": 1,
"multiplier": 1.5
}
},
{
"elements": "plustic:alumiteblock",
"x": 1,
"y": 0,
"z": 0,
"description": "替换成此方块时会提高100%的发电量",
"modifier": {
"target": "modularmachinery:energy",
"io": "output",
"operation": 1,
"multiplier": 2
}
}
],
重启游戏,我们就能看到升级了
DLC-动态结构
这是一个普通的机器
看哪,加长了
这是因为使用了动态结构的功能
"dynamic-patterns"需要写在part前面
"color": "FFFFFF",
"dynamic-patterns": [
{
"name": "line",
"faces": [
"up"
],
"minSize": 3,
"maxSize": 10,
"parts": [
],
"parts-end": [
],
"structure-size-offset-start": {
"x": 0,
"y": 1,
"z": 0
},
"structure-size-offset": {
"x": 0,
"y": 1,
"z": 0
}
}
],
"parts": [
face 后面是面朝的方向,一般我们用up或者north(当然down,east,west,south都是可以的)
minSize 后面是中间环节最少数量
maxSize 后面是中间环节最大数量
这里面的parts是环节结构
parts-end则是封顶结构
注意,如果是面朝是up,则
"structure-size-offset-start": {
"x": 0,
"y": 1,
"z": 0
},
"structure-size-offset": {
"x": 0,
"y": 1,
"z": 0
}
如果是north,则
"structure-size-offset-start": {
"x": 0,
"y": 0,
"z": 1
},
"structure-size-offset": {
"x": 0,
"y": 0,
"z": 1
}
belike:
什么?你问我怎么框选中间环节和末尾环节?
首先,要确定最底层控制器的位置
记住,所有延展的结构都是相对于控制器位置而言的
这是中间环节,我们把控制器正上方的方块撸掉,换成控制器,然后选取,这样方便我们复制粘贴结构
同时,我们在中间环节的“parts”里加入
{
"x": 0,
"y": 0,
"z": 0,
"elements": [
"modularmachinery:blockcasing@4"
]
},
因为框选后是没有控制器处的方块的
紧接着我们把封顶处加上
在获取了结构后我们照样把东西复制进“parts-end”里(注意中括号的位置)
然后就大功告成了
横着的同理
DLC-长方体范围内批量加入方块
有时候,用选取工具一个一个点手都要点麻了(在没有植物魔法的情况下gugu工具的范围选取工具会失效)
有时候,看着满面的同种方块会感到痛苦
有没有一种批量注册的办法呢?
有,当然有!
先像往常一样选取,但是我们不往多方块内部放东西
注意看,我在玻璃球里边放了个方块,用于确定坐标系(你用完之后可以直接删掉)
{
"x": 0,
"y": 2,
"z": 1,
"elements": [
"thermalfoundation:storage_alloy@6"
]
},
接下来,我们根据它的坐标进行更改
{
"x": [-1,0,1],
"y": [1,2,3],
"z": [0,1,2],
"elements": [
"thermalfoundation:fluid_pyrotheum"
]
},
(注意,流体需要以方块的id写进去,liquid:water这样就不行,必须是minecraft:water)
好了让我们看看结果
成了!
在这个过程中,我们通过中括号列表给出坐标轴的某几个点,然后根据排列组合,就能填充一个长方体范围的方块
当然,你也可以整点花活:
"x": [-1,1],
"y": [1,3],
"z": [0,2],