diff --git a/mappings/net/minecraft/util/math/random/AbstractRandom.mapping b/mappings/net/minecraft/util/math/random/AbstractRandom.mapping
deleted file mode 100644
index 146f95ddf2..0000000000
--- a/mappings/net/minecraft/util/math/random/AbstractRandom.mapping
+++ /dev/null
@@ -1,47 +0,0 @@
-CLASS net/minecraft/class_5819 net/minecraft/util/math/random/AbstractRandom
- COMMENT A reimplementation of {@link java.util.Random}.
- COMMENT
- COMMENT
There are four built-in implementations, three based on the classic Java algorithm
- COMMENT and one using Xoroshiro128++ algorithm.
- COMMENT
- COMMENT
- COMMENT - {@link SimpleRandom}: Silently breaks when used concurrently. Based on
- COMMENT {@link java.util.Random}.
- COMMENT - {@link AtomicSimpleRandom}: Throws when used concurrently. Based on
- COMMENT {@link java.util.Random}.
- COMMENT - {@link BlockingSimpleRandom}: Blocks the thread when used concurrently.. Based on
- COMMENT {@link java.util.Random}.
- COMMENT - {@link Xoroshiro128PlusPlusRandom}: Silently breaks when used concurrently.
- COMMENT Implements the Xoroshiro128++ algorithm.
- COMMENT
- COMMENT
- COMMENT @implNote Note that due to MC-239059, this is not an exact reimplementation of
- COMMENT the Java random number generator algorithm.
- METHOD method_33650 skip (I)V
- ARG 1 count
- METHOD method_38420 derive ()Lnet/minecraft/class_5819;
- METHOD method_38421 createRandomDeriver ()Lnet/minecraft/class_6574;
- METHOD method_39332 nextBetween (II)I
- ARG 1 min
- ARG 2 max
- METHOD method_43047 createAtomic ()Lnet/minecraft/class_5819;
- METHOD method_43048 nextInt (I)I
- ARG 1 bound
- METHOD method_43049 createAtomic (J)Lnet/minecraft/class_5819;
- ARG 0 seed
- METHOD method_43050 createBlocking ()Lnet/minecraft/class_5819;
- METHOD method_43051 nextBetweenExclusive (II)I
- ARG 1 min
- ARG 2 max
- METHOD method_43052 setSeed (J)V
- ARG 1 seed
- METHOD method_43053 create ()Lnet/minecraft/class_5819;
- METHOD method_43054 nextInt ()I
- METHOD method_43055 nextLong ()J
- METHOD method_43056 nextBoolean ()Z
- METHOD method_43057 nextFloat ()F
- METHOD method_43058 nextDouble ()D
- METHOD method_43059 nextGaussian ()D
- METHOD method_43385 nextPredictable (DD)D
- ARG 1 base
- ARG 3 variance
diff --git a/mappings/net/minecraft/util/math/random/BlockingSimpleRandom.mapping b/mappings/net/minecraft/util/math/random/AsyncRandom.mapping
similarity index 67%
rename from mappings/net/minecraft/util/math/random/BlockingSimpleRandom.mapping
rename to mappings/net/minecraft/util/math/random/AsyncRandom.mapping
index 2e814c475d..50ee0cacd6 100644
--- a/mappings/net/minecraft/util/math/random/BlockingSimpleRandom.mapping
+++ b/mappings/net/minecraft/util/math/random/AsyncRandom.mapping
@@ -1,4 +1,5 @@
-CLASS net/minecraft/class_7384 net/minecraft/util/math/random/BlockingSimpleRandom
+CLASS net/minecraft/class_7384 net/minecraft/util/math/random/AsyncRandom
+ COMMENT A random that can be shared by multiple threads safely.
FIELD field_38760 INT_BITS I
FIELD field_38761 SEED_MASK J
FIELD field_38762 MULTIPLIER J
diff --git a/mappings/net/minecraft/util/math/random/BaseSimpleRandom.mapping b/mappings/net/minecraft/util/math/random/BaseRandom.mapping
similarity index 92%
rename from mappings/net/minecraft/util/math/random/BaseSimpleRandom.mapping
rename to mappings/net/minecraft/util/math/random/BaseRandom.mapping
index 26276054ce..8c375a5e87 100644
--- a/mappings/net/minecraft/util/math/random/BaseSimpleRandom.mapping
+++ b/mappings/net/minecraft/util/math/random/BaseRandom.mapping
@@ -1,4 +1,4 @@
-CLASS net/minecraft/class_6566 net/minecraft/util/math/random/BaseSimpleRandom
+CLASS net/minecraft/class_6566 net/minecraft/util/math/random/BaseRandom
FIELD field_34582 FLOAT_MULTIPLIER F
FIELD field_34583 DOUBLE_MULTIPLIER D
METHOD method_43156 next (I)I
diff --git a/mappings/net/minecraft/util/math/random/AtomicSimpleRandom.mapping b/mappings/net/minecraft/util/math/random/CheckedRandom.mapping
similarity index 66%
rename from mappings/net/minecraft/util/math/random/AtomicSimpleRandom.mapping
rename to mappings/net/minecraft/util/math/random/CheckedRandom.mapping
index adbfee5762..16762df4d1 100644
--- a/mappings/net/minecraft/util/math/random/AtomicSimpleRandom.mapping
+++ b/mappings/net/minecraft/util/math/random/CheckedRandom.mapping
@@ -1,4 +1,5 @@
-CLASS net/minecraft/class_5820 net/minecraft/util/math/random/AtomicSimpleRandom
+CLASS net/minecraft/class_5820 net/minecraft/util/math/random/CheckedRandom
+ COMMENT A checked random that fails fast when it detects concurrent usage.
FIELD field_28766 seed Ljava/util/concurrent/atomic/AtomicLong;
FIELD field_31471 INT_BITS I
FIELD field_31472 SEED_MASK J
@@ -7,7 +8,7 @@ CLASS net/minecraft/class_5820 net/minecraft/util/math/random/AtomicSimpleRandom
FIELD field_35124 gaussianGenerator Lnet/minecraft/class_6672;
METHOD (J)V
ARG 1 seed
- CLASS class_6671 RandomDeriver
+ CLASS class_6671 Splitter
FIELD field_35125 seed J
METHOD (J)V
ARG 1 seed
diff --git a/mappings/net/minecraft/world/gen/random/GaussianGenerator.mapping b/mappings/net/minecraft/util/math/random/GaussianGenerator.mapping
similarity index 81%
rename from mappings/net/minecraft/world/gen/random/GaussianGenerator.mapping
rename to mappings/net/minecraft/util/math/random/GaussianGenerator.mapping
index ea0ea339f5..f19623f00e 100644
--- a/mappings/net/minecraft/world/gen/random/GaussianGenerator.mapping
+++ b/mappings/net/minecraft/util/math/random/GaussianGenerator.mapping
@@ -1,4 +1,4 @@
-CLASS net/minecraft/class_6672 net/minecraft/world/gen/random/GaussianGenerator
+CLASS net/minecraft/class_6672 net/minecraft/util/math/random/GaussianGenerator
FIELD field_35126 baseRandom Lnet/minecraft/class_5819;
FIELD field_35127 nextNextGaussian D
FIELD field_35128 hasNextGaussian Z
diff --git a/mappings/net/minecraft/util/math/random/SimpleRandom.mapping b/mappings/net/minecraft/util/math/random/LocalRandom.mapping
similarity index 63%
rename from mappings/net/minecraft/util/math/random/SimpleRandom.mapping
rename to mappings/net/minecraft/util/math/random/LocalRandom.mapping
index ccc65f2f03..e00334d74f 100644
--- a/mappings/net/minecraft/util/math/random/SimpleRandom.mapping
+++ b/mappings/net/minecraft/util/math/random/LocalRandom.mapping
@@ -1,4 +1,5 @@
-CLASS net/minecraft/class_6575 net/minecraft/util/math/random/SimpleRandom
+CLASS net/minecraft/class_6575 net/minecraft/util/math/random/LocalRandom
+ COMMENT A local random, not intended to be shared across threads.
FIELD field_34689 INT_BITS I
FIELD field_34690 SEED_MASK J
FIELD field_34691 MULTIPLIER J
diff --git a/mappings/net/minecraft/util/math/random/Random.mapping b/mappings/net/minecraft/util/math/random/Random.mapping
new file mode 100644
index 0000000000..4f8de94947
--- /dev/null
+++ b/mappings/net/minecraft/util/math/random/Random.mapping
@@ -0,0 +1,59 @@
+CLASS net/minecraft/class_5819 net/minecraft/util/math/random/Random
+ COMMENT A reimplementation of {@link java.util.Random}.
+ COMMENT
+ COMMENT There are four built-in implementations, three based on the classic Java algorithm
+ COMMENT and one using Xoroshiro128++ algorithm.
+ COMMENT
+ COMMENT
+ COMMENT - {@link LocalRandom}: Silently breaks when used concurrently. Based on
+ COMMENT {@link java.util.Random}.
+ COMMENT - {@link CheckedRandom}: Throws when used concurrently. Based on
+ COMMENT {@link java.util.Random}.
+ COMMENT - {@link AsyncRandom}: Blocks the thread when used concurrently. Based on
+ COMMENT {@link java.util.Random}.
+ COMMENT - {@link Xoroshiro128PlusPlusRandom}: Silently breaks when used concurrently.
+ COMMENT Implements the Xoroshiro128++ algorithm.
+ COMMENT
+ COMMENT
+ COMMENT @implNote Note that due to MC-239059, this is not an exact reimplementation of
+ COMMENT the Java random number generator algorithm.
+ COMMENT
+ COMMENT @see java.util.random
+ METHOD method_33650 skip (I)V
+ ARG 1 count
+ METHOD method_38420 split ()Lnet/minecraft/class_5819;
+ METHOD method_38421 nextSplitter ()Lnet/minecraft/class_6574;
+ METHOD method_39332 nextBetween (II)I
+ ARG 1 min
+ ARG 2 max
+ METHOD method_43047 create ()Lnet/minecraft/class_5819;
+ COMMENT {@return a random} The returned random actively detects concurrent usage
+ COMMENT and fails on detection.
+ METHOD method_43048 nextInt (I)I
+ ARG 1 bound
+ METHOD method_43049 create (J)Lnet/minecraft/class_5819;
+ COMMENT {@return a random with the given {@code seed}} The returned random
+ COMMENT actively detects concurrent usage and fails on detection.
+ ARG 0 seed
+ METHOD method_43050 createAsync ()Lnet/minecraft/class_5819;
+ COMMENT {@return a random, suitable for multithreaded scenarios}
+ COMMENT
+ COMMENT @deprecated This one is hard to ensure deterministic behavior compared
+ COMMENT to the non-thread-safe one.
+ METHOD method_43051 nextBetweenExclusive (II)I
+ ARG 1 min
+ ARG 2 max
+ METHOD method_43052 setSeed (J)V
+ ARG 1 seed
+ METHOD method_43053 createLocal ()Lnet/minecraft/class_5819;
+ COMMENT {@return a random split from the thread local random} Users must ensure
+ COMMENT this random is not used concurrently.
+ METHOD method_43054 nextInt ()I
+ METHOD method_43055 nextLong ()J
+ METHOD method_43056 nextBoolean ()Z
+ METHOD method_43057 nextFloat ()F
+ METHOD method_43058 nextDouble ()D
+ METHOD method_43059 nextGaussian ()D
+ METHOD method_43385 nextPredictable (DD)D
+ ARG 1 base
+ ARG 3 variance
diff --git a/mappings/net/minecraft/util/math/random/RandomDeriver.mapping b/mappings/net/minecraft/util/math/random/RandomDeriver.mapping
deleted file mode 100644
index 1293df2c73..0000000000
--- a/mappings/net/minecraft/util/math/random/RandomDeriver.mapping
+++ /dev/null
@@ -1,13 +0,0 @@
-CLASS net/minecraft/class_6574 net/minecraft/util/math/random/RandomDeriver
- METHOD method_38418 createRandom (III)Lnet/minecraft/class_5819;
- ARG 1 x
- ARG 2 y
- ARG 3 z
- METHOD method_38419 createRandom (Lnet/minecraft/class_2338;)Lnet/minecraft/class_5819;
- ARG 1 pos
- METHOD method_38995 createRandom (Ljava/lang/String;)Lnet/minecraft/class_5819;
- ARG 1 string
- METHOD method_39000 createRandom (Lnet/minecraft/class_2960;)Lnet/minecraft/class_5819;
- ARG 1 id
- METHOD method_39039 addDebugInfo (Ljava/lang/StringBuilder;)V
- ARG 1 info
diff --git a/mappings/net/minecraft/util/math/random/RandomSeed.mapping b/mappings/net/minecraft/util/math/random/RandomSeed.mapping
new file mode 100644
index 0000000000..c9a0295b24
--- /dev/null
+++ b/mappings/net/minecraft/util/math/random/RandomSeed.mapping
@@ -0,0 +1,17 @@
+CLASS net/minecraft/class_6673 net/minecraft/util/math/random/RandomSeed
+ FIELD field_35133 GOLDEN_RATIO_64 J
+ COMMENT @see jdk.internal.util.random.RandomSupport#GOLDEN_RATIO_64
+ FIELD field_35134 SILVER_RATIO_64 J
+ COMMENT @see jdk.internal.util.random.RandomSupport#SILVER_RATIO_64
+ FIELD field_35135 SEED_UNIQUIFIER Ljava/util/concurrent/atomic/AtomicLong;
+ METHOD method_39001 getSeed ()J
+ COMMENT {@return the seed calculated using {@link SEED_UNIQUIFIER} and the system time}
+ METHOD method_39002 mixStafford13 (J)J
+ COMMENT @see jdk.internal.util.random.RandomSupport#mixStafford13(long)
+ ARG 0 seed
+ METHOD method_39003 createXoroshiroSeed (J)Lnet/minecraft/class_6673$class_6674;
+ COMMENT @see jdk.random.Xoroshiro128PlusPlus#Xoroshiro128PlusPlus(long)
+ ARG 0 seed
+ METHOD method_39004 (J)J
+ ARG 0 seedUniquifier
+ CLASS class_6674 XoroshiroSeed
diff --git a/mappings/net/minecraft/util/math/random/RandomSplitter.mapping b/mappings/net/minecraft/util/math/random/RandomSplitter.mapping
new file mode 100644
index 0000000000..7108a072c5
--- /dev/null
+++ b/mappings/net/minecraft/util/math/random/RandomSplitter.mapping
@@ -0,0 +1,15 @@
+CLASS net/minecraft/class_6574 net/minecraft/util/math/random/RandomSplitter
+ COMMENT A random splitter represents necessary bits from a random that can be
+ COMMENT combined with other seeds to split a new random from the old one.
+ METHOD method_38418 split (III)Lnet/minecraft/class_5819;
+ ARG 1 x
+ ARG 2 y
+ ARG 3 z
+ METHOD method_38419 split (Lnet/minecraft/class_2338;)Lnet/minecraft/class_5819;
+ ARG 1 pos
+ METHOD method_38995 split (Ljava/lang/String;)Lnet/minecraft/class_5819;
+ ARG 1 seed
+ METHOD method_39000 split (Lnet/minecraft/class_2960;)Lnet/minecraft/class_5819;
+ ARG 1 seed
+ METHOD method_39039 addDebugInfo (Ljava/lang/StringBuilder;)V
+ ARG 1 info
diff --git a/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping b/mappings/net/minecraft/util/math/random/Xoroshiro128PlusPlusRandom.mapping
similarity index 91%
rename from mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping
rename to mappings/net/minecraft/util/math/random/Xoroshiro128PlusPlusRandom.mapping
index 1c00716691..af3902f907 100644
--- a/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping
+++ b/mappings/net/minecraft/util/math/random/Xoroshiro128PlusPlusRandom.mapping
@@ -1,4 +1,4 @@
-CLASS net/minecraft/class_6677 net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom
+CLASS net/minecraft/class_6677 net/minecraft/util/math/random/Xoroshiro128PlusPlusRandom
COMMENT Xoroshiro128++ based pseudo random number generator.
COMMENT
COMMENT @implNote The actual implementation can be found on {@link Xoroshiro128PlusPlusRandomImpl}.
@@ -18,7 +18,7 @@ CLASS net/minecraft/class_6677 net/minecraft/world/gen/random/Xoroshiro128PlusPl
COMMENT to ensure proper randomness. For example, to obtain a double, the upper 53
COMMENT bits, instead of the lower 53 bits.
ARG 1 bits
- CLASS class_6678 RandomDeriver
+ CLASS class_6678 Splitter
FIELD field_35152 MD5_HASHER Lcom/google/common/hash/HashFunction;
FIELD field_35153 seedLo J
FIELD field_35154 seedHi J
diff --git a/mappings/net/minecraft/world/World.mapping b/mappings/net/minecraft/world/World.mapping
index 5b881f3086..739c8daa86 100644
--- a/mappings/net/minecraft/world/World.mapping
+++ b/mappings/net/minecraft/world/World.mapping
@@ -17,7 +17,7 @@ CLASS net/minecraft/class_1937 net/minecraft/world/World
FIELD field_35455 tickOrder J
FIELD field_36402 dimensionEntry Lnet/minecraft/class_6880;
FIELD field_38226 neighborUpdater Lnet/minecraft/class_7165;
- FIELD field_38861 blockingRandom Lnet/minecraft/class_5819;
+ FIELD field_38861 asyncRandom Lnet/minecraft/class_5819;
FIELD field_9223 border Lnet/minecraft/class_2784;
FIELD field_9226 ambientDarkness I
FIELD field_9229 random Lnet/minecraft/class_5819;
diff --git a/mappings/net/minecraft/world/gen/random/RandomSeed.mapping b/mappings/net/minecraft/world/gen/random/RandomSeed.mapping
deleted file mode 100644
index 6f04f9dc81..0000000000
--- a/mappings/net/minecraft/world/gen/random/RandomSeed.mapping
+++ /dev/null
@@ -1,13 +0,0 @@
-CLASS net/minecraft/class_6673 net/minecraft/world/gen/random/RandomSeed
- FIELD field_35133 XOROSHIRO64_SEED_LO_FALLBACK J
- FIELD field_35134 XOROSHIRO64_SEED_HI_FALLBACK J
- FIELD field_35135 SEED_UNIQUIFIER Ljava/util/concurrent/atomic/AtomicLong;
- METHOD method_39001 getSeed ()J
- COMMENT {@return the seed calculated using {@link SEED_UNIQUIFIER} and the system time}
- METHOD method_39002 nextSplitMix64Int (J)J
- ARG 0 seed
- METHOD method_39003 createXoroshiroSeed (J)Lnet/minecraft/class_6673$class_6674;
- ARG 0 seed
- METHOD method_39004 (J)J
- ARG 0 seedUniquifier
- CLASS class_6674 XoroshiroSeed