Minecraft Wiki

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

了解更多

Minecraft Wiki
Advertisement
Information icon
此特性為Java版獨有。

隨機序列(Random Sequences)是用於生成戰利品表和計算/random指令[新增:JE 1.20.2]的隨機數發生器序列。

NBT結構

隨機序列資訊儲存於每個存檔的/data/random_sequences.dat中,它是一個以GZip壓縮的NBT檔案。

  • 根標籤
    •  data:隨機序列資料。
      •  include_sequence_id:決定隨機序列初始化時是否與隨機序列命名空間ID的MD5值進行異或。[新增:JE 1.20.2]
      •  include_world_seed:決定隨機序列初始化時是否與種子碼進行異或。[新增:JE 1.20.2]
      •  salt:決定隨機序列初始化時的[新增:JE 1.20.2]
      •  sequences:儲存的隨機序列。[新增:JE 1.20.2]
        •  <隨機序列的命名空間ID>:決定一項隨機序列。[新增:JE 1.20.2]
          •  source:目前隨機數發生器的種子,長度為2。第一個long為低64位元,第二個long為高64位元。[新增:JE 1.20.2]
    •  DataVersion資料版本

應用

隨機序列影響所有未指定種子的戰利品表生成。世界生成的容器內的戰利品不受隨機序列影響(但受到種子碼的直接影響),而其他戰利品表則受到隨機序列影響,例如破壞方塊時的掉落物殺死實體時的掉落物釣魚時可以釣上的物品豬布林的以物易物

當第一次使用一個隨機序列或隨機序列被/return reset重設[新增:JE 1.20.2]時,它會被初始化:

  1. 設定初始值為 salt的值[新增:JE 1.20.2]/種子碼[失效:JE 1.20.2]
  2. 如果 include_world_seedtrue,則值與種子碼進行異或。如果為false,則代表隨機序列與種子碼無關。[新增:JE 1.20.2]
  3. 將值擴展為128位元,其中低64位元是值與0x6a09e667f3bcc909進行異或,高64位元是低64位元與0x61c8864680b583eb相加。
  4. 如果 include_sequence_idtrue[新增:JE 1.20.2]將值與隨機序列命名空間ID的MD5值進行異或。如果為false,則對於世界中的每個隨機序列都會初始化為同一個種子。[新增:JE 1.20.2]
  5. 對值低64位元和高64位元分別進行如下計算,計算後的值即為隨機數發生器的種子。
public static long mixStafford13(long v) {
	v = (v ^ v >>> 30) * 0xbf58476d1ce4e5b9L;
	v = (v ^ v >>> 27) * 0x94d049bb133111ebL;
	return v ^ v >>> 31;
}

隨機序列使用Xoroshiro128++隨機數發生器。

歷史

Java版
1.20pre1加入了隨機序列。
1.20.223w31a修改了隨機序列的初始化方式。
Advertisement