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;
}
}
}