hytale-server/com/hypixel/hytale/server/worldgen/biome/CustomBiomeGenerator.java

62 lines
2.0 KiB
Java

package com.hypixel.hytale.server.worldgen.biome;
import com.hypixel.hytale.procedurallib.condition.IDoubleThreshold;
import com.hypixel.hytale.procedurallib.condition.IIntCondition;
import com.hypixel.hytale.procedurallib.property.NoiseProperty;
import com.hypixel.hytale.server.worldgen.zone.ZoneGeneratorResult;
import javax.annotation.Nonnull;
public class CustomBiomeGenerator {
protected final NoiseProperty noiseProperty;
protected final IDoubleThreshold threshold;
protected final IIntCondition biomeMask;
protected final int priority;
public CustomBiomeGenerator(NoiseProperty noiseProperty, IDoubleThreshold threshold, IIntCondition biomeMask, int priority) {
this.noiseProperty = noiseProperty;
this.threshold = threshold;
this.biomeMask = biomeMask;
this.priority = priority;
}
public boolean shouldGenerateAt(int seed, double x, double z, @Nonnull ZoneGeneratorResult zoneResult, @Nonnull Biome customBiome) {
double noise = this.noiseProperty.get(seed, x, z);
if (zoneResult.getBorderDistance() < customBiome.getFadeContainer().getMaskFadeSum()) {
double factor = customBiome.getFadeContainer().getMaskFactor(zoneResult);
return this.isThreshold(noise, factor);
} else {
return this.isThreshold(noise);
}
}
public boolean isThreshold(double d) {
return this.threshold.eval(d);
}
public boolean isThreshold(double d, double factor) {
return factor >= 1.0E-5 && this.threshold.eval(d, factor);
}
public boolean isValidParentBiome(int index) {
return this.biomeMask.eval(index);
}
public int getPriority() {
return this.priority;
}
@Nonnull
@Override
public String toString() {
return "CustomBiomeGenerator{noiseProperty="
+ this.noiseProperty
+ ", threshold="
+ this.threshold
+ ", biomeMask="
+ this.biomeMask
+ ", priority="
+ this.priority
+ "}";
}
}