我的世界Java种子大全_种子(世界生成)

efb9fbb17979aa6debccacc7e7bf544b.png  本文章介绍的是用于生成游戏世界的种子。关于游戏内的其他种子,请见“

种子(Seed)是一个由一个或多个字符(包括正整数和负整数)组成的一个值,游戏根据这个值创建每一个Minecraft世界。

种子在不同平台上不兼容,而同一平台上的不同版本之间可能兼容。

Java版的种子在Alpha v1.2.0至Beta 1.7.3期间基本一致。Beta 1.8版本完全更改了世界生成;1.2因为加入了丛林而更改了陆地上生物群系的分布;1.7.2再次重写了世界生成;1.13更改了洞穴的生成,加入了新的水域生物群系,以及调整了变种生物群系和部分结构的位置;1.14加入了竹林生物群系,同时更改了村庄和其他一些结构的位置。上面未提及每次更新加入的新结构,但它们通常不会伴随整个世界生成的大更改。

在基岩版中,Alpha 0.9.0是目前为止唯一一次彻底更改世界生成的更新。水域更新更改了海洋,村庄和掠夺更改了村庄等结构。

原主机版的种子更新大致和Java版的更新周期一致。

某些特定种子在Java版和基岩版中有着相似的生物群系分布,但地形有所不同,结构生成也不一致。

世界生成

当游戏准备生成一个世界时,游戏会调用一个算法,生成一个伪随机数,这个数决定了世界的样子。但由于伪随机算法的性质,若算法初始输入的数值(种子)是相同的话,算出的最终结果是相同的。这就是种子的意义:使用相同的种子可以生成出多个相同的世界。

当世界生成算法更新(通常是加入新的生物群系)后,相同的种子就不会生成相同的地形。这也是某些不同的游戏版本中,相同的种子无法产生相同的地形的原因。

一个世界生成后,其种子便已经确定。默认情况下游戏会自动选择种子(使用系统时间)。但玩家也可以手动设置。使用相同的种子可以重复玩相同的世界,种子也可以用于与其他玩家分享世界。种子的设置可以用数字(包括负数)、字符等,非纯数字种子会被自动转换成纯数字。

如果将旧版本的世界导入到新版本中,则新生成的区块会基于新的种子,因此并不一定会与旧区块吻合(这个现象在Java版Beta 1.8和1.7.2中非常常见)。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。

必须注意的是种子其实只是输入到伪随机算法中的值,而不是世界真正的名字。根据某个种子生成的世界的特征并不注定与种子的字面含义有关。例如,即使是使用一个生物群系的名称作为种子,生成的世界也并不会以此作为主要的生物群系。

查看种子

想要确定一个世界的种子,在Java版中,玩家需要执行命令

在基岩版中,种子可于世界选项界面中查看。也有一个种子选择器,为玩家提供预设的种子,以在出生点附近生成具有特定特征的地形。此外,beta版中,屏幕顶端会显示这个世界特定的种子。

技术细节

Java版

如果种子包含非数字字符或长度大于等于20,那么Java中的String.hashCode()函数会用来将其转换为数字。由于输出的数据类型为int,此函数将Minecraft能生成的种子数量限制为232(4,294,967,296)。为了达到完整的可能的世界数量(264,即18,446,744,073,709,551,616),必须输入纯数字种子或使用默认的世界种子。由于Java的Random类只使用种子中的48位,只有248个种子是有意义的;所有模248同余的种子相互等价。

基岩版中的种子,无论是使用数字还是字符串,都有总共232(4,294,967,296)种可能的世界。这个结论对于64位版本的Windows 10版同样成立。这是由于基岩版使用了32位的梅森旋转算法,只接受32位的种子。

版本间重叠

0至231(2,147,483,648)间的种子在Java版和基岩版会产生相同的生物群系分布,但地形、结构和结构位置、洞穴、矿石分布和生物生成等并不相同。

在Java版中,游戏不接受0作为种子,因为游戏会将其作为字符解释,然后取其ASCII值48。不过,通过输入使String.hashCode()函数返回0的字符串,仍然可以得到“种子0”。这样的单词字符串有creashaks organzine、 pollinating sandboxes、 little jungle、 small skeleton 和 drumwood boulderhead,等等。ddnqavbj 和 166lr735ka3q6。对于数字种子,任何和0关于模248同余的种子(例如281474976710656)也会生成和种子0相同的地形,不过

在基岩版中,游戏不接受-9至9的种子。small skeleton的最后一个字符取为其ASCII值比n大2的字符,即p,于是可行的字符串是small skeletop。最短的可用字符串是ddnqavb后跟一个从a至s的字符。

怪异生成

使用某些特定的种子可以观察到许多奇特的生成。

更改地形而不更改结构

种子只有一部分会用于生成世界内的特定结构。因此,通过将种子转换为二进制序列然后更改特定位,可以做到多个世界有着相同的洞穴系统、下界生物群系和其他一些结构的分布。

平行种子

将一个种子加上-7379792620528906219后得到的种子会有着和原种子完全相同的生物群系分布,但地形并不一致。

1080c28c88f19cf05fea501a2082ee86.png

164311266871034旁观模式下的地下,可见洞穴沿Z轴重复生成。

某些种子会在游戏内部中返回0,洞穴和其他结构的无限生成。Java版中,107038380838084种子会在第一次被调用时返回0,而164311266871034会在第二次被调用时返回0,导致洞穴、废弃矿井和水下峡谷等结构分别在X和Z轴上重复生成。盐,自Java版1.13后它们不在这个种子中受到影响。不过,如果上述两个种子减去1,那么水下洞穴和常规峡谷将会重复生成,但其他结构则不再重复。已有理论分析这些种子也会影响要塞中不同方块类型的分布和恶地中陶瓦的图案,但尚无切实证据证实。

其他一些地物也会受到影响,例如装饰性结构。它们通常沿对角线生成。

在基岩版中,种子289849025和1669320484会沿对角线重复生成洞穴、峡谷和一些装饰性地物。

af13596c169ab688cf0c8acbacfbd571.gif

此段落需要更新。

段落中某些信息已经不符合当前版本情况。

添加了一个简单的世界生成器。

世界生成器更新。

展示了再次进行更新的世界生成器。

生成更多的悬崖。

公布了等轴距级渲染的屏幕截图。

现在可以在生成世界时选择岛屿、浮岛、平坦或原始作为世界类型。

可以选择正方形、长形或下深作为世界形状。

可以选择小、正常或大作为世界大小。

下深浮岛地图现在有多层岛屿。

现在可以选择世界主题,有正常和地狱。

现在岛屿生成更多的沙子。

海洋现在生成无限的水。

水现在可以自然生成于海平面上和浮岛上。

减少洞穴被水淹没的可能性。

允许玩家自定义地图种子。

调试屏幕开始显示当前世界的种子。

服务器将不再向客户端发送种子。

由于单人游戏的实现方式与多人游戏合并,世界的种子不再显示在调试屏幕上。

添加/seed命令,用于显示当前世界的种子。

世界生成算法发生改变,这意味着使用一个旧版本存档,原先未加载的区块将生成不同地形。

加入了种子。

更改了地形生成,这使得旧种子变得过时了。

你知道吗

自Java版1.7.2至1.12.2的版本间,通过更改源代码并将第6个genlayer的值‌

重要的种子

下面这些种子在某些时候曾被官方地图和资源使用过:

在Java版中,演示模式的世界种子可以在完整版中输入North Carolina得到。

在Java版中,自Beta 1.8 Pre-release至18w22c的标题界面的背景图世界种子是2151901553968352745或8091867987493326313Beta 1.6.6至Beta 1.7间的版本来生成。

在Java版中,原始的pack.png图像显示的世界种子是3257840388504953787,在Alpha v1.2.2生成。Alpha v1.2.0至Beta 1.7.3间的版本生成,不过会有细微差别。

在Java版中,Skull on Fire这幅画的世界种子是-6984854390176336655或-1044887956651363087,在Alpha v1.1.2_01或更早的版本生成。

b48919ff20908ab314f9e9a4bef118c5.png

一个黑森林的不完全渲染。

798e23cd96569592ccc5ee666fbd7de8.png

大部分地形都没有加载出来,所以它们看起来和天空的颜色一样。

外部链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vc++全版本组件大全 VC++运行时(Visual C++ Runtime)是VC++开发环境中用于支持C和C++程序运行的基础库集合。这些库包含了执行C/C++程序所必需的基本函数和数据结构,例如内存管理、字符串操作、输入输出处理、异常处理等。VC++运行时库分为静态库和动态库两种形式,以适应不同类型的项目需求。 静态链接库 vs 动态链接库 静态链接库(Static Linking Libraries):在编译时,静态库的代码会被直接嵌入到最终生成的可执行文件中。这意味着每个使用静态库的程序都会包含库代码的一个副本,导致最终程序的体积较大,但不需要外部库文件支持即可独立运行。在VC++中,静态链接库的例子有LIBC.lib(用于单线程程序)和LIBCMT.lib(用于多线程程序)。 动态链接库(Dynamic Link Libraries):与静态链接相反,动态库的代码并不直接加入到应用程序中,而是在程序运行时被加载。这使得多个程序可以共享同一份库代码,节省了系统资源。VC++的动态运行时库主要通过msvcrt.dll(或其变体,如MSVCRTD.dll用于调试版本)实现,与之配套的导入库(Import Library)如CRTDLL.lib用于链接阶段。 运行时库的版本 VC++运行时库随着Visual Studio版本的更新而发展,每个版本都可能引入新的特性和优化,同时保持向后兼容性。例如,有VC++ 2005、2008、2010直至2019等多个版本的运行时库,每个版本都对应着特定的开发环境和Windows操作系统。 重要性 VC++运行时对于确保程序正确运行至关重要。当程序在没有安装相应运行时库的计算机上执行时,可能会遇到因缺失DLL文件(如MSVCP*.dll, VCRUNTIME*.dll等)而导致的错误。因此,开发完成后,通常需要分发相应的VC++ Redistributable Packages给最终用户安装,以确保程序能够在目标系统上顺利运行。 安装与部署 安装VC++运行时库通常是通过Microsoft提供的Redistributable Packages完成的,这是一个简单的过程,用户只需运行安装程序即可自动安装所需组件。对于开发者而言,了解和管理不同版本的运行时库对于确保应用程序的广泛兼容性和可靠性是必要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值