Recurrent Complex 是一个具有诸多强大功能的建筑生成模组。和 Ruins 相比,它具有较为完善的.GUI,可以替换原版结构(目前只有村庄)的生成,在创建模板时不会丢失特殊实体方块的 NBT,在生成火把这样依赖其他方块的方块时不会因生成顺序而掉落,但同时缺点是容易造成服务端滞后,且最新版本只有 1.12.2。

以下内容参考官方 WIKI:

要生成结构,首先随便搭建一个结构。

[基础]如何自定义建筑生成-第1张图片

[基础]如何自定义建筑生成-第2张图片

官方不建议添加任意一边长度超过 32 的结构。
使用该模组添加的方块选择工具,右键选取第一个点,Ctrl(如果没更改配置文件)+右键选取第二个点。[基础]如何自定义建筑生成-第3张图片

确定选取结构无误后输入/#export打开配置 GUI,请多次确认结构,因为之后难以修改。[基础]如何自定义建筑生成-第4张图片

你可以随时点击右下角的隐藏 GUI,随后输入/#reopen来重新打开没保存的结构 GUI。

GUI 中的内容:

结构 ID:结构的名称

保存位置:你想将结构保存在哪里,具有四个选项:

  • inactive:将保存在<版本文件夹>/structures/inactive下,结构不会被生成。

  • active:将保存在<版本文件夹>/structures/active下,结构会按照规则生成。

  • world/inactive:将保存在<地图文件夹>/structures/inactive下,同 inactive。

  • world/active:将保存在<地图文件夹>/structures/active下,同 active。

可旋转、可镜像:结构是否会被随机旋转、镜像,对于具有特殊实体方块的结构谨慎启用,可能某些模组不支持该项从而出现错误旋转。

阻挡:如果启用,那么这个结构生成的位置将不会生成其他结构。

生成:在哪里,什么条件下生成的规则。

变化器:对结构生成时的变化,例如将结构内的方块随机替换。

元数据:里面可以写有作者名、网站链接和对结构的描述。

变数:[暂时不明]

依赖物:用于检测是否存在符合结构生成的模组。

其中最重要的是生成规则。[基础]如何自定义建筑生成-第5张图片

点击+可以添加生成规则,这可以用于纯粹堆量来增加结构的生成概率(默认规则结构最大生成密度只能是25区块/个)。

模组提供了以下规则:

  • 原版装饰:代替原版如树木、仙人掌这样的地物。

  • 树苗:直接生成树木而不是替换地物。

  • 结构:替换如村庄这样的原版结构。

  • 结构列表:用于结构方块。

  • 自然:不依赖于原版生成的地物、结构来随机生成。

  • 迷宫配件:作为迷宫的一部分生成。

  • 静态:在指定位置生成。

这里选取自然规则。[基础]如何自定义建筑生成-第6张图片

生成id:随意填写即可,可以直接使用后面的"??"来随机生成一个id。

类别:结构的稀有程度,具有以下类别:

  • Common:结构每 100 区块生成一次。

  • Frequent:结构每 25 区块生成一次。

  • Rare:结构每 1666 区块生成一次。

  • Ultra Rare:结构每 6666 区块生成一次。

  • Adventure:结构每 330 区块生成一次。

缺点就是只能按照这些特定数值来生成。

权重:按下右边的D可以修改,数值越大相较于其他同条件结构更容易生成。

放置器:建筑的生成高度(y值),用于实现埋在地下或者漂浮在空中的结构。

生物群系:结构可以在哪些生物群系生成。

维度:结构可以在哪些维度生成。

限制:每个维度最多生成多少个结构。

打开放置器。[基础]如何自定义建筑生成-第7张图片

基线:用于确定结构的参照层,例如0就是将结构最底层作为参照,将其调高直接生成的话结构会陷入地下。

资源:[暂时不明]

预设:一些模组提供的预设:

  • Surface:在地表非液体表面或者树叶处正常生成。

  • Clear:无规则(不会生成)。

  • First Nether Surface:在地狱0~125的地面生成。

  • Floor:在地表非树叶处生成,和surface不同的是没有禁止在液体表面生成。

  • Half Buried:半埋,在非树叶、空气、可被替换方块(如草)和流体表面向下10%生成,

  • Liquid Surface:在流体表面生成。

  • Nether Surface:同First Nether Surface,但条件是要在地狱岩上方。

如果预设没有符合要求的,可以点击右面的O来修改当前预设规则。以Clear为例:[基础]如何自定义建筑生成-第8张图片

点击“无 Element”上下的长条+号(不是右上角的短+号)来添加条件:

限制:限制结构的生成y值及所在位置。

符合:只有符合条件才会生成结构。

“限制”界面:[基础]如何自定义建筑生成-第9张图片

同样点击长条+来添加条件:

  • 动态位置:快速选取三个特殊值:基岩层(y=0)、海平线(y=63)、顶点(y=255)。

  • 动态移动:结构有多高就会移动多少,可选上、下两个方向。

  • 搜索器(a):可以写检测所在位置方块是否为流体、树叶等的表达式,可以参考其他几个预设下的写法。

  • 搜索器(b):同上,但多了向上/下移动的比例。

    (注意上面两项在游戏内同名,不清楚是否为翻译问题)

  • 移动:向上或向下移动指定距离。

此处的规则为从上至下依次计算,例如 First Nether Surface 的第一项限制是这么写的:[基础]如何自定义建筑生成-第10张图片

这表示从基岩层(y=0)出发>向上移动125格>向下移动结构高度>直到基岩层的中间部分。

“符合”界面更为简单,直接使用表达式检测所在位置方块是否符合条件。

退回上一级,打开生物群系:[基础]如何自定义建筑生成-第11张图片

通过写入各类表达式来确定生物群系条件,如生物群系类型。

维度:[基础]如何自定义建筑生成-第12张图片

提供 Overworld、Nether、End、Planet Surface 这几个选项,注意这里预设的定义有些太模糊导致本应在主世界生成的结构生成在了洞穴世界这样上下都是基岩的维度,甚至会顶破天花板,所以建议不使用预设,直接填写维度 ID。

回到主界面,选择变化器:[基础]如何自定义建筑生成-第13张图片

这里可以用于替换结构的方块,让结构显得破败等。例如模组自带的 SmallWoodenCottage 的“毁灭”规则:[基础]如何自定义建筑生成-第14张图片 

效果:[基础]如何自定义建筑生成-第15张图片

设置完成后,点击下面的保存,结构将会被保存到之前选择的位置。随后跑到任意位置,输入/#gen <之前设置的结构名>,就会在对应位置出现结构的虚框。[基础]如何自定义建筑生成-第16张图片

输入/#confirm即可生成。[基础]如何自定义建筑生成-第17张图片

至此,结构添加完毕。输入/#reload可以直接重载生成规则来查看结构有没有按所设想的那样生成。

如果想修改结构的生成规则,可以输入/#edit <之前设置的结构名>来再次打开 GUI;如果想直接更改结构内的某些方块,你可以直接删除结构重新建一个新的,或者使用/#import <结构名>生成结构的最初形态,更改方块,使用如上方法选取,而后输入/#export <结构名>保存即可。或者随便写个名字直接保存,然后去对应的文件夹找到它:[基础]如何自定义建筑生成-第18张图片

比如想用 NewStructureChange 保存的结构去替换 NewStructure 里面的,将两者分别用压缩软件打开:[基础]如何自定义建筑生成-第19张图片

其中 worldData.nbt 保存的是结构本体,上面的 structure.json 保存的是生成规则,替换掉worldData.nbt即可。

尽管是 NBT 格式的文件,但实测使用结构方块保存的结构无法替换。