本篇教程由作者设定未经允许禁止转载。

模块化机械:社区版 从入门到入土 —— Part.1 机械创建

本篇教程皆在引导模块化机械与模块化机械:社区版的初学者入门,本教程包含最基本的机器创建功能。

如果你是从模块化机械转移到本模组,社区版完全兼容模块化机械 1.11.1 版本的原版所有内容,但是请注意:某些附属模组可能不兼容社区版,详细信息请查看社区版页面介绍。

本教程主要使用的模组为模块化机械:社区版 - 1.11.1-r33、咕咕工具

环境准备

要自定义机器,我们需要使用一些高级文本编辑器来修改一些文件,本教程强烈推荐使用 Visual Studio Code(以下简称 VSCode),可以大大减少你的魔改工作量。

使用 VSCode,你可以利用它的强大的功能来更快的完成复杂的操作,同时拥有代码提示,大大减少代码阅读难度和出错率,同时可以安装插件来扩展功能,使其更加强大。

安装模组

如果你已安装本模组且已启动游戏,你可以跳过此段描述。

要使用本模组,你可以从 Modrinth、CurseForge、百科下载页面获取模组。

此外,教程推荐安装另外两个模组:咕咕工具(非推销)。

咕咕工具提供了更多且的配方扩展,以及更方便的机器创建功能。

创建你的第一个机器

本处教程将演示创建一个名为加工机的自定义多方块机械。

建造并选择机器

启动游戏并创建一个世界,然后开始创建机械。

一个最基本的机械应当有一个机械控制器。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第1张图片一个还未成型的自定义机械,光标所选中的是机械控制器。


结构搭建完成后,需要使用建造选择工具来选择结构。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第2张图片建造选择工具(可以在创造模式物品栏或 JEI 找到,本处贴图可能不同,使用了材质包 ModernityExtra)


手持建造选择工具对准并右击一个方块,此时方块会有高亮效果。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第3张图片手持选择工具右击一个方块,将会有高亮效果,再次右击,可取消选择。


现在我们使用建造选择工具选中自定义机械中所有的方块(注意:此时请不要选择机械控制器)。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第4张图片选中了除控制器之外的机械,选中的方块应当全为高亮。


现在继续使用建造选择工具,对准机械控制器,并在蹲下的时候右击,此时会有类似下图所示的信息提示,我们的自定义机械文件已经生成。

:选择机械控制器的同时会清空先前所有用建造选择工具选中的方块,然后将机械结构以文件的方式保存到机械文件夹中。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第5张图片


此时,我们已经完成了选择机器这一步骤。

修改文件 Part.1

打开游戏目录(如果你找不到游戏路径,可以使用以下步骤:打开游戏菜单 -> 选项 -> 资源包 -> 打开资源包文件夹,此时你就打开了游戏路径的资源包文件,接着后退即可找到游戏目录。能看到这个教程的应该都知道吧啊喂!

我们的机器文件将会保存在 .minecraft/config/modularmachinery/machinery 这个文件夹下(注意:有些客户端中可能路径不为此路径,请以实际为准)。


此时,你应当能够看见上个步骤的信息提示所指示的文件。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第6张图片


使用 VSCode 打开此文件(本处推荐了解一些 JSON 语法,可以更快的完成这些步骤)。

下方图中使用蓝色框所框柱的 parts 为我们的机械结构数据,机器的所有方块构成都在这个内容中。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第7张图片


现在我们删除掉文本中所有类似上图中橙色框所框住的行(关键词:"nbt")。

删除后的内容大致应为下图所示。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第8张图片

接下来我们开始插入机器的属性。

修改文件 Part.2

一个最基础的机器文件应当有以下属性:

  • 注册名(registryname)(注册名是每个机器独一无二的,绝对不能重复。命名建议:全小写且不使用空格,多个单词或数字用下划线分隔,例如:machine_1、assembly_machine)

  • 译名(localizedname)(译名是这个机器的名称。同时也可以在语言文件中定义译名(高级)

此外,还有以下属性:

  • 配方失败操作(failure-action)

  • 是否需要蓝图(requires-blueprint)

  • 外壳颜色(color)

  • (高级)配方修改器(modifiers)

  • (高级)是否包含工厂控制器(has-factory)

  • (高级)是否仅包含工厂控制器(factory-only)

其中,工厂系统会在未来的教程中提到。

本处教程将会演示一个带有 注册名、译名、是否需要蓝图、外壳颜色 属性的机械。

示例此时比口头描述更加有效:

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第9张图片


本张动图一共定义了四个属性,接下来我们开始介绍这些属性的含义。(双斜杠和双斜杠后的内容仅在教程中起到描述作用,请不要真的写到文件里面,会出问题的)

{
    "registryname": "machine_1", //定义这个机械的注册名为 machine_1,这个注册名应当是永久不可变的。
    "localizedname": "加工机", //定义这个机械的译名为 ”加工机“,可修改。
    "requires-blueprint": true, //是否需要蓝图,如果为 true,则控制器只会在检测到蓝图时才会检查和形成结构,如果为 false,则控制器会始终检查和形成结构。此处为 true。
    "color": "F0FFFF", //机械外壳的颜色,影响模块化控制器的控制器颜色和结构形成后的外壳颜色。此处颜色为 16 进制颜色,可以在网上查找对应颜色所对应的 16 进制代码。
    "parts": [
        //机械结构内容,此处省略。
    ]
}


定义完成后,保存文件(或按下 Ctrl + S),确保文件的编码为 UTF-8(如果此段看不懂可以跳过),然后重启游戏。

现在,你完成了修改文件的步骤。

测试机械

游戏重启完成后,此时,你的机器应当已经注册成功,现在游戏中将会多出一张名为加工机的蓝图,如果你安装了模块化控制器,还会增加一个名为加工机控制器的方块。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第10张图片加工机的机械蓝图

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第11张图片加工机控制器(安装了模块化控制器的情况下)


手持机械蓝图并右击(使用),此时会弹出机械结构的预览界面。


Part.1 机械创建 —— 模块化机械 - 从入门到入土-第12张图片预览界面操作演示

如果你安装了 JEI,你还可以在 JEI 中预览结构,在物品栏中鼠标对着蓝图按下 U 键(JEI 默认查看配方键位),预览界面与上方图片基本相同。

现在我们开始搭建加工机。

此时回到你刚所创建的自定义机械,右击打开 GUI。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第13张图片控制器 GUI 界面


蓝色框内的是蓝图检测状态,如果紫色框内的蓝图栏内有一张有效蓝图,那么此处就会显示蓝图对应的机械译名。

绿色框内的是结构检测状态,如果控制器检测到一个机械的所有方块都符合条件(即为形成多方块结构),那么此处就会显示结构对应的机械译名。

橙色框内的是工作状态,它会显示配方工作进度,配方要求,以及其他更多信息。

如果你安装了 TheOneProbe(TOP),还会在 TOP 界面显示类似控制器内的信息(仅限 模块化机械:社区版,模块化机械原版无此内容)。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第14张图片安装 TOP 后显示机械状态

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第15张图片当机器处理配方时,还会显示进度条


现在我们开始搭建结构,结构内方块应当与我们所创建的结构完全相同。

:你可以在结构预览的界面中使用结构预览键(红色框内键)在世界中投影,按下 Shift + 左键来投影。同时也推荐使用模块化组装模组,可以使大型结构和复杂结构更方便快捷的搭建。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第16张图片


搭建的结构应和下图相同(取自上方图片)。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第1张图片一个还未成型的自定义机械,光标所选中的是机械控制器。


最后,将加工机的机械蓝图放到机械控制器的 GUI 中的蓝图栏内。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第18张图片


此时你可以发现,蓝图检测栏和结构检测栏都输出了机械名称,那么恭喜你,你成功创建了第一个自定义机械。


技巧:文件检查技巧

模块化机械自带了一个指令,可以检查你的机械和指令能否正常注册,免去频繁重启游戏检查结构的麻烦。

保存机械文件后,返回游戏,确保你拥有 OP 权限或为单人模式的情况下,在聊天框输入指令 /mm-syntax。

由于提供的检查功能较多,本教程仅列出常用的部分内容。


当执行指令后,将会输出类似下方图片的开头内容。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第19张图片


部分参数介绍:

  • Variables 是变量定义(高级),loaded 即为加载成功,failed 即为加载失败。

  • Machines 为你的自定义机械,loaded 即为加载成功,failed 即为加载失败。

  • Testing Recipes(即为测试配方文件合法性,仅限 JSON 配方,本教程使用 ZenScript 创建配方,因此本处不再过多描述),loaded 即为加载成功,failed 即为加载失败。

如果出现错误,你可以在游戏日志中找到具体错误内容。


技巧:文件编辑技巧

在某些规模比较庞大的机械中可能含有大量的方块 NBT 数据,此时再使用手动删除难免效率低下,此时我们可以使用正则表达式来批量删除 NBT 内容(仅适用于 VSCode,如不使用 VSCode 可以跳过此教程)。

按下 Ctrl + H,此时编辑器页面右上角应有搜索框和替换框弹出。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第20张图片


按照下方图示操作,且确保与下方一样打开了正则表达式功能。(输入内容为:(.*"nbt".*),均为半角符号,最后一个换行为 Ctrl + 回车键)。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第21张图片


此时,匹配的内容就会有类似下图所示的淡蓝色高亮(不一定是淡蓝色高亮,由于使用了主题,具体颜色请以自己的软件为主)

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第22张图片


按下搜索框的全部替换键,此时所有类似带有 "nbt" 的行都被删除。

Part.1 机械创建 —— 模块化机械 - 从入门到入土-第23张图片

此技巧对所有自动生成的文件都适用,如果没有使用 NBT 判断的需求,可以放心使用此功能。