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

package com.hypixel.hytale.server.core.asset.packet;

import javax.annotation.Nullable;
import java.util.Set;
import javax.annotation.Nonnull;
import com.hypixel.hytale.assetstore.AssetUpdateQuery;
import com.hypixel.hytale.protocol.Packet;
import java.util.Map;
import com.hypixel.hytale.assetstore.AssetMap;
import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;

public abstract class SimpleAssetPacketGenerator<K, T extends JsonAssetWithMap<K, M>, M extends AssetMap<K, T>> extends AssetPacketGenerator<K, T, M>
{
    @Override
    public abstract Packet generateInitPacket(final M p0, final Map<K, T> p1);
    
    @Override
    public Packet generateUpdatePacket(final M assetMap, final Map<K, T> loadedAssets, @Nonnull final AssetUpdateQuery query) {
        return this.generateUpdatePacket(assetMap, loadedAssets);
    }
    
    @Override
    public Packet generateRemovePacket(final M assetMap, final Set<K> removed, @Nonnull final AssetUpdateQuery query) {
        return this.generateRemovePacket(assetMap, removed);
    }
    
    protected abstract Packet generateUpdatePacket(final M p0, final Map<K, T> p1);
    
    @Nullable
    protected abstract Packet generateRemovePacket(final M p0, final Set<K> p1);
}
