本篇教程由作者设定未经允许禁止转载。
模块化机械:社区版 从入门到入土 —— Part.1 机械创建
本篇教程皆在引导模块化机械与模块化机械:社区版的初学者入门,本教程包含最基本的机器创建功能。
如果你是从模块化机械转移到本模组,社区版完全兼容模块化机械 1.11.1 版本的原版所有内容,但是请注意:某些附属模组可能不兼容社区版,详细信息请查看社区版页面介绍。
本教程主要使用的模组为模块化机械:社区版 - 1.11.1-r33、咕咕工具。
环境准备
要自定义机器,我们需要使用一些高级文本编辑器来修改一些文件,本教程强烈推荐使用 Visual Studio Code(以下简称 VSCode),可以大大减少你的魔改工作量。
使用 VSCode,你可以利用它的强大的功能来更快的完成复杂的操作,同时拥有代码提示,大大减少代码阅读难度和出错率,同时可以安装插件来扩展功能,使其更加强大。
安装模组
如果你已安装本模组且已启动游戏,你可以跳过此段描述。
要使用本模组,你可以从 Modrinth、CurseForge、百科下载页面获取模组。
此外,教程推荐安装另外两个模组:咕咕工具(非推销)。
咕咕工具提供了更多且的配方扩展,以及更方便的机器创建功能。
创建你的第一个机器
本处教程将演示创建一个名为加工机的自定义多方块机械。
建造并选择机器
启动游戏并创建一个世界,然后开始创建机械。
一个最基本的机械应当有一个机械控制器。
结构搭建完成后,需要使用建造选择工具来选择结构。
手持建造选择工具对准并右击一个方块,此时方块会有高亮效果。
现在我们使用建造选择工具选中自定义机械中所有的方块(注意:此时请不要选择机械控制器)。
现在继续使用建造选择工具,对准机械控制器,并在蹲下的时候右击,此时会有类似下图所示的信息提示,我们的自定义机械文件已经生成。
注:选择机械控制器的同时会清空先前所有用建造选择工具选中的方块,然后将机械结构以文件的方式保存到机械文件夹中。
此时,我们已经完成了选择机器这一步骤。
修改文件 Part.1
打开游戏目录(如果你找不到游戏路径,可以使用以下步骤:打开游戏菜单 -> 选项 -> 资源包 -> 打开资源包文件夹,此时你就打开了游戏路径的资源包文件,接着后退即可找到游戏目录。能看到这个教程的应该都知道吧啊喂!)
我们的机器文件将会保存在 .minecraft/config/modularmachinery/machinery 这个文件夹下(注意:有些客户端中可能路径不为此路径,请以实际为准)。
此时,你应当能够看见上个步骤的信息提示所指示的文件。
使用 VSCode 打开此文件(本处推荐了解一些 JSON 语法,可以更快的完成这些步骤)。
下方图中使用蓝色框所框柱的 parts 为我们的机械结构数据,机器的所有方块构成都在这个内容中。
现在我们删除掉文本中所有类似上图中橙色框所框住的行(关键词:"nbt")。
删除后的内容大致应为下图所示。
接下来我们开始插入机器的属性。
修改文件 Part.2
一个最基础的机器文件应当有以下属性:
注册名(registryname)(注册名是每个机器独一无二的,绝对不能重复。命名建议:全小写且不使用空格,多个单词或数字用下划线分隔,例如:machine_1、assembly_machine)
译名(localizedname)(译名是这个机器的名称。同时也可以在语言文件中定义译名(高级))
此外,还有以下属性:
配方失败操作(failure-action)
是否需要蓝图(requires-blueprint)
外壳颜色(color)
(高级)配方修改器(modifiers)
(高级)是否包含工厂控制器(has-factory)
(高级)是否仅包含工厂控制器(factory-only)
其中,工厂系统会在未来的教程中提到。
本处教程将会演示一个带有 注册名、译名、是否需要蓝图、外壳颜色 属性的机械。
示例此时比口头描述更加有效:
本张动图一共定义了四个属性,接下来我们开始介绍这些属性的含义。(双斜杠和双斜杠后的内容仅在教程中起到描述作用,请不要真的写到文件里面,会出问题的)
{
"registryname": "machine_1", //定义这个机械的注册名为 machine_1,这个注册名应当是永久不可变的。
"localizedname": "加工机", //定义这个机械的译名为 ”加工机“,可修改。
"requires-blueprint": true, //是否需要蓝图,如果为 true,则控制器只会在检测到蓝图时才会检查和形成结构,如果为 false,则控制器会始终检查和形成结构。此处为 true。
"color": "F0FFFF", //机械外壳的颜色,影响模块化控制器的控制器颜色和结构形成后的外壳颜色。此处颜色为 16 进制颜色,可以在网上查找对应颜色所对应的 16 进制代码。
"parts": [
//机械结构内容,此处省略。
]
}
定义完成后,保存文件(或按下 Ctrl + S),确保文件的编码为 UTF-8(如果此段看不懂可以跳过),然后重启游戏。
现在,你完成了修改文件的步骤。
测试机械
游戏重启完成后,此时,你的机器应当已经注册成功,现在游戏中将会多出一张名为加工机的蓝图,如果你安装了模块化控制器,还会增加一个名为加工机控制器的方块。
手持机械蓝图并右击(使用),此时会弹出机械结构的预览界面。
如果你安装了 JEI,你还可以在 JEI 中预览结构,在物品栏中鼠标对着蓝图按下 U 键(JEI 默认查看配方键位),预览界面与上方图片基本相同。
现在我们开始搭建加工机。
此时回到你刚所创建的自定义机械,右击打开 GUI。
蓝色框内的是蓝图检测状态,如果紫色框内的蓝图栏内有一张有效蓝图,那么此处就会显示蓝图对应的机械译名。
绿色框内的是结构检测状态,如果控制器检测到一个机械的所有方块都符合条件(即为形成多方块结构),那么此处就会显示结构对应的机械译名。
橙色框内的是工作状态,它会显示配方工作进度,配方要求,以及其他更多信息。
如果你安装了 TheOneProbe(TOP),还会在 TOP 界面显示类似控制器内的信息(仅限 模块化机械:社区版,模块化机械原版无此内容)。
现在我们开始搭建结构,结构内方块应当与我们所创建的结构完全相同。
注:你可以在结构预览的界面中使用结构预览键(红色框内键)在世界中投影,按下 Shift + 左键来投影。同时也推荐使用模块化组装模组,可以使大型结构和复杂结构更方便快捷的搭建。
搭建的结构应和下图相同(取自上方图片)。
最后,将加工机的机械蓝图放到机械控制器的 GUI 中的蓝图栏内。
此时你可以发现,蓝图检测栏和结构检测栏都输出了机械名称,那么恭喜你,你成功创建了第一个自定义机械。
技巧:文件检查技巧
模块化机械自带了一个指令,可以检查你的机械和指令能否正常注册,免去频繁重启游戏检查结构的麻烦。
保存机械文件后,返回游戏,确保你拥有 OP 权限或为单人模式的情况下,在聊天框输入指令 /mm-syntax。
由于提供的检查功能较多,本教程仅列出常用的部分内容。
当执行指令后,将会输出类似下方图片的开头内容。
部分参数介绍:
Variables 是变量定义(高级),loaded 即为加载成功,failed 即为加载失败。
Machines 为你的自定义机械,loaded 即为加载成功,failed 即为加载失败。
Testing Recipes(即为测试配方文件合法性,仅限 JSON 配方,本教程使用 ZenScript 创建配方,因此本处不再过多描述),loaded 即为加载成功,failed 即为加载失败。
如果出现错误,你可以在游戏日志中找到具体错误内容。
技巧:文件编辑技巧
在某些规模比较庞大的机械中可能含有大量的方块 NBT 数据,此时再使用手动删除难免效率低下,此时我们可以使用正则表达式来批量删除 NBT 内容(仅适用于 VSCode,如不使用 VSCode 可以跳过此教程)。
按下 Ctrl + H,此时编辑器页面右上角应有搜索框和替换框弹出。
按照下方图示操作,且确保与下方一样打开了正则表达式功能。(输入内容为:(.*"nbt".*),均为半角符号,最后一个换行为 Ctrl + 回车键)。
此时,匹配的内容就会有类似下图所示的淡蓝色高亮(不一定是淡蓝色高亮,由于使用了主题,具体颜色请以自己的软件为主)
按下搜索框的全部替换键,此时所有类似带有 "nbt" 的行都被删除。
此技巧对所有自动生成的文件都适用,如果没有使用 NBT 判断的需求,可以放心使用此功能。