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

package com.hypixel.hytale.builtin.hytalegenerator.assets.worldstructures.basic;

import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.assetstore.codec.AssetCodec;
import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.LateValidator;
import javax.annotation.Nullable;
import com.hypixel.hytale.builtin.hytalegenerator.assets.biomes.BiomeAsset;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.rangemaps.DoubleRange;
import com.hypixel.hytale.assetstore.AssetExtraInfo;
import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;

public class BiomeRangeAsset implements JsonAssetWithMap<String, DefaultAssetMap<String, BiomeRangeAsset>>
{
    public static final AssetBuilderCodec<String, BiomeRangeAsset> CODEC;
    private String id;
    private AssetExtraInfo.Data data;
    private double min;
    private double max;
    private String biomeAssetId;
    
    private BiomeRangeAsset() {
        this.min = -1.0;
        this.max = 1.0;
        this.biomeAssetId = "";
    }
    
    @Nonnull
    public DoubleRange getRange() {
        return DoubleRange.inclusive(this.min, this.max);
    }
    
    @Nullable
    public BiomeAsset getBiomeAsset() {
        return BiomeAsset.getAssetStore().getAssetMap().getAsset(this.biomeAssetId);
    }
    
    public String getBiomeAssetId() {
        return this.biomeAssetId;
    }
    
    @Override
    public String getId() {
        return this.id;
    }
    
    static {
        CODEC = ((AssetBuilderCodec.Builder)AssetBuilderCodec.builder(BiomeRangeAsset.class, BiomeRangeAsset::new, (Codec<String>)Codec.STRING, (asset, id) -> asset.id = id, config -> config.id, (config, data) -> config.data = data, config -> config.data).append(new KeyedCodec<String>("Biome", new ContainedAssetCodec<String, Object, Object>(BiomeAsset.class, BiomeAsset.CODEC), true), (t, k) -> t.biomeAssetId = k, t -> t.biomeAssetId).addValidatorLate(() -> BiomeAsset.VALIDATOR_CACHE.getValidator().late()).add().append(new KeyedCodec("Min", Codec.DOUBLE, true), (t, k) -> t.min = k, t -> t.min).add().append(new KeyedCodec("Max", Codec.DOUBLE, true), (t, k) -> t.max = k, t -> t.max).add()).build();
    }
}
