浅析Minecraft地形生成(零)
自从1.16以后,Minecraft开始允许数据包开发者通过json文件的方式,向Minecraft中注册和添加新的维度和生物群系。而在1.18更新后,自定义世界的功能变得更为强大,当然也更加复杂。本系列文章旨在以Wiki资料为基础的介绍中,结合作者本人的开发经验和研究,对Minecraft地形生成进行浅析,以帮助更多的开发者学习和使用自定义世界的功能。
我们不会满篇幅地引用源码或者介绍一些深入的知识,只会用数据包本身特有的方式,即json文件作为例子,来介绍如何使用数据包对世界生成进行设计和自定义。
总目录
零 —— 序
引子
在开始详细介绍前,我们需要先简要了解一下一个Minecraft世界是怎样被数据包控制的。事实上,你可以从数据包的文件夹结构中略知一二。如果你熟悉数据包的话,你应该能知道数据包的一个命名空间下可以有很多注册项,其中我们最需要关注的项则是dimension
和dimension_type
,以及worldgen
下的各种内容。前两个决定了Minecraft中的维度,而后者则决定了这个世界(维度)应该怎样生成。而在worldgen
文件夹下,你又能看到一连串令人头晕目眩的各种文件夹,不过别着急,我们将会慢慢介绍它们。根据它们的功能,我们将这些文件夹分类列在了下方。
- 维度生成
dimension
dimension_type
- 地形生成
noise
noise_settings
density_function
configured_carver
- 生物群系
biome
- 地物
configured_feature
placed_feature
- 结构生成
processor_list
structure
structure_set
template_pool
在写本文的时候,正好是Minecraft 1.20.1出来的时候,所以文章的一切都会以1.20.1的格式为准。
基础准备
首先,要使用数据包编辑世界,你首先需要了解数据包的基本框架和结构。数据包的世界生成并不需要任何命令的参与,因此不用担心命令方面的基础问题。其次,你还应当了解json文件的编写方式,以及学会阅读minecraft wiki中的json的表示格式。由于世界生成的json一般又臭又长,因此建议使用vscode中的datapack-helper plus插件进行自动补全以及格式纠正。同时,你也可以使用misode制作的在线编辑器数据包生成器 – Minecraft 1.18, 1.19, 1.20 (misode.github.io),它可以实时预览很多json文件的结果,同时也提供了大量的原版预设可供参考。
2条评论