开天辟地

您所在的位置:网站首页 gtasa108数据包 开天辟地

开天辟地

2023-12-28 06:38| 来源: 网络整理| 查看: 265

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

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

在之前,笔者搬运过一个视频,原作者是原Mojang的员工。读者可以从这个视频中了解到地形生成的大致机制,从而对数据包控制地形生成的原理有大致的掌握。

https://www.bilibili.com/video/BV13u411j7KX/

引子

在开始详细介绍前,我们需要先简要了解一下一个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文件的结果,同时也提供了大量的原版预设可供参考。

要在Minecraft中自定义世界,首先需要学会的便是定义一个新的维度。有了新的维度,你可以在里面做很多的事情,哪怕是一个超平坦世界,也可以意味着你能在一个普通的世界中通过添加一个新的超平坦维度来加入一个超平坦的世界。同时,一个简单的多维度世界也能作为很好的测试场地,避免直接对主世界造成破坏。

首先,让我们找到wiki中相应的参考页面——自定义维度 – Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)。参考wiki是一个很重要的能力,因为随着版本的更新,会新增或者改变很多东西,在没有其他人的介绍的时候,wiki就是最好的参考的资料了。处于网络连接方面的考虑,本文将会直接使用镜像站网页,如果需要最新的参考资料,还是建议去原wiki站点参考。

wiki告诉我们,自定义维度的定义主要由两个部分组成,一个是维度(dimension),一个是维度类型(dimension_type)。前者主要用于控制维度的地形、生物群系生成等,后者则用于维度中的各种设置,例如昼夜循环、床会不会爆炸、环境光照等等。

维度类型(Dimension Type)

维度类型以Json文件的形式存储在数据包的data//dimension_type/.json内。它的基本格式如下:

Wiki中的描述很详细,每一个键都有对应的详细解释,我们这里就不赘述了。唯一需要说明的一点东西便是这个整数提供器,这里其实只用写一个整数就好了,不用考虑那么多。

给出一个主世界的维度类型作为例子:

维度(Dimension)

维度以JSON文件的形式存储在数据包的data//dimension/.json下。它的基本内容如下:

首先一个便是type,即维度类型,也就是咱们上面刚刚提到过的东西了。当然,除了自定义以外,你也可以使用原版的四种设置,也就是wiki中列出来的四个(从左到右分别是,主世界,地下版的主世界,下届,末地)。

然后是一个被折叠的生成设置,它展开后是这样样子的:

哇,又是超级多的设置,不过仔细一看,其实是包含了很多种类。具体来说,生成设置分为噪声、超平坦和调试世界三种。噪声就是普通的主世界使用的方式,超平坦应该是非常熟悉的了,调试模式可能冷门一些,是一种技术性的内容,基本不会用到。如果不知道的话,可以看看这里:调试模式 – Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)

那么,让我们着重把目标放在噪声和超平坦这两个类型中。

记得填写一下type的说!

超平坦(flat)

超平坦,也就是,没有地形的起伏,每一层都是一样的方块。它的生成设置相当简单:

咱们一个一个看。

首先是layers。正如wiki中所说,这是一个列表,控制了每一层方块的合成。例如

就代表了会在y=1的位置生成一层石头。很可惜,即使是多层连续生成相同的方块也不能写一个范围区间什么的(mojang你给点劲儿呀!)

第二、三、四个键按照wiki填写即可。地物就是地面生成的各种装饰物,例如树、草、花等等。

第五个参数表示了一些将会生成的结构集。至于结构集具体是什么,会在以后的内容中说明,这里的话,就把它理解为结构的命名空间id,也就是你在/locate后面会填写的东西,比如minecraft:stronghold代表一个要塞。

下面是一个例子,这是最常见的超平坦,也就是一层基岩加三层泥土和草方块的那种:

它的结构中只会生成村庄,因为structure_overrides中只有minecraft:villages这一种。

噪声(noise)

噪声是最常用的世界生成方式,也是Minecraft中默认世界的所有维度采用的生成方式。它的格式如下:

在这里,我们看到第三个键,即biome_source又有五种类型,即minecraft:vanilla_layered、minecraft:fixed、minecraft:checkerboard、minecraft:multi_noise和minecraft:the_end。其中,minecraft:multi_noise就是噪声生成,是最复杂也是最常用到的,因为它的自定义程度最高。但是我们这一章节主要讲解维度的基本定义和注册方式,目标是让你能够在几分钟内学会定义一个新的维度,因此不会细细讲解世界生成的过多内容。为了简便起见,我们只会讲另外四种,而噪声相关的内容,我们会放在下一个章节中详细讲解。

minecraft:vanilla_layered就是主世界生成的方式。如果填写这个,将会用主世界一样的方式生成生物群系。minecraft:fixed代表了单一的生物群系,它会让世界中只存在一种生物群系。minecraft:checkerboard则会像棋盘一样生成格子状的生物群系。minecraft:the_end则会用和末地一样的方式生成生物群系。

棋盘状的生物群系

第二个键是setting,它是世界地形生成的核心部分,我们也会放在接下来的几个章节进行详细介绍。这一章节中,为了简便起见,你可以使用原版预设好的噪声设置,比如overworld代表主世界,nether代表下届,caves代表洞穴,end代表末地,floatning_islands代表空岛,large_biomes是超大生物群系等等。

总结

可以看到,即使我们已经进行了大量的简化,维度的注册和定义依然耗费了我们相当的篇幅来讲解。现在,我们来稍微总结一下在Minecraft中新建一个维度需要一些什么。

首先,维度分为两个部分进行定义,一个是维度类型,代表了维度会有的各种性质,另一个是维度设置,即维度是如何生成的。维度的设置又分为生物群系的设置和地形的设置两种,我们这篇文章主要讲解的是几种比较简单的生成方式,但是也足够玩上一阵子了。

通过一个简明的例子可能会有更好的理解呢。比如,我们要新增一个维度,这个维度有足足1024格高(y轴上下各512层),同时它和主世界一样有昼夜循环,天空光照。然后,我们再让这个维度猪灵友好,这样的话猪灵也能欣赏主世界一样的昼夜轮回。最后,我们加一些小小的恶趣味,让这个世界的床会像下届和末地一样发生爆炸。当然,它也有一些基本的生物群系,呈现小小的棋盘分布,那么,我们可以这么写:

首先写出维度类型data\test\dimension_type\test.json:

然后设置维度的生成方式\data\test\dimension\test.json,让它拥有棋盘一样的生物群系生成方式:

值得注意的是,由于我们将控制地形生成的settings填写为了minecraft:overworld,因此它会拥有和主世界一致的地形起伏。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3