package cofh.api.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
* Implement this interface on Item classes which may be "Empowered" - what that means is completely up to you. This just provides a uniform way of dealing with
* them.
*
* @author King Lemming
*
*/
public interface IEmpowerableItem {
/**
* Check whether or not a given item is currently in an empowered state.
*/
boolean isEmpowered(ItemStack stack);
/**
* Attempt to set the empowered state of the item.
*
* @param stack
* ItemStack to be empowered/disempowered.
* @param state
* Desired state.
* @return TRUE if the operation was successful, FALSE if it was not.
*/
boolean setEmpoweredState(ItemStack stack, boolean state);
/**
* Callback method for reacting to a state change. Useful in KeyBinding handlers.
*
* @param player
* Player holding the item, if applicable.
* @param stack
* The item being held.
*/
void onStateChange(EntityPlayer player, ItemStack stack);
}