浮点数精度误差(X/Z:0 - ±2,147,483,648)[]
在远离世界中心百万格的地方,许多奇怪的现象开始出现。首先能感受到的就是卡顿的移动。这与边境之地无关,这是浮点精度误差而产生的结果。在老版本的Minecraft中,地图在玩家周围开始渲染时会渲染出两个不同的版本,一个渲染方块本身(实体和所需方块生成数量)另一个则渲染视觉外观(比如说碰撞箱、方块像素等等)。在Java版1.7及更早版本中,世界渲染视觉外观出现了失去精度的现象,导致了卡顿的移动发生。世界精度丢失的原因是因为游戏渲染引擎使用了双精度浮点数,这决定了玩家周围的世界位置。但渲染引擎会使用单精度浮点数来确定玩家移动至周围的方块所需的距离,由于单精度浮点数的精确度只有双精度浮点数的一半,导致渲染引擎没有办法从中得到足够信息去正确渲染地形,并且距离翻倍的位置上信息又会被削减一半。只要移除渲染引擎中的单精度浮点数代码即可修复这个问题。
这种卡顿的移动位于X/Z=±16,384时就可以被感受到,位于±524,288时变得十分的明显。这种情况会在玩家经过2的每个次幂时变得越来越明显(例如2,097,152或者4,194,304)。在X/Z16,777,216后碰撞箱会占据一整个方块,这导致几乎无法放置和摧毁方块。浮点精度误差会在X/Z2,147,483,519后变得不再明显,因为此时表面纹理会停止渲染,且方块不再生成于此处。在世界的中心处,世界只会偏移1⁄4194304(0.000000238...)方块,在32位整数极限后世界将偏移256格方块。对于任何介于n和2n的位置上(n是2的一个次幂),都会偏移n⁄8388608方块或n⁄524288方块像素。浮点精度误差还会影响红石粉和梯子等实体。如果玩家利用“区块生成故障”漏洞,红石粉和梯子将会被明显地被拉伸。当玩家每经过2的一个次幂后它们的大小就会翻倍,在X/Z=268,435,456的位置上红石粉会变为一个区块大,X/Z=1,073,741,824时会变为128个方块长,理论上如果地形能生成到64位整数限制的话,碰撞箱和红石粉的大小就会变为2.2万亿格宽。
假区块及光照停止渲染处(X/Z:>±32,000,000)[]
当玩家在边境之地更深入探索时,异常现象会严重至开始影响游戏的进行。在X/Z为±32,000,000时,尽管方块仍然出现,但它们永远不存在,也不会生成。当Minecraft生成并加载区块时,它加载的是空地形,不能在草、石头和水纹理上面行走。这种地图生成方式会一直延伸至32位整数的最大或最小限制。游戏只可以加载X/Z到±32,000,000的区块,这样导致噪声地图和区块生成器之间出现了问题。为了解决这个问题,Minecraft默认移除X/Z=±32,000,000以外的区块,并且只会生成噪声地图。如果玩家尝试走上这个地图,他们会掉进虚空。这个值被硬编码在游戏代码里,不可更改(除非修改源代码文件)。因为技术上区块不会生成在±32,000,000以外的位置,而树、掉落的沙砾、掉落的沙子、生物、草和其他实体都不会生成,光照也会停止渲染,导致海洋和洞穴的亮度与露天环境完全相同。这样可以使地图变得相对稳定,只会在罕见情况下崩溃,但这种崩溃在低端电脑上更容易发生。在很罕见的情况下,如果玩家在Alpha 1.1.0-Beta 1.7.3利用了“灵魂生成漏洞”或者下文提及的“区块生成故障”,玩家可以在±32,000,000之外的地方生成树及其他植物。
地图渲染限制(X/Z:±268,435,456 - ±2,147,483,647)[]
在非常非常大的X/Z(取决于操作系统,但通常在X/Z±268,435,456和±2,147,483,647发生),地图渲染会出现漏洞导致地形闪烁。这个现象在X/Z小于±268,435,456时已经开始出现,但大于±268,435,456时变得很明显,且每隔2的n次方会变得越来越明显。这样推算下去,X/Z超过±268,435,456时地图会偏移32格(2个区块),尽管这一推算未被确认。
区块生成故障(X/Z:±524,288–X/Z:±1,073,741,824)[]
在Beta1.7.3中使用单机游戏命令时,当玩家只在一个坐标传送到524,288,并在其他坐标值为0的情况下移动,玩家可以让已生成的区块重新生成。如果重复步骤,一旦玩家到达X/Z坐标为33,554,432的地方时,树和实体可以在边境之地内部生成,尽管在正常情况下,植被和实体不应在这么远的地方生成(方块极限为:X/Z:32,000,000)。然而,因为方块渲染极限为X/Z:2,147,483,519,树和实体生成的最远距离为1,073,741,824。如果玩家在X/Z:32,000,000的位置上并且此处生成了自然地形,此处生成的植物会出现被破坏但方块仍在原位的现象,比如:一朵生成在假区块的花被破坏并掉落了物品,但是花仍然会又出现在原位并再次掉落物品,如此无限循环导致出现了无限的实体,导致出现了突然性的卡顿。
32位整数极限(X/Z:>±2,147,483,647)[]
在X/Z±2,147,483,647,方块不再被渲染,这样只会留下一片空荡荡的天空。游戏很有可能会在此崩溃,玩家会被卡住。然而,游戏仍然生成带云的区块。快速渲染的云会被严重拉伸。32位机器通过这个点将会崩溃,64位机器如果不进行大量修改则无法通过。
云渲染限制(X/Z:±25,769,803,000 - ±25,769,804,000)[]
在X/Z±25,769,803,000~±25,769,804,000之间云停止渲染(不同的地图停止渲染的坐标不同,但云会在这个坐标范围内消失。不适用于快速渲染的云)。越过了这个坐标,只有天空、太阳月亮和仍然存在的虚空。
区块生成终点(X/Z:>±34,359,738,368)[]
如果玩家到达X/Z±34,359,738,368(235),区块会开始被覆盖。因此,这个坐标是Minecraft停止生成区块的地方。到达这个限制时,游戏会卡死并崩溃,随后显示内存用尽的屏幕。然而在一些情况,玩家能够在Minecraft崩溃前维系几秒。区块大小为16×16,因此这很可能是由于Minecraft的区块生成限制也是32位,即2147483648 x 16 = 34359738368。
条纹之地(X/Z:>±9,007,199,254,740,992)[]
(注:此极限为理论极限。)Java版使用双精度浮点数(1位符号,11位阶码,52位小数)来决定实体的位置和其他计算。大多数情况下,只有52位专用于分数;因此,在X/Z:>±9,007,199,254,740,992(2^53)后,精度将中断到仅考虑每秒方块,依此类推。结果是,方块生成将呈现基岩版中2^24之后的条纹形状。然而这只是推测出的结果,在不修改游戏源码的情况下没人能够让地形在这么远的地方渲染。
64位整数极限(X/Z:>±9,223,372,036,854,775,807)[]
64位机器的有符号整数的极限值是±9,223,372,036,854,775,807(263)。然而,尽管任何机器理论上都可以到达这个极限值,在游戏中不可能到达这个点附近的任何地方,因为绝大多数的人会有游戏立即卡死,随即崩溃的体验。在一些情况下,玩家可以传送到这个位置,但这非常非常困难。如果玩家成功到达这个位置,游戏中存在的只有太阳以及天空。
在此之前,曾有理论称在这个距离不会有太阳,天空会是漆黑一片,云会偶尔生成。后来有人证明该理论是错误的。
64位浮点数极限(X/Z≈±1.797693134862315907729305190789 x 10308)[]
这是理论上真正的硬极限。在2018年8月1日,一位名叫Aura Gunner的主播拍摄了传送到X值为约1.7×10308的视频。因1.7 × 10308为Java可读的最大数字(同时也是双精度浮点数的极限值),导致玩家的X坐标读作“无穷大”。玩家无法到达更远的地方,因为Java读取器的物理限制,游戏总是会在此崩溃。几乎没有任何办法可以到达这里,然而如果使用Cheat Engine编辑坐标来允许连续传送,可使玩家到达这么远的距离。
垂直方向上的现象(Y:<-2,147,483,647)[]
在Beta 1.7.3,随着玩家掉到Y=-2147483647以下,虚空的黑暗消失了,取而代之的是看起像是空的世界。在这个位置有天空、太阳和月亮,它们都能够取决于一天中的时间而被看见。尽管如此,玩家仍然会受到来自虚空的伤害。
语言