package pneumaticCraft.api.item; import net.minecraft.item.ItemStack; /** * Implement this for items that can get programmed in a Programmer. * For now the only thing you can do with this is make program storages, later more interaction with programming puzzles is planned. * Puzzle pieces will be written onto the implementer's itemstack NBT, using the "progWidget" tag. */ public interface IProgrammable{ /** * When returned true, this stack is allowed to be programmed. * Used to allow certain damage values to be programmed while others can't. * @param stack * @return */ public boolean canProgram(ItemStack stack); /** * When returned true, Programming Puzzles are needed to program this item. When returned false, it's free to program. * Drones and Network API's return true in PneumaticCraft, Network Storages return false. * @param stack * @return */ public boolean usesPieces(ItemStack stack); /** * When returned true, the implementing item will get a tooltip added of the summary of puzzles used in the stored program. * @return */ public boolean showProgramTooltip(); }