package com.hypixel.hytale.procedurallib.json; import com.google.gson.JsonElement; import com.hypixel.hytale.procedurallib.logic.cell.jitter.CellJitter; import java.nio.file.Path; import javax.annotation.Nonnull; public abstract class AbstractCellJitterJsonLoader extends JsonLoader { public AbstractCellJitterJsonLoader(SeedString seed, Path dataFolder, JsonElement json) { super(seed, dataFolder, json); } @Nonnull protected CellJitter loadJitter() { double defaultJitter = this.loadDefaultJitter(); double x = this.loadJitterX(defaultJitter); double y = this.loadJitterY(defaultJitter); double z = this.loadJitterZ(defaultJitter); return CellJitter.of(x, y, z); } protected double loadDefaultJitter() { return loadJitter(this, "Jitter", 1.0); } protected double loadJitterX(double defaultJitter) { return loadJitter(this, "JitterX", defaultJitter); } protected double loadJitterY(double defaultJitter) { return loadJitter(this, "JitterY", defaultJitter); } protected double loadJitterZ(double defaultJitter) { return loadJitter(this, "JitterZ", defaultJitter); } protected static double loadJitter(@Nonnull JsonLoader loader, String key, double defaultJitter) { return !loader.has(key) ? defaultJitter : loader.get(key).getAsDouble(); } }