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

package com.hypixel.hytale.server.worldgen.loader.cave;

import javax.annotation.Nullable;
import com.hypixel.hytale.server.worldgen.loader.prefab.WeightedPrefabMapJsonLoader;
import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
import com.hypixel.hytale.common.map.IWeightedMap;
import com.google.gson.JsonElement;
import java.nio.file.Path;
import javax.annotation.Nonnull;
import com.hypixel.hytale.procedurallib.json.SeedString;
import com.hypixel.hytale.server.worldgen.loader.context.ZoneFileContext;
import com.hypixel.hytale.server.worldgen.cave.prefab.CavePrefabContainer;
import com.hypixel.hytale.server.worldgen.SeedStringResource;
import com.hypixel.hytale.procedurallib.json.JsonLoader;

public class CavePrefabEntryJsonLoader extends JsonLoader<SeedStringResource, CavePrefabContainer.CavePrefabEntry>
{
    private final ZoneFileContext zoneContext;
    
    public CavePrefabEntryJsonLoader(@Nonnull final SeedString<SeedStringResource> seed, final Path dataFolder, final JsonElement json, final ZoneFileContext zoneContext) {
        super(seed.append(".CavePrefabEntry"), dataFolder, json);
        this.zoneContext = zoneContext;
    }
    
    @Nonnull
    @Override
    public CavePrefabContainer.CavePrefabEntry load() {
        return new CavePrefabContainer.CavePrefabEntry(this.loadPrefabs(), this.loadConfig());
    }
    
    @Nullable
    protected IWeightedMap<WorldGenPrefabSupplier> loadPrefabs() {
        return new WeightedPrefabMapJsonLoader((SeedString<SeedStringResource>)this.seed, this.dataFolder, this.json, "Prefab", "Weight").load();
    }
    
    @Nonnull
    protected CavePrefabContainer.CavePrefabEntry.CavePrefabConfig loadConfig() {
        return new CavePrefabConfigJsonLoader((SeedString<SeedStringResource>)this.seed, this.dataFolder, this.get("Config"), this.zoneContext).load();
    }
    
    public interface Constants
    {
        public static final String KEY_PREFAB = "Prefab";
        public static final String KEY_WEIGHT = "Weight";
        public static final String KEY_CONFIG = "Config";
    }
}
