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