Flandre923
892 words
4 minutes
数据包_模组通用开发_生成单个建筑物

参考#

https://www.youtube.com/watch?v=qaLhMrbtxpM&t=5s

声明#

该文档是和视频一致的,并不会包含视频中的所有操作,请结合视频查看。

建筑生成#

这次我们讲解关于建组的生成,这次说的一个对于模组开发还是数据包开发的一个通用的方式,归根到底是数据包的内容,不过对于模组开发也是能用的,只需要将对于的文件放在你的模组对于的位置就可以了。

对于数据包的讲解我们不过多的赘述,大家可以去查看其他人的教学视频,这里我们还是提一下相关使用的工具,而不会具体讲解他们的概念,相关的概念请大家去看更加基础的视频。

我们使用的工具包含了

  • VScode

Vscode插件

  • data-pack helper plus
  • language-mcfunciton
  • syntax-mcfunction

一般的数据包的路径#

这里还是对文件的路径做一个简单的介绍,详细的解释查看其他的up主的视频和wiki

20240427111639

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文件完成建筑的生成。

  1. 首先做一个你要添加的建筑
  2. 在xyz增大的方向摆下structure block方块
  3. 设置你的名称和相对位置以及建组的大小
  4. 设置阻挡填充的空气方块的位置
  5. 通过save保存

20240427110939

对于界面的设置

20240427111301

显示空气方块,使用structure void方块表示该方块不是空气方块,生成世界时候不使用空气方块填充该方块

  1. 将show invisible blocks打开,显示所有方块,包括空气方块
  2. 在不使用空气方块的位置放置structure void方块
  3. 保存即可

20240427112626

你的文件保存的位置是:

20240427112847

你可以将其放置在你的数据包中相应的位置上,然后在游戏中输入/reload指令,重新加载数据包,之后同样使用structure block方块,调整为load模式,然后输入你的命名空间+nbt位置之后,点击load按钮可以将nbt建筑读入进来,对于原版的建组和你添加的数据包的建筑使用的是nbt这样的方式的都是可以添加进去的。

20240427113245

注意load需要点击两次,这是读入的建筑。

20240427113329

template pool#

wiki:https://zh.minecraft.wiki/w/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%93%E6%9E%84

文件目录结构是这样的

20240427115903

这个表示了生成建筑的奖励池


{
    "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
    }]
}

好了新建一个存档加载你的数据包,然后输入指令去看下把。

20240427120112

数据包_模组通用开发_生成单个建筑物
https://fuwari.vercel.app/posts/minecraft_datapack/01建筑生成/
Author
Flandre923
Published at
2024-04-27