Но самое главное, как сделать задержку, и чтобы сменялся индекс элемента из массива?
Можно делать без явного отсчета задержки.
Текущее время в миллисекундах можно получить так
System.currentTimeMillis()
Остаток от деления этого времени на размер массива будет соответствовать индексу в массиве, который циклически изменяется
(int) (System.currentTimeMillis() % masive.length)
Чтобы увеличить интервал смены индекса можно поделить время на значение интервала в мс
(int) (System.currentTimeMillis() / 5000L % masive.length)
~~~
Немножко про таймеры на коленке
Майнкрафт отсчитывает количество прошедших тиков(20 тиков = 1 сек).
Minecraft.getMinecraft().thePlayer.ticksExisted
, например.
Далее можно использовать операцию взятия остатка от деления чтобы получить только каждые n тиков
ticksExisted % n == 0
Еще можно добавить смещение отсчета, если "таймер" нужно начинать с определенного момента
ticksExisted % n + offset == 0
В момент начала отсчета
int offset = -(ticksExisted % n)
Полученное условие просто применяем каждый тик, сработает оно только каждые n тиков