59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package com.hypixel.hytale.procedurallib.json;
|
|
|
|
import com.google.gson.JsonElement;
|
|
import com.hypixel.hytale.procedurallib.property.GradientNoiseProperty;
|
|
import com.hypixel.hytale.procedurallib.property.NoiseProperty;
|
|
import java.nio.file.Path;
|
|
import javax.annotation.Nonnull;
|
|
|
|
public class GradientNoisePropertyJsonLoader<K extends SeedResource> extends JsonLoader<K, GradientNoiseProperty> {
|
|
protected final NoiseProperty noise;
|
|
|
|
public GradientNoisePropertyJsonLoader(SeedString<K> seed, Path dataFolder, JsonElement json, NoiseProperty noise) {
|
|
super(seed, dataFolder, json);
|
|
this.noise = noise;
|
|
}
|
|
|
|
@Nonnull
|
|
public GradientNoiseProperty load() {
|
|
return new GradientNoiseProperty(this.noise, this.loadMode(), this.loadDistance(), this.loadNormalization());
|
|
}
|
|
|
|
@Nonnull
|
|
protected GradientNoiseProperty.GradientMode loadMode() {
|
|
GradientNoiseProperty.GradientMode mode = GradientNoisePropertyJsonLoader.Constants.DEFAULT_MODE;
|
|
if (this.has("Mode")) {
|
|
mode = GradientNoiseProperty.GradientMode.valueOf(this.get("Mode").getAsString());
|
|
}
|
|
|
|
return mode;
|
|
}
|
|
|
|
protected double loadDistance() {
|
|
double distance = 5.0;
|
|
if (this.has("Distance")) {
|
|
distance = this.get("Distance").getAsDouble();
|
|
}
|
|
|
|
return distance;
|
|
}
|
|
|
|
protected double loadNormalization() {
|
|
double distance = 0.1;
|
|
if (this.has("Normalize")) {
|
|
distance = this.get("Normalize").getAsDouble();
|
|
}
|
|
|
|
return distance;
|
|
}
|
|
|
|
public interface Constants {
|
|
String KEY_MODE = "Mode";
|
|
String KEY_DISTANCE = "Distance";
|
|
String KEY_NORMALIZE = "Normalize";
|
|
GradientNoiseProperty.GradientMode DEFAULT_MODE = GradientNoiseProperty.GradientMode.MAGNITUDE;
|
|
double DEFAULT_DISTANCE = 5.0;
|
|
double DEFAULT_NORMALIZATION = 0.1;
|
|
}
|
|
}
|