Появление блока после его уничтожения

Версия Minecraft
1.11+
Каким способом лучше восстанавливать блок после его уничтожения? То есть игрок его сломал, а сервер его восстановил через 5 секунд (в моем коде):
Java:
public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) {
        super.onBlockDestroyedByPlayer(worldIn, pos, state);
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                worldIn.setBlockState(pos, state);
            }
        }).start();

    }
Как по мне это решение не оптимизировано, так как после уничтожения ~25 таких блоков майн вылетел. Какие ещё есть способы отсчета?
 
3,005
192
592
Ты останавливаешь поток на 5 секунд, #ТопКод.
Сделай мапу BlockPos, Long.
И в тиках считай свои 5 секунд.
 
Полное цитирование предыдущего сообщения запрещено
3,005
192
592
Ну, это не мои проблемы, что ты делаешь не так, "как все".
А нельзя посмотреть как в форге, и записать в "свой топ код" это?
 
7,099
324
1,510
new Thread(new Runnable() {
worldIn.setBlockState(pos, state);
Без синхронизации худо, с синхронизацией долго

Лучше запоминать коорды сломанных блоков+таймер и в тик-хандлере уменьшать таймер, если какой-то таймер <=0, то сетать на его коордах блок
 
Сверху