| package ic2.api.item; |
| |
| import net.minecraft.entity.EntityLivingBase; |
| import net.minecraft.item.ItemStack; |
| |
| /** |
| * This interface specifies a manager to handle the various tasks for electric items. |
| * |
| * The default implementation does the following: |
| * - store and retrieve the charge |
| * - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account |
| * - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId()) |
| * - update and manage the damage value for the visual charge indicator |
| * |
| * @note If you're implementing your own variant (ISpecialElectricItem), you can delegate to the |
| * default implementations through ElectricItem.rawManager. The default implementation is designed |
| * to minimize its dependency on its own constraints/structure and delegates most work back to the |
| * more atomic features in the gateway manager. |
| */ |
| public interface IElectricItemManager { |
| /** |
| * Charge an item with a specified amount of energy |
| * |
| * @param itemStack electric item's stack |
| * @param amount amount of energy to charge in EU |
| * @param tier tier of the charging device, has to be at least as high as the item to charge |
| * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() |
| * @param simulate don't actually change the item, just determine the return value |
| * @return Energy transferred into the electric item |
| */ |
| int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); |
| |
| /** |
| * Discharge an item by a specified amount of energy |
| * |
| * @param itemStack electric item's stack |
| * @param amount amount of energy to charge in EU |
| * @param tier tier of the discharging device, has to be at least as high as the item to discharge |
| * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() |
| * @param simulate don't actually discharge the item, just determine the return value |
| * @return Energy retrieved from the electric item |
| */ |
| int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); |
| |
| /** |
| * Determine the charge level for the specified item |
| * |
| * @param itemStack ItemStack containing the electric item |
| * @return charge level in EU |
| */ |
| int getCharge(ItemStack itemStack); |
| |
| /** |
| * Determine if the specified electric item has at least a specific amount of EU. |
| * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. |
| * BatPacks are not taken into account. |
| * |
| * @param itemStack electric item's stack |
| * @param amount minimum amount of energy required |
| * @return true if there's enough energy |
| */ |
| boolean canUse(ItemStack itemStack, int amount); |
| |
| /** |
| * Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack. |
| * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. |
| * |
| * @param itemStack electric item's stack |
| * @param amount amount of energy to discharge in EU |
| * @param entity entity holding the item |
| * @return true if the operation succeeded |
| */ |
| boolean use(ItemStack itemStack, int amount, EntityLivingBase entity); |
| |
| /** |
| * Charge an item from the BatPack a player is wearing. |
| * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. |
| * use() already contains this functionality. |
| * |
| * @param itemStack electric item's stack |
| * @param entity entity holding the item |
| */ |
| void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity); |
| |
| /** |
| * Get the tool tip to display for electric items. |
| * |
| * @param itemStack ItemStack to determine the tooltip for |
| * @return tool tip string or null for none |
| */ |
| String getToolTip(ItemStack itemStack); |
| } |