blob: cbdfa1bd0b3a3dbd704223902a9489c3607a0ec7 [file] [log] [blame] [raw]
package li.cil.oc.api.util;
import java.util.EnumSet;
/**
* Implemented on machines that have an "working" state.
* <p/>
* This is similar to BuildCraft's <tt>IHasWork</tt> interface.
* <p/>
* This can also be implemented on {@link li.cil.oc.api.component.RackMountable}s
* to indicate a working state, which is used when checking for redstone cards
* in them, for example (only active mountables will be used).
*/
public interface StateAware {
/**
* Get the current work state (usually a <tt>TileEntity</tt>.
* <p/>
* An empty set indicates that no work can be performed.
*
* @return the current state.
*/
EnumSet<State> getCurrentState();
/**
* Possible work states.
*/
enum State {
None,
/**
* Indicates that some work can be performed / energy can be consumed,
* but that the current state is being idle.
*/
CanWork,
/**
* Indicates that some work is currently being performed / some energy
* is currently being consumed.
*/
IsWorking
}
}