浅析Minecraft地形生成(零)

|

自从1.16以后,Minecraft开始允许数据包开发者通过json文件的方式,向Minecraft中注册和添加新的维度和生物群系。而在1.18更新后,自定义世界的功能变得更为强大,当然也更加复杂。本系列文章旨在以Wiki资料为基础的介绍中,结合作者本人的开发经验和研究,对Minecraft地形生成进行浅析,以帮助更多的开发者学习和使用自定义世界的功能。

我们不会满篇幅地引用源码或者介绍一些深入的知识,只会用数据包本身特有的方式,即json文件作为例子,来介绍如何使用数据包对世界生成进行设计和自定义。

总目录

零 —— 序

引子

在开始详细介绍前,我们需要先简要了解一下一个Minecraft世界是怎样被数据包控制的。事实上,你可以从数据包的文件夹结构中略知一二。如果你熟悉数据包的话,你应该能知道数据包的一个命名空间下可以有很多注册项,其中我们最需要关注的项则是dimensiondimension_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文件的结果,同时也提供了大量的原版预设可供参考。

类似文章