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

package com.hypixel.hytale.builtin.adventure.objectivereputation.assets;

import com.hypixel.hytale.codec.validation.Validator;
import com.hypixel.hytale.builtin.adventure.reputation.assets.ReputationGroup;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.Codec;
import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.builtin.adventure.objectives.config.completion.ObjectiveCompletionAsset;

public class ReputationCompletionAsset extends ObjectiveCompletionAsset
{
    public static final BuilderCodec<ReputationCompletionAsset> CODEC;
    protected String reputationGroupId;
    protected int amount;
    
    public ReputationCompletionAsset(final String reputationGroupId, final int amount) {
        this.amount = 1;
        this.reputationGroupId = reputationGroupId;
        this.amount = amount;
    }
    
    protected ReputationCompletionAsset() {
        this.amount = 1;
    }
    
    public String getReputationGroupId() {
        return this.reputationGroupId;
    }
    
    public int getAmount() {
        return this.amount;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "ReputationCompletionAsset{reputationGroupId='" + this.reputationGroupId + "', amount=" + this.amount + "} " + super.toString();
    }
    
    static {
        CODEC = BuilderCodec.builder(ReputationCompletionAsset.class, ReputationCompletionAsset::new, ObjectiveCompletionAsset.BASE_CODEC).append(new KeyedCodec<String>("ReputationGroupId", Codec.STRING), (reputationCompletionAsset, s) -> reputationCompletionAsset.reputationGroupId = s, reputationCompletionAsset -> reputationCompletionAsset.reputationGroupId).addValidator(Validators.nonNull()).addValidator(ReputationGroup.VALIDATOR_CACHE.getValidator()).add().append(new KeyedCodec("Amount", Codec.INTEGER), (reputationCompletionAsset, integer) -> reputationCompletionAsset.amount = integer, reputationCompletionAsset -> reputationCompletionAsset.amount).addValidator(Validators.notEqual(0)).add().build();
    }
}
