classpublicPriority 3
PointEvaluatorJsonLoader
com.hypixel.hytale.procedurallib.json.PointEvaluatorJsonLoader
extends AbstractCellJitterJsonLoader
8
Methods
8
Public Methods
2
Fields
3
Constructors
Constructors
public
PointEvaluatorJsonLoader(SeedString<T> seed, Path dataFolder, JsonElement json)public
PointEvaluatorJsonLoader(SeedString<T> seed, Path dataFolder, JsonElement json, PointDistanceFunction pointDistanceFunction)public
PointEvaluatorJsonLoader(SeedString<T> seed, Path dataFolder, JsonElement json, MeasurementMode measurementMode, PointDistanceFunction pointDistanceFunction)Methods
Public Methods (8)
public
PointEvaluator load()public
PointEvaluator loadBorderPointEvaluator()@Nonnull
public
PointEvaluator loadCentrePointEvaluator()public
IDoubleCondition loadDensity()@Nullable
public
IDoubleRange loadDistanceRange()@Nullable
public
PointDistanceFunction loadPointDistanceFunction()public
int loadSkipCount()public
SkipCellPointEvaluator.Mode loadSkipMode()Fields
Protected Fields (2)
protected
MeasurementMode measurementModeprotected
PointDistanceFunction pointDistanceFunctionInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.procedurallib.json;
import com.google.gson.JsonElement;
import com.hypixel.hytale.procedurallib.condition.DoubleThresholdCondition;
import com.hypixel.hytale.procedurallib.condition.IDoubleCondition;
import com.hypixel.hytale.procedurallib.condition.IDoubleThreshold;
import com.hypixel.hytale.procedurallib.logic.cell.DistanceCalculationMode;
import com.hypixel.hytale.procedurallib.logic.cell.MeasurementMode;
import com.hypixel.hytale.procedurallib.logic.cell.PointDistanceFunction;
import com.hypixel.hytale.procedurallib.logic.cell.evaluator.BorderPointEvaluator;
import com.hypixel.hytale.procedurallib.logic.cell.evaluator.JitterPointEvaluator;
import com.hypixel.hytale.procedurallib.logic.cell.evaluator.PointEvaluator;
import com.hypixel.hytale.procedurallib.logic.cell.evaluator.SkipCellPointEvaluator;
import com.hypixel.hytale.procedurallib.logic.cell.jitter.CellJitter;
import com.hypixel.hytale.procedurallib.logic.cell.jitter.DefaultCellJitter;
import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
import java.nio.file.Path;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PointEvaluatorJsonLoader<T extends SeedResource> extends AbstractCellJitterJsonLoader<T, PointEvaluator> {
@Nonnull
protected final MeasurementMode measurementMode;
protected final PointDistanceFunction pointDistanceFunction;
public PointEvaluatorJsonLoader(@Nonnull SeedString<T> seed, Path dataFolder, JsonElement json) {
this(seed, dataFolder, json, null);
}
public PointEvaluatorJsonLoader(@Nonnull SeedString<T> seed, Path dataFolder, JsonElement json, @Nullable PointDistanceFunction pointDistanceFunction) {
this(seed, dataFolder, json, MeasurementMode.CENTRE_DISTANCE, pointDistanceFunction);
}
public PointEvaluatorJsonLoader(
@Nonnull SeedString<T> seed,
Path dataFolder,
JsonElement json,
@Nonnull MeasurementMode measurementMode,
@Nullable PointDistanceFunction pointDistanceFunction
) {
super(seed.append(".PointEvaluator"), dataFolder, json);
this.measurementMode = measurementMode;
this.pointDistanceFunction = pointDistanceFunction;
}
public PointEvaluator load() {
return switch (this.measurementMode) {
case CENTRE_DISTANCE -> this.loadCentrePointEvaluator();
case BORDER_DISTANCE -> this.loadBorderPointEvaluator();
};
}
public PointEvaluator loadCentrePointEvaluator() {
return PointEvaluator.of(
this.loadPointDistanceFunction(), this.loadDensity(), this.loadDistanceRange(), this.loadSkipCount(), this.loadSkipMode(), this.loadJitter()
);
}
@Nonnull
public PointEvaluator loadBorderPointEvaluator() {
BorderPointEvaluator pointEvaluator = BorderPointEvaluator.INSTANCE;
CellJitter jitter = this.loadJitter();
return (PointEvaluator)(jitter == DefaultCellJitter.DEFAULT_ONE ? pointEvaluator : new JitterPointEvaluator(pointEvaluator, jitter));
}
public PointDistanceFunction loadPointDistanceFunction() {
if (this.pointDistanceFunction != null) {
return this.pointDistanceFunction;
} else {
DistanceCalculationMode distanceCalculationMode = CellNoiseJsonLoader.Constants.DEFAULT_DISTANCE_MODE;
if (this.has("DistanceMode")) {
distanceCalculationMode = DistanceCalculationMode.valueOf(this.get("DistanceMode").getAsString());
}
return distanceCalculationMode.getFunction();
}
}
@Nullable
public IDoubleRange loadDistanceRange() {
return !this.has("DistanceRange") ? null : new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("DistanceRange")).load();
}
@Nullable
public IDoubleCondition loadDensity() {
if (!this.has("Density")) {
return null;
} else {
IDoubleThreshold threshold = new DoubleThresholdJsonLoader<>(this.seed, this.dataFolder, this.get("Density")).load();
return new DoubleThresholdCondition(threshold);
}
}
public int loadSkipCount() {
return this.mustGetNumber("Skip", Integer.valueOf(0)).intValue();
}
public SkipCellPointEvaluator.Mode loadSkipMode() {
String name = this.mustGetString("SkipMode", SkipCellPointEvaluator.DEFAULT_MODE.name());
return SkipCellPointEvaluator.Mode.valueOf(name);
}
}