自定义结构 1.21 Fabric
本篇教程的视频:
本篇教程源代码
GitHub地址:TutorialMod-Structure-1.21
介绍
本篇教程我们将为我们的模组添加自定义结构
,结构在高版本中现在也是一个数据驱动的东西了,所以说除了结构文件
之外,其他的文件都是json
文件
然后关于结构的教程也有Click Here
这个作者写的是StructureTutorialMod
,这个模组是专门用来讲解结构的,大家可以去看看,虽然是英文的,但是也是很详细的,这里我就不再赘述了
这里面也分单体结构(只有一个小建筑体)和多体结构(由两个及其以上的建筑体组合而成),本篇教程我们将讲解单体结构
准备工作
首先得有一个结构文件,这个文件是nbt
文件
但我们怎么获取呢?
首先当然得有个建筑(或者结构),你先造个小东西,这里先不要超过48*48*48
,因为这个是结构方块
最大的囊括范围,也是一个单体建筑最大的范围
然后我们要获取一个结构方块
,这里我们只能使用命令
来获取,因为结构方块
是没有物品的,所以我们得用命令来获取
1 | /give @s minecraft:structure_block |
随后,我们将一个结构方块
放在我们的建筑的一个角落,然后我们打开它,设置为Corner
(角落模式
),设置好结构的名字
而后我们跑到对角线的位置放置另一个结构方块
,设置为Save
(储存模式
),也设置好相同的名字
接下来我们在这个结构方块
中点击Detect
(检测
),然后它就会出现一个白框包起来的区域,这个就是我们的结构将会被保存的区域,这里我们先观察一下我们的建筑体是否完全在这个白框内,如果不在,我们可以调整一下
然后我们点击Save
(保存
),这个时候我们的结构就被保存了,我们可以在world
文件夹下的generated
文件夹中找到一个structures
文件夹,里面就是我们的结构文件
不过,除此之外,我再讲讲另外的几个方块
这里我们先将结构方块
的显示不可见方块
设置为ON
,然后我们就可以在白框内看到一些紫色
的小方块,这些小方块就代表空气
这里我们先获取一些方块
1 | /give @s minecraft:structure_void |
第一个是结构空位
,这个是用来填充结构的
我们现在看到的都是紫色
的小方块,它们在世界生成中就直接是空气
如果说我们的结构生成在水中,那么这些紫色小方块的位置还是空气,不会被水填充(除了水会流下了)
而我们使用获得的结构空位
,右键这些紫色
小方块,小方块会变成粉色
的(可能颜色很淡,不太明显)
此时,如果说我们的下来的结构生成在水中,那么这些粉色小方块的位置就会被水填充
第二个是屏障
,这个是用来阻挡玩家的,但是不会阻挡光线,这个我就不用多说了,右键后,紫色
小方块会变成红色
的
第三个是光源方块
,这个是用来照亮的,右键后,紫色
小方块会变成黄色
的,同时它的亮度
默认是15
,也就是最大亮度,右键可以改变其亮度
光源方块有一个好处,对于大场景或是不太好放置光源的地方,我们可以使用光源方块来照亮(这也是未来罗德岛陆行舰3.0工程中即将大规模运用的一个东西)
编写结构相关数据文件
移动结构文件
我们先将保存的nbt
文件放到resources/data/tutorialmod/structure
(注意没有s)文件夹下
tags
在structure
的同级目录下,我们再创建一个tags
文件夹,里面再创建一系列文件夹,tags/worldgen/biome/has_structure
,然后在里面创建一个house.json
文件(具体的名字和你的保存的结构的nbt
文件一致)
结构如下
1 | resources |
1 | { |
这个是指我们的结构可以生成在哪些生物群系中,这里我们指定了一些生物群系,当然你也可以指定其他的生物群系
worldgen
在structure
的同级目录下,我们再创建一个worldgen
文件夹,里面再创建一系列文件夹,结构如下
1 | resources |
稍微有点多,名字一定一定不能错
structure
在个文件夹下,我们创建一个house.json
文件(具体的名字和你的保存的结构的nbt
文件一致)
1 | { |
这里面大部分是注释,可以自己先看看
type
是结构的类型,这里我们使用jigsaw
,这个是用来生成结构的;start_pool
是结构的模板池
size
是结构生成数量;max_distance_from_center
是结构离中央区块的最大生成距离
biomes
是结构的生物群系,指定为我们刚才写的;step
是结构的生成位置
start_height
是结构的生成高度,0
就是贴地;project_start_to_heightmap
是结构按地形投影的高度
use_expansion_hack
这玩意适用于旧版村庄生成,不管他;spawn_overrides
是结构的生成生物什么的
template_pool
接下来我们在template_pool
文件夹下创建一个start_pool.json
文件
1 | { |
这个文件是模板池,里面是结构的生成模板
大体上不用改什么,改个name
和location
就行了
structure_set
在structure_set
文件夹下创建一个house.json
文件
1 | { |
这是结构的生成设置,改个structure
就行了
当然,这里的salt
是每一个结构都有且唯一的,不要和其他的结构的salt
一样(这玩意我也不知道是什么,从Wiki上找找直接去密码学里了)
那么现在,我们的文件都写完了,我们可以开始游戏了,当然,建议新建一个存档