Flandre923
629 words
3 minutes
数据包_模组通用开发_使用jigsaw拼图生成村庄

参考#

https://www.youtube.com/watch?v=XSNSPH7QySQ

注意#

该教程是视频相关的内容,完整的操作可以去看视频。

建筑拼图#

经过我们上次的内容,我们这次使用jigsaw做一个村庄的群落

  1. 我们首先建筑一些道路,并使用strucutre block将他们保存为nbt
  2. 将道路和我们的center区域通过jigsaw拼接起来
  3. 设置道路的jigsaw方块可以自己和自己相连,如图中所示

20240427165353

我们对center区域的设置:

20240427170131

我们完成对jigsaw方块的设置,其中个各个输入框的内容如图

20240427165537

由于我们的道路的应该是相互连接的,所以这里的name和目标的name都设置为一样的,当我们的道路生成之后,会接着替换jigsaw方块,这时有会生成道路,不过这样似乎看起来道路不会停下来了。

不过这并不用担心,第一mc是限制大小的。 第二我们可以通过设置template_pool来实现终止。

下面是我们的roads的pool


{
    "name":"class1:example_pool/roads",
    "fallback": "minecraft:empty",
    "elements": [
        {
            "weight": 3,
            "element": {
                "element_type": "minecraft:empty_pool_element"
            }
        },
        {
            "weight": 3,
            "element": {
                "location": "class1:file/roads/straight",
                "element_type": "minecraft:single_pool_element",
                "projection": "terrain_matching",
                "processors": "minecraft:empty"
            }
        },
        {
            "weight": 2,
            "element": {
                "location": "class1:file/roads/joint_l",
                "element_type": "minecraft:single_pool_element",
                "projection": "terrain_matching",
                "processors": "minecraft:empty"
            }
        },
        {
            "weight": 2,
            "element": {
                "location": "class1:file/roads/joint_x",
                "element_type": "minecraft:single_pool_element",
                "projection": "terrain_matching",
                "processors": "minecraft:empty"
            }
        },
        {
            "weight": 1,
            "element": {
                "location": "class1:file/roads/joint_t",
                "element_type": "minecraft:single_pool_element",
                "projection": "terrain_matching",
                "processors": "minecraft:empty"
            }
        }
    ]
}

我们来看下建筑,大概的原理也是一样的获得nbt数据,然后使用jigsaw连接不同的建筑。

20240427170310

先来看一个建筑的jigsaw方块的设置

20240427170547

来看下道路连接房子的jigsaw方块的设置

20240427170756

然后来看我们的templepool的设置


{
    "name":"class1:example_pool/building",
    "fallback": "minecraft:empty",
    "elements": [
        {
            "weight": 1,
            "element": {
                "location": "class1:file/builiding/house1",
                "element_type": "minecraft:single_pool_element",
                "projection": "rigid",
                "processors": "minecraft:empty"
            }
        },
        {
            "weight": 1,
            "element": {
                "location": "class1:file/builiding/house2",
                "element_type": "minecraft:single_pool_element",
                "projection": "rigid",
                "processors": "minecraft:empty"
            }
        }
    ]
}

不仅仅可以水平方位保存,也可以上下方位保存,并且可以保存实体,这里我们生成一个马。

连接方块设置为向下:

20240427171110

在structure block中设置包含实体

20240427171040

在另一个jigsaw方块设置向上

20240427171210

马的池子:

{
    "name":"class1:example_pool/hourse",
    "fallback": "minecraft:empty",
    "elements": [
        {
            "weight": 1,
            "element": {
                "location": "class1:file/entity/hourse",
                "element_type": "minecraft:single_pool_element",
                "projection": "rigid",
                "processors": "minecraft:empty"
            }
        }
    ]
    
}

支持多个生物群系怎么写#

我们使用tag支持多个群系,我们添加一个自己的tag

20240427171720

{
    "values": [
        "minecraft:badlands",
        "minecraft:wooded_badlands"
    ]
}

修改我们之前的strucutre json文件

20240427171837


{
    "biomes": "#class1:has_structure/example_structure_biome",
....
}

创建一个世界去查看你的生成吧

20240427172121

数据包_模组通用开发_使用jigsaw拼图生成村庄
https://fuwari.vercel.app/posts/minecraft_datapack/02-建筑拼图/
Author
Flandre923
Published at
2024-04-27