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

package com.hypixel.hytale.builtin.portals.utils;

import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.server.core.asset.type.item.config.metadata.AdventureMetadata;
import java.util.concurrent.atomic.AtomicBoolean;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;

public final class CursedItems
{
    private CursedItems() {
    }
    
    public static boolean uncurseAll(final ItemContainer itemContainer) {
        final AtomicBoolean uncursedAny = new AtomicBoolean(false);
        itemContainer.replaceAll((slot, existing) -> {
            final AdventureMetadata adventureMeta = existing.getFromMetadataOrNull("Adventure", AdventureMetadata.CODEC);
            if (adventureMeta == null) {
                return existing;
            }
            else if (!adventureMeta.isCursed()) {
                return existing;
            }
            else {
                adventureMeta.setCursed(false);
                uncursedAny.setPlain(true);
                return existing.withMetadata("Adventure", AdventureMetadata.CODEC, adventureMeta);
            }
        });
        return uncursedAny.get();
    }
    
    public static void deleteAll(final Player player) {
        deleteAll(player.getInventory().getCombinedEverything());
    }
    
    public static void deleteAll(final ItemContainer itemContainer) {
        itemContainer.replaceAll((slot, existing) -> {
            final AdventureMetadata adventureMeta = existing.getFromMetadataOrNull(AdventureMetadata.KEYED_CODEC);
            final boolean cursed = adventureMeta != null && adventureMeta.isCursed();
            return cursed ? ItemStack.EMPTY : existing;
        });
    }
}
