package de.ellpeck.naturesaura.blocks.tiles;

import de.ellpeck.naturesaura.api.NaturesAuraAPI;
import de.ellpeck.naturesaura.api.aura.container.IAuraContainer;
import de.ellpeck.naturesaura.api.aura.container.NaturalAuraContainer;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.state.BlockState;

public class BlockEntityAncientLeaves extends BlockEntityImpl {

    private final NaturalAuraContainer container = new NaturalAuraContainer(NaturesAuraAPI.TYPE_OVERWORLD, 2000, 500) {
        @Override
        public int getAuraColor() {
            return 0xCE5489;
        }

        @Override
        public int drainAura(int amountToDrain, boolean simulate) {
            var amount = super.drainAura(amountToDrain, simulate);
            if (amount > 0 && !simulate) {
                BlockEntityAncientLeaves.this.sendToClients();
            }
            return amount;
        }
    };

    public BlockEntityAncientLeaves(BlockPos pos, BlockState state) {
        super(ModBlockEntities.ANCIENT_LEAVES, pos, state);
    }

    @Override
    public IAuraContainer getAuraContainer() {
        return this.container;
    }

    @Override
    public void writeNBT(CompoundTag compound, SaveType type) {
        super.writeNBT(compound, type);
        if (type != SaveType.BLOCK)
            this.container.writeNBT(compound);
    }

    @Override
    public void readNBT(CompoundTag compound, SaveType type) {
        super.readNBT(compound, type);
        if (type != SaveType.BLOCK)
            this.container.readNBT(compound);
    }
}
