WeightedMaterialProvider class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.materialproviders

Файл: com/hypixel/hytale/builtin/hytalegenerator/materialproviders/WeightedMaterialProvider.java

extends: MaterialProvider<V>

Поля (2)

МодификаторыТипИмя
int var2
MaterialProvider var3

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.materialproviders;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.WeightedMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.RngField;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.SeedBox;
class="kw">import com.hypixel.hytale.math.util.FastRandom;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WeightedMaterialProvider<V> class="kw">extends MaterialProvider<V> {
   @Nonnull
   class="kw">private class="kw">final WeightedMap<MaterialProvider<V>> weightedMap;
   @Nonnull
   class="kw">private class="kw">final RngField rngField;
   @Nonnull
   class="kw">private class="kw">final FastRandom random;
   class="kw">private class="kw">final double noneProbability;

   class="kw">public WeightedMaterialProvider(@Nonnull WeightedMap<MaterialProvider<V>> var1, @Nonnull SeedBox var2, double var3) {
      this.weightedMap = var1;
      this.rngField = new RngField(var2.createSupplier().get());
      this.noneProbability = var3;
      this.random = new FastRandom();
   }

   @Nullable
   @Override
   class="kw">public V getVoxelTypeAt(@Nonnull MaterialProvider.Context var1) {
      int var2 = this.rngField.get(var1.position.x, var1.position.y, var1.position.z);
      this.random.setSeed(var2);
      if (this.weightedMap.size() != 0 && !(this.random.nextDouble() < this.noneProbability)) {
         MaterialProvider var3 = this.weightedMap.pick(this.random);
         class="kw">return var3.getVoxelTypeAt(var1);
      } else {
         class="kw">return null;
      }
   }
}