Zufallssequenzdaten

Aus Minecraft Wiki
Zur Navigation springen Zur Suche springen
Image
Dieser Inhalt ist nur für die Java Edition.

Zufallssequenzen sind Zufallszahlengeneratoren, die von Beutetabellen und dem Befehl /random (roll|value) ... verwendet werden.

Die aktuellen Zufallssequenzen einer Welt und die Einstellungen für Zufallssequenzen werden in der Datei /data/random_sequences.dat gespeichert. Diese Datei ist als GZip-Datei komprimiert und verwendet die NBT-Methode.

  • : Der Wurzel-Verbundtyp.
    • data: Daten zu Zufallssequenzen.
      • include_sequence_id: Gibt an, ob der Hash der Namespace-IDs von Zufallssequenzen deren Startwerte beeinflusst. Standardwert: true. Kann mit dem Befehl /random reset * ... geändert werden.
      • include_world_seed: Gibt an, ob der Welt-Seed die Seeds von Zufallssequenzen beeinflusst. Standardwert: true. Kann mit dem Befehl /random reset * ... geändert werden.
      • salt: Der Salt, das beim Erstellen einer Zufallssequenz verwendet wird. Standardwert: 0. Kann mit dem Befehl /random reset * ... geändert werden.
      • sequences: Aktuelle Zufallssequenzen in der Welt.
        • <Namensraum>: Eine Zufallssequenz.
        • source: Der Seed dieser Zufallssequenz.
        • : Die unteren 64 Bit.
        • : Die oberen 64 Bit.
    • DataVersion: Die Versionsdaten.

Zufallssequenzen werden von einer Beutetabelle verwendet, wenn der Startwert nicht angegeben ist. Beutetabellen in Behältern der Weltgenerierung werden nicht von Zufallssequenzen beeinflusst (sondern direkt vom Startwert.

Zufallssequenzen verwenden den Zufallszahlengenerator Xoroshiro128++.

Wenn eine Zufallssequenz zum ersten Mal aufgerufen wird, wird sie mit dem Seed erstellt:

  1. Aus dem salt-Wert.
  2. Wenn include_world_seed true ist, wird salt mit dem Welt-Seed per XOR verknüpft.
  3. Erweitert den Wert auf 128 Bit. Die unteren 64 Bits ergeben sich aus der XOR-Verknüpfung des Wertes mit 0x6a09e667f3bcc909. Die oberen 64 Bits ergeben sich aus der Summe der unteren 64 Bits und 0x9e3779b97f4a7c15.
  4. Wenn include_sequence_id true ist, wird es mit dem MD5 der Namensraum-ID der erstellenden Zufallssequenz per XOR verknüpft.
  5. Die beiden Long-Zahlen, die aus den unteren bzw. oberen 64 Bits berechnet werden, bilden den Seed der Zufallssequenz.
public static long mixStafford13(long v) {
	v = (v ^ v >>> 30) * 0xbf58476d1ce4e5b9L;
	v = (v ^ v >>> 27) * 0x94d049bb133111ebL;
	return v ^ v >>> 31;
}
Versionen der Java Edition
Vollversion
1.20 (1.20-pre1)
  • Zufallssequenzen hinzugefügt.