classpublicPriority 3
WeightedMaterialProvider
com.hypixel.hytale.builtin.hytalegenerator.materialproviders.WeightedMaterialProvider
extends MaterialProvider
1
Methods
1
Public Methods
3
Fields
1
Constructors
Constructors
public
WeightedMaterialProvider(WeightedMap<MaterialProvider<V>> weightedMap, SeedBox seedBox, double noneProbability)Methods
Public Methods (1)
public
V getVoxelTypeAt(MaterialProvider.Context context)@Nullable@Override
Fields
Private/Package Fields (3)
private
double noneProbabilityprivate
SeedGenerator seedGeneratorprivate
WeightedMap<MaterialProvider<V>> weightedMapInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.builtin.hytalegenerator.materialproviders;
import com.hypixel.hytale.builtin.hytalegenerator.datastructures.WeightedMap;
import com.hypixel.hytale.builtin.hytalegenerator.framework.math.SeedGenerator;
import com.hypixel.hytale.builtin.hytalegenerator.seed.SeedBox;
import com.hypixel.hytale.math.util.FastRandom;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class WeightedMaterialProvider<V> extends MaterialProvider<V> {
@Nonnull
private final WeightedMap<MaterialProvider<V>> weightedMap;
@Nonnull
private final SeedGenerator seedGenerator;
private final double noneProbability;
public WeightedMaterialProvider(@Nonnull WeightedMap<MaterialProvider<V>> weightedMap, @Nonnull SeedBox seedBox, double noneProbability) {
this.weightedMap = weightedMap;
this.seedGenerator = new SeedGenerator((long)seedBox.createSupplier().get().intValue());
this.noneProbability = noneProbability;
}
@Nullable
@Override
public V getVoxelTypeAt(@Nonnull MaterialProvider.Context context) {
long seed = this.seedGenerator.seedAt((long)context.position.x, (long)context.position.y, (long)context.position.z);
FastRandom random = new FastRandom(seed);
if (this.weightedMap.size() != 0 && !(random.nextDouble() < this.noneProbability)) {
MaterialProvider<V> pick = this.weightedMap.pick(random);
return pick.getVoxelTypeAt(context);
} else {
return null;
}
}
}