package com.tiedup.remake.blocks.entity;

import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack;

/**
 * Interface for BlockEntities that store bondage items.
 *
 *
 * Defines the contract for storing and retrieving bondage items:
 * - Bind (ropes, chains, etc.)
 * - Gag
 * - Blindfold
 * - Earplugs
 * - Collar
 * - Clothes
 *
 * Based on original ITileEntityBondageItemHolder from 1.12.2
 */
public interface IBondageItemHolder {
    // BIND

    ItemStack getBind();
    void setBind(ItemStack bind);

    // GAG

    ItemStack getGag();
    void setGag(ItemStack gag);

    // BLINDFOLD

    ItemStack getBlindfold();
    void setBlindfold(ItemStack blindfold);

    // EARPLUGS

    ItemStack getEarplugs();
    void setEarplugs(ItemStack earplugs);

    // COLLAR

    ItemStack getCollar();
    void setCollar(ItemStack collar);

    // CLOTHES

    ItemStack getClothes();
    void setClothes(ItemStack clothes);

    // NBT SERIALIZATION

    /**
     * Read bondage items from NBT.
     * @param tag The compound tag to read from
     */
    void readBondageData(CompoundTag tag);

    /**
     * Write bondage items to NBT.
     * @param tag The compound tag to write to
     * @return The modified compound tag
     */
    CompoundTag writeBondageData(CompoundTag tag);

    // STATE

    /**
     * Check if this holder has any bondage items loaded.
     * Typically checks if bind is present.
     * @return true if armed/loaded
     */
    boolean isArmed();
}
