多方块构建

多方块选取

首先我们使用这个玩意儿,来选取多方块

完整的基础多方块设计教程(无非常进阶的内容)-第1张图片

这是第一层,注意这个【流体输入仓】,后面要考的(选取有gui交互的方块时可以shift+右键来选取)
完整的基础多方块设计教程(无非常进阶的内容)-第2张图片

然后这是第二层,注意不要右键点到【机械控制器】了

完整的基础多方块设计教程(无非常进阶的内容)-第3张图片

完整的基础多方块设计教程(无非常进阶的内容)-第4张图片第三层,注意这个【能源输出仓】,也要考的

完整的基础多方块设计教程(无非常进阶的内容)-第5张图片最后我们对着【机械控制器】shift+右键,完成结构设计

完整的基础多方块设计教程(无非常进阶的内容)-第6张图片

多方块的注册与替选方块

我们首先需要进入保存了多方块结构的文件夹,以下是路径:

.minecraft\versions\你的整合包名字\config\modularmachinery\machinery

完整的基础多方块设计教程(无非常进阶的内容)-第7张图片我们用vscode来打开json文件夹(如果你是记事本战神也不是不行)

完整的基础多方块设计教程(无非常进阶的内容)-第8张图片第一步:先删nbt

可以在左侧的放大镜图标里搜索nbt然后删掉整行代码

完整的基础多方块设计教程(无非常进阶的内容)-第9张图片

重要部分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里

完整的基础多方块设计教程(无非常进阶的内容)-第10张图片用alt+左键进行一个颜色的取,然后左键取到的色块

完整的基础多方块设计教程(无非常进阶的内容)-第11张图片复制颜色代码

完整的基础多方块设计教程(无非常进阶的内容)-第12张图片完整的基础多方块设计教程(无非常进阶的内容)-第13张图片然后复制到color后面即可


保存后进入游戏,有预览说明大功告成了

完整的基础多方块设计教程(无非常进阶的内容)-第14张图片

配方的编写

我们首先在

.minecraft\versions\你的整合包\scripts

文件夹里创建一个txt

完整的基础多方块设计教程(无非常进阶的内容)-第15张图片然后改名字和后缀完整的基础多方块设计教程(无非常进阶的内容)-第16张图片

看不见拓展名建议查百度


进入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输出电量

然后我们就得到了一个自发电的配方

完整的基础多方块设计教程(无非常进阶的内容)-第17张图片接下来我们加入物品的输入:(还是游戏内/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是物品输出

完整的基础多方块设计教程(无非常进阶的内容)-第18张图片

再是流体的输入和输出:(也是/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();

完整的基础多方块设计教程(无非常进阶的内容)-第19张图片

等等,我们好像没有设置流体输出仓,赶紧删掉流体输出

重要部分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时为加算,也就是原数值*∑强化系数)

完整的基础多方块设计教程(无非常进阶的内容)-第20张图片


重要部分3-方块升级

回到machinery文件夹,打开我们机器文件(我刚刚偷偷改名了)

完整的基础多方块设计教程(无非常进阶的内容)-第21张图片然后,我们加入方块升级

{
    "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
            }
        }
    ],

重启游戏,我们就能看到升级了完整的基础多方块设计教程(无非常进阶的内容)-第22张图片完整的基础多方块设计教程(无非常进阶的内容)-第23张图片



DLC-动态结构

这是一个普通的机器

完整的基础多方块设计教程(无非常进阶的内容)-第24张图片

看哪,加长了完整的基础多方块设计教程(无非常进阶的内容)-第25张图片

这是因为使用了动态结构的功能

"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:

完整的基础多方块设计教程(无非常进阶的内容)-第26张图片

什么?你问我怎么框选中间环节和末尾环节?

首先,要确定最底层控制器的位置

完整的基础多方块设计教程(无非常进阶的内容)-第27张图片记住,所有延展的结构都是相对于控制器位置而言的

完整的基础多方块设计教程(无非常进阶的内容)-第28张图片这是中间环节,我们把控制器正上方的方块撸掉,换成控制器,然后选取,这样方便我们复制粘贴结构

完整的基础多方块设计教程(无非常进阶的内容)-第29张图片同时,我们在中间环节的“parts”里加入

                {
                    "x": 0,
                    "y": 0,
                    "z": 0,
                    "elements": [
                        "modularmachinery:blockcasing@4"
                    ]
                },

因为框选后是没有控制器处的方块的


紧接着我们把封顶处加上完整的基础多方块设计教程(无非常进阶的内容)-第30张图片

完整的基础多方块设计教程(无非常进阶的内容)-第31张图片在获取了结构后我们照样把东西复制进“parts-end”里(注意中括号的位置)

然后就大功告成了

横着的同理完整的基础多方块设计教程(无非常进阶的内容)-第32张图片


DLC-长方体范围内批量加入方块

有时候,用选取工具一个一个点手都要点麻了(在没有植物魔法的情况下gugu工具范围选取工具会失效)

有时候,看着满面的同种方块会感到痛苦

有没有一种批量注册的办法呢?

有,当然有!

完整的基础多方块设计教程(无非常进阶的内容)-第33张图片

先像往常一样选取,但是我们不往多方块内部放东西

注意看,我在玻璃球里边放了个方块,用于确定坐标系(你用完之后可以直接删掉)

        {
            "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)

好了让我们看看结果

完整的基础多方块设计教程(无非常进阶的内容)-第34张图片成了!

在这个过程中,我们通过中括号列表给出坐标轴的某几个点,然后根据排列组合,就能填充一个长方体范围的方块

当然,你也可以整点花活:

            "x": [-1,1],
            "y": [1,3],
            "z": [0,2],

完整的基础多方块设计教程(无非常进阶的内容)-第35张图片