From 505c91341a6613bab04fd0777576bcc11171fee3 Mon Sep 17 00:00:00 2001 From: apple502j <33279053+apple502j@users.noreply.github.com> Date: Mon, 11 Oct 2021 06:13:17 +0900 Subject: [PATCH] 21w40a random stuff (#2735) * 21w40a random stuff * Apply suggestions from code review Co-authored-by: enbrain <69905075+enbrain@users.noreply.github.com> * Rename GaussianCalculator Co-authored-by: enbrain <69905075+enbrain@users.noreply.github.com> --- .../gen/random/AtomicSimpleRandom.mapping | 5 ++++ .../gen/random/BlockPosRandomDeriver.mapping | 7 ----- .../world/gen/random/ChunkRandom.mapping | 9 +++++++ .../gen/random/GaussianCalculator.mapping | 7 +++++ .../world/gen/random/RandomDeriver.mapping | 11 ++++++++ .../world/gen/random/RandomSeed.mapping | 13 +++++++++ .../world/gen/random/SimpleRandom.mapping | 1 + .../random/Xoroshiro128PlusPlusRandom.mapping | 27 +++++++++++++++++++ .../Xoroshiro128PlusPlusRandomImpl.mapping | 15 +++++++++++ 9 files changed, 88 insertions(+), 7 deletions(-) delete mode 100644 mappings/net/minecraft/world/gen/random/BlockPosRandomDeriver.mapping create mode 100644 mappings/net/minecraft/world/gen/random/GaussianCalculator.mapping create mode 100644 mappings/net/minecraft/world/gen/random/RandomDeriver.mapping create mode 100644 mappings/net/minecraft/world/gen/random/RandomSeed.mapping create mode 100644 mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping create mode 100644 mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandomImpl.mapping diff --git a/mappings/net/minecraft/world/gen/random/AtomicSimpleRandom.mapping b/mappings/net/minecraft/world/gen/random/AtomicSimpleRandom.mapping index 2a15c260a3..94c2a58cc9 100644 --- a/mappings/net/minecraft/world/gen/random/AtomicSimpleRandom.mapping +++ b/mappings/net/minecraft/world/gen/random/AtomicSimpleRandom.mapping @@ -4,7 +4,12 @@ CLASS net/minecraft/class_5820 net/minecraft/world/gen/random/AtomicSimpleRandom FIELD field_31472 SEED_MASK J FIELD field_31473 MULTIPLIER J FIELD field_31474 INCREMENT J + FIELD field_35124 gaussianGenerator Lnet/minecraft/class_6672; METHOD (J)V ARG 1 seed METHOD method_33651 (I)I ARG 1 bits + CLASS class_6671 RandomDeriver + FIELD field_35125 seed J + METHOD (J)V + ARG 1 seed diff --git a/mappings/net/minecraft/world/gen/random/BlockPosRandomDeriver.mapping b/mappings/net/minecraft/world/gen/random/BlockPosRandomDeriver.mapping deleted file mode 100644 index 9bbc552240..0000000000 --- a/mappings/net/minecraft/world/gen/random/BlockPosRandomDeriver.mapping +++ /dev/null @@ -1,7 +0,0 @@ -CLASS net/minecraft/class_6574 net/minecraft/world/gen/random/BlockPosRandomDeriver - 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 diff --git a/mappings/net/minecraft/world/gen/random/ChunkRandom.mapping b/mappings/net/minecraft/world/gen/random/ChunkRandom.mapping index f618014fb0..efa8d78841 100644 --- a/mappings/net/minecraft/world/gen/random/ChunkRandom.mapping +++ b/mappings/net/minecraft/world/gen/random/ChunkRandom.mapping @@ -1,5 +1,8 @@ CLASS net/minecraft/class_2919 net/minecraft/world/gen/random/ChunkRandom FIELD field_28768 sampleCount I + FIELD field_35141 baseRandom Lnet/minecraft/class_5819; + METHOD (Lnet/minecraft/class_5819;)V + ARG 1 baseRandom METHOD method_12659 setTerrainSeed (II)V COMMENT Seeds the randomizer to generate the surface terrain blocks (such as grass, sand, etc.) COMMENT and the bedrock patterns. @@ -67,3 +70,9 @@ CLASS net/minecraft/class_2919 net/minecraft/world/gen/random/ChunkRandom METHOD method_35335 getSampleCount ()I METHOD next (I)I ARG 1 count + CLASS class_6675 RandomProvider + FIELD field_35144 provider Ljava/util/function/LongFunction; + METHOD (Ljava/lang/String;ILjava/util/function/LongFunction;)V + ARG 3 provider + METHOD method_39006 create (J)Lnet/minecraft/class_5819; + ARG 1 seed diff --git a/mappings/net/minecraft/world/gen/random/GaussianCalculator.mapping b/mappings/net/minecraft/world/gen/random/GaussianCalculator.mapping new file mode 100644 index 0000000000..edb52915ec --- /dev/null +++ b/mappings/net/minecraft/world/gen/random/GaussianCalculator.mapping @@ -0,0 +1,7 @@ +CLASS net/minecraft/class_6672 net/minecraft/world/gen/random/GaussianGenerator + FIELD field_35126 baseRandom Lnet/minecraft/class_5819; + FIELD field_35127 nextNextGaussian D + FIELD field_35128 hasNextGaussian Z + METHOD (Lnet/minecraft/class_5819;)V + ARG 1 baseRandom + METHOD method_38996 next ()D diff --git a/mappings/net/minecraft/world/gen/random/RandomDeriver.mapping b/mappings/net/minecraft/world/gen/random/RandomDeriver.mapping new file mode 100644 index 0000000000..40fe2ba6ef --- /dev/null +++ b/mappings/net/minecraft/world/gen/random/RandomDeriver.mapping @@ -0,0 +1,11 @@ +CLASS net/minecraft/class_6574 net/minecraft/world/gen/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 diff --git a/mappings/net/minecraft/world/gen/random/RandomSeed.mapping b/mappings/net/minecraft/world/gen/random/RandomSeed.mapping new file mode 100644 index 0000000000..6f04f9dc81 --- /dev/null +++ b/mappings/net/minecraft/world/gen/random/RandomSeed.mapping @@ -0,0 +1,13 @@ +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 diff --git a/mappings/net/minecraft/world/gen/random/SimpleRandom.mapping b/mappings/net/minecraft/world/gen/random/SimpleRandom.mapping index 87d9d9c560..ae2ade4a20 100644 --- a/mappings/net/minecraft/world/gen/random/SimpleRandom.mapping +++ b/mappings/net/minecraft/world/gen/random/SimpleRandom.mapping @@ -4,5 +4,6 @@ CLASS net/minecraft/class_6575 net/minecraft/world/gen/random/SimpleRandom FIELD field_34691 MULTIPLIER J FIELD field_34692 INCREMENT J FIELD field_34693 seed J + FIELD field_35136 gaussianGenerator Lnet/minecraft/class_6672; METHOD (J)V ARG 1 seed diff --git a/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping b/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping new file mode 100644 index 0000000000..1c00716691 --- /dev/null +++ b/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom.mapping @@ -0,0 +1,27 @@ +CLASS net/minecraft/class_6677 net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandom + COMMENT Xoroshiro128++ based pseudo random number generator. + COMMENT + COMMENT @implNote The actual implementation can be found on {@link Xoroshiro128PlusPlusRandomImpl}. + FIELD field_35148 FLOAT_MULTIPLIER F + FIELD field_35149 DOUBLE_MULTIPLIER D + FIELD field_35150 implementation Lnet/minecraft/class_6676; + FIELD field_35151 gaussianGenerator Lnet/minecraft/class_6672; + METHOD (J)V + ARG 1 seed + METHOD (JJ)V + ARG 1 seedLo + ARG 3 seedHi + METHOD method_39008 next (I)J + COMMENT {@return {@code bits} upper bits of random value} + COMMENT + COMMENT @implNote In Xoroshiro128++, the lower bits have to be discarded in order + 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 + FIELD field_35152 MD5_HASHER Lcom/google/common/hash/HashFunction; + FIELD field_35153 seedLo J + FIELD field_35154 seedHi J + METHOD (JJ)V + ARG 1 seedLo + ARG 3 seedHi diff --git a/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandomImpl.mapping b/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandomImpl.mapping new file mode 100644 index 0000000000..a3d26f9c18 --- /dev/null +++ b/mappings/net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandomImpl.mapping @@ -0,0 +1,15 @@ +CLASS net/minecraft/class_6676 net/minecraft/world/gen/random/Xoroshiro128PlusPlusRandomImpl + COMMENT Implementation of Xoroshiro128++ pseudo-random number generator. + COMMENT + COMMENT @apiNote For regular usage, {@link Xoroshiro128PlusPlusRandom} should be used instead. + COMMENT + COMMENT @see Official + COMMENT implementation released under public domain + FIELD field_35146 seedLo J + FIELD field_35147 seedHi J + METHOD (JJ)V + ARG 1 seedLo + ARG 3 seedHi + METHOD (Lnet/minecraft/class_6673$class_6674;)V + ARG 1 seed + METHOD method_39007 next ()J