参考
https://www.youtube.com/watch?v=qaLhMrbtxpM&t=5s
声明
该文档是和视频一致的,并不会包含视频中的所有操作,请结合视频查看。
建筑生成
这次我们讲解关于建组的生成,这次说的一个对于模组开发还是数据包开发的一个通用的方式,归根到底是数据包的内容,不过对于模组开发也是能用的,只需要将对于的文件放在你的模组对于的位置就可以了。
对于数据包的讲解我们不过多的赘述,大家可以去查看其他人的教学视频,这里我们还是提一下相关使用的工具,而不会具体讲解他们的概念,相关的概念请大家去看更加基础的视频。
我们使用的工具包含了
- VScode
Vscode插件
- data-pack helper plus
- language-mcfunciton
- syntax-mcfunction
一般的数据包的路径
这里还是对文件的路径做一个简单的介绍,详细的解释查看其他的up主的视频和wiki
mcmeta的内容
mcmeta的内容是简单的描述数据包适用的版本和数据包描述信息。详细自行查看wiki
{ "pack": {
"description": "This is description of the data pack",
"pack_format": 26, // datapack support version
"supported_formats": [18,26] // datapack support version
}}
当然你也可以放一张2^n次方的图片在mcmeta同级目录下,命名为pack.png,表示你的数据包在游戏中显示的图标。
建筑
让我们开始正文吧,这里游戏使用的版本是1.20.4
这次我们以一个村庄的生成为例子的讲解使用数据包的功能,书写json文件完成建筑的生成。
- 首先做一个你要添加的建筑
- 在xyz增大的方向摆下structure block方块
- 设置你的名称和相对位置以及建组的大小
- 设置阻挡填充的空气方块的位置
- 通过save保存
对于界面的设置
显示空气方块,使用structure void方块表示该方块不是空气方块,生成世界时候不使用空气方块填充该方块
- 将show invisible blocks打开,显示所有方块,包括空气方块
- 在不使用空气方块的位置放置structure void方块
- 保存即可
你的文件保存的位置是:
你可以将其放置在你的数据包中相应的位置上,然后在游戏中输入/reload指令,重新加载数据包,之后同样使用structure block方块,调整为load模式,然后输入你的命名空间+nbt位置之后,点击load按钮可以将nbt建筑读入进来,对于原版的建组和你添加的数据包的建筑使用的是nbt这样的方式的都是可以添加进去的。
注意load需要点击两次,这是读入的建筑。
template pool
wiki:https://zh.minecraft.wiki/w/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%93%E6%9E%84
文件目录结构是这样的
这个表示了生成建筑的奖励池
{
"name":"class1:example_pool:center",
"fallback": "minecraft:empty",
"elements": [
{
"weight": 1,
"element": {
"location": "class1:file/center_structure/tree",
"element_type": "minecraft:single_pool_element",
"projection": "rigid",
"processors": "minecraft:empty"
}
}
]
}
structure
你可以通过place指令放置这个建筑了。
{
"biomes": "minecraft:wooded_badlands",
"adapt_noise":false,
"spawn_overrides": {},
"type": "minecraft:jigsaw",
"start_pool": "class1:example_pool/center",
"size": 7,
"step": "surface_structures",
"start_height": {
"absolute":0
},
"project_start_to_heightmap": "WORLD_SURFACE_WG",
"max_distance_from_center": 116,
"terrain_adaptation": "beard_thin",
"use_expansion_hack": false
}
/place structure class1:example_structure 81 -61 -19
structure set
让你的建筑在世界上生成,你还需要一个structureset的json文件,描述了
{
"placement": {
"type": "minecraft:random_spread",
"spacing": 34,
"separation": 8,
"salt": 654224759,
"spread_type": "triangular"
},
"structures": [{
"structure": "class1:example_structure",
"weight": 1
}]
}
好了新建一个存档加载你的数据包,然后输入指令去看下把。