Да, эта схема переноса заряда несовершенна. Но она рабочая.
Перенести энергию во внутренние батареи робота из сменных пока невозможно. Поэтому внутренние батареи почти всегда будут пустыми в этой схеме. Но чтобы робот не выключился во время замены батареи, нужно иметь как минимум два слота для внешних апгрейдов. Можно использовать, например, такую последовательность: ставим заряженный временный апгрейд с небольшой ёмкостью, затем заменяем основной апгрейд, и в завершение вынимаем временный. Исследование приоритетов расхода энергии апгрейдов могло бы позволить использовать ёмкость и дополнительного апгрейда тоже.
Старые версии OpenComputers я сейчас не проверял. Но мне почему-то помнится, что раньше батареи высасывались равномерно. Сейчас я поверил на OpenComputers-MC1.7.10-1.7.5.1290-universal.jar: сначала высасывается батарея из апргейда, вставленного в робота первым. Но не факт, что я правильно интерпретировал результаты наблюдения.
Надо придумать адекватный тест. Сейчас индикатор заряда на апргрейде обновляется редко, и более-менее точно проверить текущий заряд конкретного апргрейда можно лишь его перемещением в контрольного робота. А такие перемещения снижают чистоту эксперимента.
Через computer.getDeviceInfo() мне удалось вытащить только ёмкость батареи, текущий же уровень заряда неизвестен. А сколько может быть запасено энергии в апргейде опыта, вообще приходится вычислять через его уровень.
Кстати, можно попробовать для начала сформулировать эту задачу. Например, добавить всем компонентам, хранящим энергию, следующие методы:
Получить максимальную ёмкость;
Получить текущий запас энергии;
Задать/получить приоритет заряда (например, числом 0..15);
Задать/получить приоритет разряда.
Задать/получить скорость заряда внешних объектов этим компонентом.
Это позволило бы роботам подзаряжать внутренние батареи за счёт сменных и наоборот, а также превратить роботов или дронов в источники энергии для других дронов и роботов. Особенным шиком будет суммирование скоростей заряда отдельными компонентами. Так мы получим новый класс роботов и дронов, специализирующихся на хранении и транспортировке энергии.