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

package com.hypixel.hytale.server.npc.asset.builder;

import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import java.util.Set;
import com.hypixel.hytale.server.npc.asset.builder.providerevaluators.ProviderEvaluator;
import com.hypixel.hytale.server.npc.asset.builder.validators.Validator;
import java.util.List;

public class BuilderDescriptor
{
    private final String name;
    private final String category;
    private final BuilderDescriptorState state;
    private final String shortDescription;
    private final String longDescription;
    private final List<BuilderAttributeDescriptor> attributes;
    private final List<Validator> validators;
    private final List<ProviderEvaluator> providerEvaluators;
    private final Set<String> tags;
    
    public BuilderDescriptor(final String name, final String category, final String shortDescription, final String longDescription, final Set<String> tags, final BuilderDescriptorState state) {
        this.attributes = new ObjectArrayList<BuilderAttributeDescriptor>();
        this.validators = new ObjectArrayList<Validator>();
        this.providerEvaluators = new ObjectArrayList<ProviderEvaluator>();
        this.name = name;
        this.category = category;
        this.shortDescription = shortDescription;
        this.longDescription = longDescription;
        this.state = state;
        this.tags = tags;
    }
    
    public BuilderAttributeDescriptor addAttribute(final BuilderAttributeDescriptor attributeDescriptor) {
        this.attributes.add(attributeDescriptor);
        return attributeDescriptor;
    }
    
    public BuilderAttributeDescriptor addAttribute(final String name, final String type, final BuilderDescriptorState state, final String shortDescription, final String longDescription) {
        return this.addAttribute(new BuilderAttributeDescriptor(name, type, state, shortDescription, longDescription));
    }
    
    public void addValidator(final Validator validator) {
        this.validators.add(validator);
    }
    
    public void addProviderEvaluator(final ProviderEvaluator providerEvaluator) {
        this.providerEvaluators.add(providerEvaluator);
    }
}
