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

package com.hypixel.hytale.server.core.plugin.registry;

import com.hypixel.hytale.assetstore.AssetRegistry;
import com.hypixel.hytale.codec.Codec;
import javax.annotation.Nonnull;
import com.hypixel.hytale.function.consumer.BooleanConsumer;
import java.util.List;
import com.hypixel.hytale.codec.lookup.MapKeyMapCodec;

public class MapKeyMapRegistry<V> implements IRegistry
{
    protected final MapKeyMapCodec<V> mapCodec;
    protected final List<BooleanConsumer> unregister;
    
    public MapKeyMapRegistry(final List<BooleanConsumer> unregister, final MapKeyMapCodec<V> mapCodec) {
        this.unregister = unregister;
        this.mapCodec = mapCodec;
    }
    
    @Nonnull
    public <T extends V> MapKeyMapRegistry<V> register(@Nonnull final Class<T> tClass, @Nonnull final String id, @Nonnull final Codec<T> codec) {
        this.mapCodec.register(tClass, id, codec);
        this.unregister.add(shutdown -> {
            if (shutdown) {
                return;
            }
            else {
                AssetRegistry.ASSET_LOCK.writeLock().lock();
                try {
                    this.mapCodec.unregister((Class<Object>)tClass);
                }
                finally {
                    AssetRegistry.ASSET_LOCK.writeLock().unlock();
                }
                return;
            }
        });
        return this;
    }
    
    @Override
    public void shutdown() {
    }
}
