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>
This commit is contained in:
apple502j 2021-10-11 06:13:17 +09:00 committed by GitHub
parent ffc4aa6468
commit 505c91341a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 88 additions and 7 deletions

View File

@ -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 <init> (J)V
ARG 1 seed
METHOD method_33651 (I)I
ARG 1 bits
CLASS class_6671 RandomDeriver
FIELD field_35125 seed J
METHOD <init> (J)V
ARG 1 seed

View File

@ -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

View File

@ -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 <init> (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 <init> (Ljava/lang/String;ILjava/util/function/LongFunction;)V
ARG 3 provider
METHOD method_39006 create (J)Lnet/minecraft/class_5819;
ARG 1 seed

View File

@ -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 <init> (Lnet/minecraft/class_5819;)V
ARG 1 baseRandom
METHOD method_38996 next ()D

View File

@ -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

View File

@ -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

View File

@ -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 <init> (J)V
ARG 1 seed

View File

@ -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 <init> (J)V
ARG 1 seed
METHOD <init> (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 <init> (JJ)V
ARG 1 seedLo
ARG 3 seedHi

View File

@ -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 <a href="https://prng.di.unimi.it/xoroshiro128plusplus.c">Official
COMMENT implementation released under public domain</a>
FIELD field_35146 seedLo J
FIELD field_35147 seedHi J
METHOD <init> (JJ)V
ARG 1 seedLo
ARG 3 seedHi
METHOD <init> (Lnet/minecraft/class_6673$class_6674;)V
ARG 1 seed
METHOD method_39007 next ()J