NoiseMask class
Пакет: com.hypixel.hytale.builtin.worldgen.modifier.content.common
Файл: com/hypixel/hytale/builtin/worldgen/modifier/content/common/NoiseMask.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<NoiseMask> |
CODEC |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
ICoordinateCondition |
buildICoordinateCondition build(SeedString<SeedStringResource> var1) |
|
public NoiseProperty |
buildNoisepublic NoiseProperty buildNoise(SeedString<SeedStringResource> var1) |
public |
NoiseProperty |
buildNoiseNoiseProperty buildNoise(SeedString<SeedStringResource> var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.worldgen.modifier.content.common;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.Codecs;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.math.range.FloatRange;
class="kw">import com.hypixel.hytale.procedurallib.condition.DoubleThreshold;
class="kw">import com.hypixel.hytale.procedurallib.condition.DoubleThresholdCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.ICoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.NoiseMaskCondition;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.logic.SimplexNoise;
class="kw">import com.hypixel.hytale.procedurallib.property.FractalNoiseProperty;
class="kw">import com.hypixel.hytale.procedurallib.property.NoiseProperty;
class="kw">import com.hypixel.hytale.procedurallib.property.ScaleNoiseProperty;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.util.ConstantNoiseProperty;
class="kw">public class NoiseMask {
class="kw">public class="kw">static class="kw">final BuilderCodec<NoiseMask> CODEC = BuilderCodec.builder(NoiseMask.class, NoiseMask::new)
.documentation("Defines a noise mask that uses fractal simplex noise to control placement density within a configurable threshold range")
.<String>append(new KeyedCodec<>("Seed", Codec.STRING), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
.documentation("Seed for the mask noise")
.add()
.<Double>append(new KeyedCodec<>("Scale", Codec.DOUBLE), (var0, var1) -> var0.scale = var1, var0 -> var0.scale)
.addValidator(Validators.greaterThan(0.0))
.documentation("The scale of the mask noise")
.add()
.<Integer>append(new KeyedCodec<>("Octaves", Codec.INTEGER), (var0, var1) -> var0.octaves = var1, var0 -> var0.octaves)
.addValidator(Validators.range(0, 5))
.documentation("The number of octaves of the noise to use")
.add()
.<Double>append(new KeyedCodec<>("Lacunarity", Codec.DOUBLE), (var0, var1) -> var0.lacunarity = var1, var0 -> var0.lacunarity)
.addValidator(Validators.range(1.0, 10.0))
.documentation("The cumulative frequency multiplier for each noise octave")
.add()
.<Double>append(new KeyedCodec<>("Persistence", Codec.DOUBLE), (var0, var1) -> var0.persistence = var1, var0 -> var0.persistence)
.addValidator(Validators.range(0.0, 1.0))
.documentation("The cumulative gain multiplier for each noise octave")
.add()
.<FloatRange>append(new KeyedCodec<>("Density", Codecs.DENSITY_RANGE), (var0, var1) -> var0.density = var1, var0 -> var0.density)
.documentation("Threshold range for the mask. Noise values outside the range result in the prefab position being occluded")
.add()
.build();
class="kw">public class="kw">static class="kw">final NoiseMask DEFAULT = new NoiseMask();
class="kw">public class="kw">static class="kw">final NoiseMask ZERO = new NoiseMask() {
@Override
class="kw">public NoiseProperty buildNoise(SeedString<SeedStringResource> var1) {
class="kw">return ConstantNoiseProperty.DEFAULT_ZERO;
}
};
class="kw">protected String seed = "Default_Mask";
class="kw">protected double scale = 128.0;
class="kw">protected int octaves = 2;
class="kw">protected double lacunarity = 4.0;
class="kw">protected double persistence = 0.6;
class="kw">protected FloatRange density = new FloatRange(0.0F, 1.0F);
class="kw">public NoiseMask() {
}
class="kw">public NoiseProperty buildNoise(SeedString<SeedStringResource> var1) {
class="kw">return new ScaleNoiseProperty(
new FractalNoiseProperty(
var1.append(this.seed).hashCode(),
SimplexNoise.INSTANCE,
FractalNoiseProperty.FractalMode.FBM.getFunction(),
this.octaves,
this.lacunarity,
this.persistence
),
this.scale == 0.0 ? 0.0 : 1.0 / this.scale
);
}
class="kw">public ICoordinateCondition build(SeedString<SeedStringResource> var1) {
class="kw">return new NoiseMaskCondition(
this.buildNoise(var1), new DoubleThresholdCondition(new DoubleThreshold.Single(this.density.getInclusiveMin(), this.density.getInclusiveMax()))
);
}
}