| package ic2.api.item; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import net.minecraft.item.ItemStack; |
| |
| /** |
| * Allows for charging, discharging and using electric items (IElectricItem). |
| */ |
| public final class ElectricItem { |
| /** |
| * IElectricItemManager to use for interacting with IElectricItem ItemStacks. |
| * |
| * This manager will act as a gateway and delegate the tasks to the final implementation |
| * (rawManager or a custom one) as necessary. |
| */ |
| public static IElectricItemManager manager; |
| |
| /** |
| * Standard IElectricItemManager implementation, only call it directly from another |
| * IElectricItemManager. Use manager instead. |
| */ |
| public static IElectricItemManager rawManager; |
| |
| /** |
| * Register an electric item manager for items not implementing IElectricItem. |
| * |
| * This method is only designed for special purposes, implementing IElectricItem or |
| * ISpecialElectricItem instead of using this is faster. |
| * |
| * Managers used with ISpecialElectricItem shouldn't be registered. |
| * |
| * @param manager Manager to register. |
| */ |
| public static void registerBackupManager(IBackupElectricItemManager manager) { |
| backupManagers.add(manager); |
| } |
| |
| /** |
| * Get the electric item manager suitable for the supplied item stack. |
| * |
| * This method is for internal use only. |
| * |
| * @param stack ItemStack to be handled. |
| * @return First suitable electric item manager. |
| */ |
| public static IBackupElectricItemManager getBackupManager(ItemStack stack) { |
| for (IBackupElectricItemManager manager : backupManagers) { |
| if (manager.handles(stack)) return manager; |
| } |
| |
| return null; |
| } |
| |
| |
| private static final List<IBackupElectricItemManager> backupManagers = new ArrayList<IBackupElectricItemManager>(); |
| } |
| |