package com.hypixel.hytale.server.worldgen.loader.climate;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.hypixel.hytale.procedurallib.json.CoordinateRandomizerJsonLoader;
import com.hypixel.hytale.procedurallib.json.JsonLoader;
import com.hypixel.hytale.procedurallib.json.SeedResource;
import com.hypixel.hytale.procedurallib.json.SeedString;
import com.hypixel.hytale.procedurallib.random.CoordinateRandomizer;
import com.hypixel.hytale.procedurallib.random.ICoordinateRandomizer;
import com.hypixel.hytale.server.worldgen.climate.ClimateGraph;
import com.hypixel.hytale.server.worldgen.climate.ClimateMaskProvider;
import com.hypixel.hytale.server.worldgen.climate.ClimateNoise;
import com.hypixel.hytale.server.worldgen.climate.UniqueClimateGenerator;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Path;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ClimateMaskJsonLoader<K extends SeedResource> extends JsonLoader<K, ClimateMaskProvider> {
public ClimateMaskJsonLoader(SeedString<K> seed, Path dataFolder, Path maskFile) {
super(seed, dataFolder, loadMaskFileJson(maskFile));
}
@Nullable
public ClimateMaskProvider load() {
return new ClimateMaskProvider(this.loadRandomizer(), this.loadClimateNoise(), this.loadClimateGraph(), this.loadUniqueClimateGenerator());
}
@Nonnull
protected ICoordinateRandomizer loadRandomizer() {
return this.has("Randomizer") ? (new CoordinateRandomizerJsonLoader(this.seed, this.dataFolder, this.get("Randomizer"))).load() : CoordinateRandomizer.EMPTY_RANDOMIZER;
}
@Nonnull
protected ClimateNoise loadClimateNoise() {
return (new ClimateNoiseJsonLoader(this.seed, this.dataFolder, this.mustGetObject("Noise", (JsonObject)null))).load();
}
@Nonnull
protected ClimateGraph loadClimateGraph() {
return (new ClimateGraphJsonLoader(this.seed, this.dataFolder, this.mustGetObject("Climate", (JsonObject)null))).load();
}
@Nonnull
protected UniqueClimateGenerator loadUniqueClimateGenerator() {
return (new UniqueClimateGeneratorJsonLoader(this.seed, this.dataFolder, this.mustGetArray("UniqueZones", ClimateMaskJsonLoader.Constants.DEFAULT_UNIQUE))).load();
}
protected static JsonElement loadMaskFileJson(Path file) {
try {
BufferedReader reader = Files.newBufferedReader(file);
JsonElement var2;
try {
var2 = JsonParser.parseReader((Reader)reader);
} catch (Throwable var5) {
if (reader != null) {
try {
reader.close();
} catch (Throwable var4) {
var5.addSuppressed(var4);
}
}
throw var5;
}
if (reader != null) {
reader.close();
}
return var2;
} catch (IOException e) {
throw new Error("Failed to load Mask.json", e);
}
}
public interface Constants {
String KEY_RANDOMIZER = "Randomizer";
String KEY_UNIQUE_ZONES = "UniqueZones";
JsonArray DEFAULT_UNIQUE = new JsonArray();
}
}