Будет довольно удобно сделать так:
Создаём класс (например ModificatedBlock), в котором будем хранить Long timestamp, Location position и Material block, конструктор, геттер времени (long getTimestamp(), например), метод для восстановления блока - recoveryBlock().
Все объекты класса храним в каком-нибудь List. В шедулере регулярно проходимся циклом по всему листу. Сравниваем текущее время со временем создания - если разница больше определённого значения, вызываем метод recoveryBlock() объекта, а из списка удаляем.
Нужно учесть, что после перезагрузки сервера список объектов будет пустым, поэтому если нужно сохранять изменённые блоки, то опять же в цикле это делать.