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

package com.hypixel.hytale.builtin.adventure.objectives.config.task;

import com.hypixel.hytale.codec.validation.Validator;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.Codec;
import java.util.Arrays;
import javax.annotation.Nonnull;
import java.text.MessageFormat;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class TaskSet
{
    public static final BuilderCodec<TaskSet> CODEC;
    public static final String TASKSET_DESCRIPTION_KEY = "server.objectives.{0}.taskSet.{1}";
    protected String descriptionId;
    protected ObjectiveTaskAsset[] tasks;
    
    public TaskSet(final String descriptionId, final ObjectiveTaskAsset[] tasks) {
        this.descriptionId = descriptionId;
        this.tasks = tasks;
    }
    
    protected TaskSet() {
    }
    
    public String getDescriptionId() {
        return this.descriptionId;
    }
    
    @Nonnull
    public String getDescriptionKey(final String objectiveId, final int taskSetIndex) {
        if (this.descriptionId != null) {
            return this.descriptionId;
        }
        return MessageFormat.format("server.objectives.{0}.taskSet.{1}", objectiveId, taskSetIndex);
    }
    
    public ObjectiveTaskAsset[] getTasks() {
        return this.tasks;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "TaskSet{descriptionId='" + this.descriptionId + "', tasks=" + Arrays.toString(this.tasks);
    }
    
    static {
        CODEC = BuilderCodec.builder(TaskSet.class, TaskSet::new).append(new KeyedCodec<String>("DescriptionId", Codec.STRING), (taskSet, s) -> taskSet.descriptionId = s, taskSet -> taskSet.descriptionId).add().append(new KeyedCodec("Tasks", new ArrayCodec(ObjectiveTaskAsset.CODEC, ObjectiveTaskAsset[]::new)), (taskSet, objectiveTaskAssets) -> taskSet.tasks = objectiveTaskAssets, taskSet -> taskSet.tasks).addValidator(Validators.nonEmptyArray()).add().build();
    }
}
