PointEvaluatorJsonLoader class
Пакет: com.hypixel.hytale.procedurallib.json
Файл: com/hypixel/hytale/procedurallib/json/PointEvaluatorJsonLoader.java
extends: AbstractCellJitterJsonLoader<T, PointEvaluator>
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
BorderPointEvaluator |
var1 |
|
DistanceCalculationMode |
var1 |
|
|
var1 |
|
IDoubleThreshold |
var1 |
|
String |
var1 |
|
CellJitter |
var2 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
DoubleThresholdConditionreturn new DoubleThresholdCondition(var1) |
|
|
if if(this.pointDistanceFunction != null) |
public |
PointEvaluator |
loadPointEvaluator load() |
public |
PointEvaluator |
loadCentrePointEvaluatorPointEvaluator loadCentrePointEvaluator() |
public |
PointDistanceFunction |
loadPointDistanceFunctionPointDistanceFunction loadPointDistanceFunction() |
public |
int |
loadSkipCountint loadSkipCount() |
public |
SkipCellPointEvaluator.Mode |
loadSkipModeSkipCellPointEvaluator.Mode loadSkipMode() |
|
return |
switchreturn switch(this.measurementMode) |
abstract |
|
this this(var1, var2, var3, null) |
abstract |
|
this this(var1, var2, var3, MeasurementMode.CENTRE_DISTANCE, var4) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.procedurallib.json;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.procedurallib.condition.DoubleThresholdCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.IDoubleCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.IDoubleThreshold;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.DistanceCalculationMode;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.MeasurementMode;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.PointDistanceFunction;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.BorderPointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.JitterPointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.PointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.SkipCellPointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.jitter.CellJitter;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.jitter.DefaultCellJitter;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PointEvaluatorJsonLoader<T class="kw">extends SeedResource> class="kw">extends AbstractCellJitterJsonLoader<T, PointEvaluator> {
@Nonnull
class="kw">protected class="kw">final MeasurementMode measurementMode;
class="kw">protected class="kw">final PointDistanceFunction pointDistanceFunction;
class="kw">public PointEvaluatorJsonLoader(@Nonnull SeedString<T> var1, Path var2, JsonElement var3) {
this(var1, var2, var3, null);
}
class="kw">public PointEvaluatorJsonLoader(@Nonnull SeedString<T> var1, Path var2, JsonElement var3, @Nullable PointDistanceFunction var4) {
this(var1, var2, var3, MeasurementMode.CENTRE_DISTANCE, var4);
}
class="kw">public PointEvaluatorJsonLoader(
@Nonnull SeedString<T> var1, Path var2, JsonElement var3, @Nonnull MeasurementMode var4, @Nullable PointDistanceFunction var5
) {
super(var1.append(".PointEvaluator"), var2, var3);
this.measurementMode = var4;
this.pointDistanceFunction = var5;
}
class="kw">public PointEvaluator load() {
class="kw">return class="kw">switch (this.measurementMode) {
case CENTRE_DISTANCE -> this.loadCentrePointEvaluator();
case BORDER_DISTANCE -> this.loadBorderPointEvaluator();
};
}
class="kw">public PointEvaluator loadCentrePointEvaluator() {
class="kw">return PointEvaluator.of(
this.loadPointDistanceFunction(), this.loadDensity(), this.loadDistanceRange(), this.loadSkipCount(), this.loadSkipMode(), this.loadJitter()
);
}
@Nonnull
class="kw">public PointEvaluator loadBorderPointEvaluator() {
BorderPointEvaluator var1 = BorderPointEvaluator.INSTANCE;
CellJitter var2 = this.loadJitter();
class="kw">return var2 == DefaultCellJitter.DEFAULT_ONE ? var1 : new JitterPointEvaluator(var1, var2);
}
class="kw">public PointDistanceFunction loadPointDistanceFunction() {
if (this.pointDistanceFunction != null) {
class="kw">return this.pointDistanceFunction;
}
DistanceCalculationMode var1 = CellNoiseJsonLoader.Constants.DEFAULT_DISTANCE_MODE;
if (this.has("DistanceMode")) {
var1 = DistanceCalculationMode.valueOf(this.get("DistanceMode").getAsString());
}
class="kw">return var1.getFunction();
}
@Nullable
class="kw">public IDoubleRange loadDistanceRange() {
class="kw">return !this.has("DistanceRange") ? null : new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("DistanceRange")).load();
}
@Nullable
class="kw">public IDoubleCondition loadDensity() {
if (!this.has("Density")) {
class="kw">return null;
}
IDoubleThreshold var1 = new DoubleThresholdJsonLoader<>(this.seed, this.dataFolder, this.get("Density")).load();
class="kw">return new DoubleThresholdCondition(var1);
}
class="kw">public int loadSkipCount() {
class="kw">return this.mustGetNumber("Skip", 0).intValue();
}
class="kw">public SkipCellPointEvaluator.Mode loadSkipMode() {
String var1 = this.mustGetString("SkipMode", SkipCellPointEvaluator.DEFAULT_MODE.name());
class="kw">return SkipCellPointEvaluator.Mode.valueOf(var1);
}
}