// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.procedurallib.json;

import com.google.gson.JsonElement;
import java.nio.file.Path;
import javax.annotation.Nonnull;
import com.hypixel.hytale.procedurallib.NoiseFunction;

public class NoiseFunctionJsonLoader<K extends SeedResource> extends JsonLoader<K, NoiseFunction>
{
    public NoiseFunctionJsonLoader(@Nonnull final SeedString<K> seed, final Path dataFolder, final JsonElement json) {
        super(seed.append(".NoiseFunction"), dataFolder, json);
    }
    
    @Override
    public NoiseFunction load() {
        if (!this.has("NoiseType")) {
            throw new IllegalStateException(String.format("Could not find noise type for noise map! Keyword: %s", "NoiseType"));
        }
        final NoiseTypeJson noiseTypeJson = NoiseTypeJson.valueOf(this.get("NoiseType").getAsString());
        return this.newLoader(noiseTypeJson).load();
    }
    
    @Nonnull
    protected JsonLoader<K, NoiseFunction> newLoader(@Nonnull final NoiseTypeJson noiseTypeJson) {
        return noiseTypeJson.newLoader((SeedString<K>)this.seed, this.dataFolder, this.json);
    }
    
    public interface Constants
    {
        public static final String KEY_NOISE_TYPE = "NoiseType";
        public static final String ERROR_NO_NOISE_TYPE = "Could not find noise type for noise map! Keyword: %s";
    }
}
