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