package org.allaymc.api.blockentity.component;

import org.allaymc.api.block.type.BlockType;
import org.allaymc.api.item.recipe.FurnaceRecipe;

/**
 * @author daoge_cmd
 */
public interface BlockEntityFurnaceBaseComponent extends BlockEntityBaseComponent {
    /**
     * Gets the burn time.
     *
     * @return the burn time
     */
    int getBurnTime();

    /**
     * Gets the cook time.
     *
     * @return the cook time
     */
    int getCookTime();

    /**
     * Gets the burn duration.
     *
     * @return the burn duration
     */
    int getBurnDuration();

    /**
     * Gets the stored XP.
     *
     * @return the stored XP
     */
    int getStoredXP();

    /**
     * Sets the stored XP.
     *
     * @param storedXP the stored XP to set
     */
    void setStoredXP(int storedXP);

    /**
     * Gets the unlit block type.
     *
     * @return the unlit block type
     */
    BlockType<?> getUnlitBlockType();

    /**
     * Gets the lit block type.
     *
     * @return the lit block type
     */
    BlockType<?> getLitBlockType();

    /**
     * Sets whether the furnace is lit.
     *
     * @param lit {@code true} if the furnace is lit, {@code false} otherwise
     */
    void setLit(boolean lit);

    /**
     * Gets the furnace type
     *
     * @return the furnace recipe tag
     */
    FurnaceRecipe.Type getFurnaceRecipeType();

    /**
     * Gets the normal speed.
     *
     * @return the normal speed
     */
    float getNormalSpeed();

    /**
     * Gets the ideal speed.
     *
     * @return the ideal speed
     */
    float getIdealSpeed();

    /**
     * Gets the current speed.
     *
     * @return the current speed
     */
    float getCurrentSpeed();
}
