Class ChunkRandom

java.lang.Object
net.minecraft.util.math.random.CheckedRandom
net.minecraft.util.math.random.ChunkRandom
All Implemented Interfaces:
BaseRandom, Random

public class ChunkRandom extends CheckedRandom
Mappings:
Namespace Name
named net/minecraft/util/math/random/ChunkRandom
intermediary net/minecraft/class_2919
official eeo
  • Field Details

    • baseRandom

      private final Random baseRandom
      Mappings:
      Namespace Name Mixin selector
      named baseRandom Lnet/minecraft/util/math/random/ChunkRandom;baseRandom:Lnet/minecraft/util/math/random/Random;
      intermediary field_35141 Lnet/minecraft/class_2919;field_35141:Lnet/minecraft/class_5819;
      official d Leeo;d:Lbam;
    • sampleCount

      private int sampleCount
      Mappings:
      Namespace Name Mixin selector
      named sampleCount Lnet/minecraft/util/math/random/ChunkRandom;sampleCount:I
      intermediary field_28768 Lnet/minecraft/class_2919;field_28768:I
      official e Leeo;e:I
  • Constructor Details

    • ChunkRandom

      public ChunkRandom(Random baseRandom)
      Mappings:
      Namespace Name Mixin selector
      named <init> Lnet/minecraft/util/math/random/ChunkRandom;<init>(Lnet/minecraft/util/math/random/Random;)V
      intermediary <init> Lnet/minecraft/class_2919;<init>(Lnet/minecraft/class_5819;)V
      official <init> Leeo;<init>(Lbam;)V
  • Method Details

    • getSampleCount

      public int getSampleCount()
      Mappings:
      Namespace Name Mixin selector
      named getSampleCount Lnet/minecraft/util/math/random/ChunkRandom;getSampleCount()I
      intermediary method_35335 Lnet/minecraft/class_2919;method_35335()I
      official l Leeo;l()I
    • split

      public Random split()
      Specified by:
      split in interface Random
      Overrides:
      split in class CheckedRandom
      Mappings:
      Namespace Name Mixin selector
      named split Lnet/minecraft/util/math/random/Random;split()Lnet/minecraft/util/math/random/Random;
      intermediary method_38420 Lnet/minecraft/class_5819;method_38420()Lnet/minecraft/class_5819;
      official d Lbam;d()Lbam;
    • nextSplitter

      public RandomSplitter nextSplitter()
      Specified by:
      nextSplitter in interface Random
      Overrides:
      nextSplitter in class CheckedRandom
      Mappings:
      Namespace Name Mixin selector
      named nextSplitter Lnet/minecraft/util/math/random/Random;nextSplitter()Lnet/minecraft/util/math/random/RandomSplitter;
      intermediary method_38421 Lnet/minecraft/class_5819;method_38421()Lnet/minecraft/class_6574;
      official e Lbam;e()Leec;
    • next

      public int next(int bits)
      Specified by:
      next in interface BaseRandom
      Overrides:
      next in class CheckedRandom
      Mappings:
      Namespace Name Mixin selector
      named next Lnet/minecraft/util/math/random/BaseRandom;next(I)I
      intermediary method_43156 Lnet/minecraft/class_6566;method_43156(I)I
      official c Lede;c(I)I
    • setSeed

      public void setSeed(long seed)
      Specified by:
      setSeed in interface Random
      Overrides:
      setSeed in class CheckedRandom
      Mappings:
      Namespace Name Mixin selector
      named setSeed Lnet/minecraft/util/math/random/Random;setSeed(J)V
      intermediary method_43052 Lnet/minecraft/class_5819;method_43052(J)V
      official b Lbam;b(J)V
    • setPopulationSeed

      public long setPopulationSeed(long worldSeed, int blockX, int blockZ)
      Seeds the randomizer to create population features such as decorators and animals.

      This method takes in the world seed and the negative-most block coordinates of the chunk. The coordinate pair provided is equivalent to (chunkX * 16, chunkZ * 16). The three values are mixed together through some layers of hashing to produce the population seed.

      This function has been proved to be reversible through some exploitation of the underlying nextLong() weaknesses. It is also important to remember that since setSeed() truncates the 16 upper bits of world seed, only the 48 lowest bits affect the population seed output.

      Mappings:
      Namespace Name Mixin selector
      named setPopulationSeed Lnet/minecraft/util/math/random/ChunkRandom;setPopulationSeed(JII)J
      intermediary method_12661 Lnet/minecraft/class_2919;method_12661(JII)J
      official a Leeo;a(JII)J
    • setDecoratorSeed

      public void setDecoratorSeed(long populationSeed, int index, int step)
      Seeds the randomizer to generate a given feature. The salt, in the form of index + 10000 * step assures that each feature is seeded differently, making the decoration feel more random. Even though it does a good job at doing so, many entropy issues arise from the salt being so small and result in weird alignments between features that have an index close apart.
      Parameters:
      populationSeed - the population seed computed in setPopulationSeed(long, int, int)
      index - the index of the feature in the feature list
      step - the generation step's ordinal for this feature
      Mappings:
      Namespace Name Mixin selector
      named setDecoratorSeed Lnet/minecraft/util/math/random/ChunkRandom;setDecoratorSeed(JII)V
      intermediary method_12664 Lnet/minecraft/class_2919;method_12664(JII)V
      official b Leeo;b(JII)V
    • setCarverSeed

      public void setCarverSeed(long worldSeed, int chunkX, int chunkZ)
      Seeds the randomizer to generate larger features such as caves, ravines, mineshafts and strongholds. It is also used to initiate structure start behavior such as rotation.

      Similar to the population seed, only the 48 lowest bits of the world seed affect the output since it the upper 16 bits are truncated in the setSeed() call.

      Mappings:
      Namespace Name Mixin selector
      named setCarverSeed Lnet/minecraft/util/math/random/ChunkRandom;setCarverSeed(JII)V
      intermediary method_12663 Lnet/minecraft/class_2919;method_12663(JII)V
      official c Leeo;c(JII)V
    • setRegionSeed

      public void setRegionSeed(long worldSeed, int regionX, int regionZ, int salt)
      Seeds the randomizer to determine the start position of structure features such as temples, monuments and buried treasures within a region.

      The region coordinates pair corresponds to the coordinates of the region the seeded chunk lies in. For example, a swamp hut region is 32 by 32 chunks meaning that all chunks that lie within that region get seeded the same way.

      Similarly, the upper 16 bits of world seed also do not affect the region seed because they get truncated in the setSeed() call.

      Mappings:
      Namespace Name Mixin selector
      named setRegionSeed Lnet/minecraft/util/math/random/ChunkRandom;setRegionSeed(JIII)V
      intermediary method_12665 Lnet/minecraft/class_2919;method_12665(JIII)V
      official a Leeo;a(JIII)V
    • getSlimeRandom

      public static Random getSlimeRandom(int chunkX, int chunkZ, long worldSeed, long scrambler)
      Mappings:
      Namespace Name Mixin selector
      named getSlimeRandom Lnet/minecraft/util/math/random/ChunkRandom;getSlimeRandom(IIJJ)Lnet/minecraft/util/math/random/Random;
      intermediary method_12662 Lnet/minecraft/class_2919;method_12662(IIJJ)Lnet/minecraft/class_5819;
      official a Leeo;a(IIJJ)Lbam;