classpublicPriority 3
WeightedAssignments
com.hypixel.hytale.builtin.hytalegenerator.propdistributions.WeightedAssignments
extends Assignments
3
Methods
3
Public Methods
4
Fields
1
Constructors
Constructors
public
WeightedAssignments(WeightedMap<Assignments> props, int seed, double noneProbability, int runtime)Methods
Public Methods (3)
public
List<Prop> getAllPossibleProps()@Nonnull@Override
public
int getRuntime()@Override
public
Prop propAt(Vector3d position, WorkerIndexer.Id id, double distanceTOBiomeEdge)@Override
Fields
Private/Package Fields (4)
private
double noneProbabilityprivate
int runtimeprivate
SeedGenerator seedGeneratorprivate
WeightedMap<Assignments> weightedDistributionsInheritance
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.propdistributions;
import com.hypixel.hytale.builtin.hytalegenerator.datastructures.WeightedMap;
import com.hypixel.hytale.builtin.hytalegenerator.framework.math.SeedGenerator;
import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import com.hypixel.hytale.math.util.FastRandom;
import com.hypixel.hytale.math.vector.Vector3d;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
public class WeightedAssignments extends Assignments {
@Nonnull
private final WeightedMap<Assignments> weightedDistributions;
@Nonnull
private final SeedGenerator seedGenerator;
private final int runtime;
private final double noneProbability;
public WeightedAssignments(@Nonnull WeightedMap<Assignments> props, int seed, double noneProbability, int runtime) {
this.weightedDistributions = new WeightedMap<>(props);
this.runtime = runtime;
this.seedGenerator = new SeedGenerator((long)seed);
this.noneProbability = noneProbability;
}
@Override
public Prop propAt(@Nonnull Vector3d position, @Nonnull WorkerIndexer.Id id, double distanceTOBiomeEdge) {
if (this.weightedDistributions.size() == 0) {
return Prop.noProp();
} else {
long x = (long)(position.x * 10000.0);
long y = (long)(position.y * 10000.0);
long z = (long)(position.z * 10000.0);
FastRandom rand = new FastRandom(this.seedGenerator.seedAt(x, y, z));
return rand.nextDouble() < this.noneProbability ? Prop.noProp() : this.weightedDistributions.pick(rand).propAt(position, id, distanceTOBiomeEdge);
}
}
@Override
public int getRuntime() {
return this.runtime;
}
@Nonnull
@Override
public List<Prop> getAllPossibleProps() {
ArrayList<Prop> list = new ArrayList<>();
for (Assignments d : this.weightedDistributions.allElements()) {
list.addAll(d.getAllPossibleProps());
}
return list;
}
}