热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《我的世界》Java版种子合集:探索多样世界生成

本文介绍了《我的世界》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

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

外部链接



推荐阅读
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文详细解析了Java中hashCode()和equals()方法的实现原理及其在哈希表结构中的应用,探讨了两者之间的关系及其实现时需要注意的问题。 ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 深入理解Java字符串池机制
    本文详细解析了Java中的字符串池(String Pool)机制,探讨其工作原理、实现方式及其对性能的影响。通过具体的代码示例和分析,帮助读者更好地理解和应用这一重要特性。 ... [详细]
  • 本文详细介绍了Hive中用于日期和字符串相互转换的多种函数,包括从时间戳到日期格式的转换、日期到时间戳的转换,以及如何处理不同格式的日期字符串。通过这些函数,用户可以轻松实现日期和字符串之间的灵活转换,满足数据处理中的各种需求。 ... [详细]
author-avatar
放屁虫666_530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有