PointGrid class

Пакет: com.hypixel.hytale.builtin.worldgen.modifier.content.common

Файл: com/hypixel/hytale/builtin/worldgen/modifier/content/common/PointGrid.java

Поля (1)

МодификаторыТипИмя
final BuilderCodec<PointGrid> CODEC

Методы (4)

МодификаторыВозвратСигнатура
public IPointGenerator buildIPointGenerator build(SeedString<SeedStringResource> var1)
public FloatRange densityFloatRange density()
public double jitterdouble jitter()
public double scaledouble scale()

Исходный код

Показать/скрыть
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.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.json.SeedResourcePointGenerator;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.DistanceCalculationMode;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.GridCellDistanceFunction;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.PointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.jitter.ConstantCellJitter;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.ScaledPointGenerator;
class="kw">import com.hypixel.hytale.procedurallib.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;

class="kw">public class PointGrid {
   class="kw">public class="kw">static class="kw">final BuilderCodec<PointGrid> CODEC = BuilderCodec.builder(PointGrid.class, PointGrid::new)
      .documentation(
         "Defines a point grid that distributes placement positions across the world using a seeded cell-based layout with configurable scale, jitter, and density"
      )
      .<String>append(new KeyedCodec<>("Seed", Codec.STRING), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
      .documentation("Seed for the point grid")
      .add()
      .<Double>append(new KeyedCodec<>("Scale", Codec.DOUBLE), (var0, var1) -> var0.scale = var1, var0 -> var0.scale)
      .documentation("Scale of the point grid")
      .add()
      .<Double>append(new KeyedCodec<>("Jitter", Codec.DOUBLE), (var0, var1) -> var0.jitter = var1, var0 -> var0.jitter)
      .documentation("Jitter of the points in the grid")
      .add()
      .<FloatRange>append(new KeyedCodec<>("Density", Codecs.DENSITY_RANGE), (var0, var1) -> var0.density = var1, var0 -> var0.density)
      .documentation("Density threshold for the point grid")
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final PointGrid DEFAULT = new PointGrid();
   class="kw">protected String seed = "Default_Grid";
   class="kw">protected double scale = 16.0;
   class="kw">protected double jitter = 0.75;
   class="kw">protected FloatRange density = new FloatRange(0.0F, 1.0F);

   class="kw">public PointGrid() {
   }

   class="kw">public double scale() {
      class="kw">return this.scale;
   }

   class="kw">public double jitter() {
      class="kw">return this.jitter;
   }

   class="kw">public FloatRange density() {
      class="kw">return this.density;
   }

   class="kw">public IPointGenerator build(SeedString<SeedStringResource> var1) {
      class="kw">return new ScaledPointGenerator(
         new SeedResourcePointGenerator(
            var1.appendToOriginal(this.seed).hashCode(),
            GridCellDistanceFunction.DISTANCE_FUNCTION,
            PointEvaluator.of(
               DistanceCalculationMode.EUCLIDEAN.getFunction(),
               new DoubleThresholdCondition(new DoubleThreshold.Single(this.density.getInclusiveMin(), this.density.getInclusiveMax())),
               new DoubleRange.Constant(1.0),
               new ConstantCellJitter(this.jitter, this.jitter, this.jitter)
            ),
            var1.get()
         ),
         this.scale == 0.0 ? 0.0 : 1.0 / this.scale
      );
   }
}