Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Minecraft Wiki
Advertisement
Information icon
此特性为Java版独有。

随机序列(Random Sequences)是用于生成战利品表和计算/random命令的随机数发生器序列。

NBT结构[]

随机序列信息存储于每个存档的/data/random_sequences.dat中,它是一个以GZip压缩的NBT文件。

  • 根标签
    •  data:随机序列数据。
      •  include_sequence_id:决定随机序列初始化时是否与随机序列命名空间ID的MD5值进行异或。
      •  include_world_seed:决定随机序列初始化时是否与世界种子进行异或。
      •  salt:决定随机序列初始化时的
      •  sequences:存储的随机序列。
        •  <随机序列的命名空间ID>:决定一项随机序列。
          •  source:当前随机数发生器的种子,长度为2。第一个long为低64位,第二个long为高64位。
    •  DataVersion数据版本

应用[]

随机序列影响所有未指定种子的战利品表生成。世界生成的容器内的战利品不受随机序列影响(但受到世界种子的直接影响),而其他战利品表则受到随机序列影响,例如破坏方块时的掉落物杀死实体时的掉落物钓鱼时可以钓上的物品猪灵的以物易物

当第一次使用一个随机序列或随机序列被/return reset重置时,它会被初始化:

  1. 设置初始值为 salt的值。
  2. 如果 include_world_seedtrue,则值与世界种子进行异或。如果为false,则代表随机序列与世界种子无关。
  3. 将值扩展为128位,其中低64位是值与0x6a09e667f3bcc909进行异或,高64位是低64位与0x61c8864680b583eb相加。
  4. 如果 include_sequence_idtrue,将值与随机序列命名空间ID的MD5值进行异或。如果为false,则对于世界中的每个随机序列都会初始化为同一个种子。
  5. 对值低64位和高64位分别进行如下计算,计算后的值即为随机数发生器的种子。
public static long mixStafford13(long v) {
	v = (v ^ v >>> 30) * 0xbf58476d1ce4e5b9L;
	v = (v ^ v >>> 27) * 0x94d049bb133111ebL;
	return v ^ v >>> 31;
}

随机序列使用Xoroshiro128++随机数发生器。

历史[]

关于“随机序列格式”的历史,请见各版本页面。


关于“随机序列格式”的历史,请见各版本页面。


关于“随机序列格式”的历史,请见各版本页面。


关于“随机序列格式”的历史,请见各版本页面。


Advertisement