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

package com.hypixel.hytale.component.metric;

import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.metrics.MetricResults;
import javax.annotation.Nullable;
import com.hypixel.hytale.metrics.metric.HistoricMetric;
import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.Codec;

public class SystemMetricData
{
    @Nonnull
    public static final Codec<SystemMetricData> CODEC;
    private String name;
    private int archetypeChunkCount;
    private int entityCount;
    @Nullable
    private HistoricMetric historicMetric;
    private MetricResults metrics;
    
    public SystemMetricData() {
    }
    
    public SystemMetricData(@Nonnull final String name, final int archetypeChunkCount, final int entityCount, @Nullable final HistoricMetric historicMetric, @Nonnull final MetricResults metrics) {
        this.name = name;
        this.archetypeChunkCount = archetypeChunkCount;
        this.entityCount = entityCount;
        this.historicMetric = historicMetric;
        this.metrics = metrics;
    }
    
    static {
        CODEC = BuilderCodec.builder(SystemMetricData.class, SystemMetricData::new).append(new KeyedCodec<String>("Name", Codec.STRING), (systemMetricData, o) -> systemMetricData.name = o, systemMetricData -> systemMetricData.name).add().append(new KeyedCodec("ArchetypeChunkCount", Codec.INTEGER), (systemMetricData, o) -> systemMetricData.archetypeChunkCount = o, systemMetricData -> systemMetricData.archetypeChunkCount).add().append(new KeyedCodec("EntityCount", Codec.INTEGER), (systemMetricData, o) -> systemMetricData.entityCount = o, systemMetricData -> systemMetricData.entityCount).add().append(new KeyedCodec("HistoricMetric", HistoricMetric.METRICS_CODEC), (systemMetricData, o) -> systemMetricData.historicMetric = o, systemMetricData -> systemMetricData.historicMetric).add().append(new KeyedCodec("Metrics", MetricResults.CODEC), (systemMetricData, o) -> systemMetricData.metrics = o, systemMetricData -> systemMetricData.metrics).add().build();
    }
}
