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_31472 SEED_MASK J
FIELD field_31473 MULTIPLIER J FIELD field_31473 MULTIPLIER J
FIELD field_31474 INCREMENT J FIELD field_31474 INCREMENT J
FIELD field_35124 gaussianGenerator Lnet/minecraft/class_6672;
METHOD <init> (J)V METHOD <init> (J)V
ARG 1 seed ARG 1 seed
METHOD method_33651 (I)I METHOD method_33651 (I)I
ARG 1 bits 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 CLASS net/minecraft/class_2919 net/minecraft/world/gen/random/ChunkRandom
FIELD field_28768 sampleCount I 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 METHOD method_12659 setTerrainSeed (II)V
COMMENT Seeds the randomizer to generate the surface terrain blocks (such as grass, sand, etc.) COMMENT Seeds the randomizer to generate the surface terrain blocks (such as grass, sand, etc.)
COMMENT and the bedrock patterns. 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 method_35335 getSampleCount ()I
METHOD next (I)I METHOD next (I)I
ARG 1 count 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_34691 MULTIPLIER J
FIELD field_34692 INCREMENT J FIELD field_34692 INCREMENT J
FIELD field_34693 seed J FIELD field_34693 seed J
FIELD field_35136 gaussianGenerator Lnet/minecraft/class_6672;
METHOD <init> (J)V METHOD <init> (J)V
ARG 1 seed 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