public HashMap<Location, Long> blocks_reset_timer = new HashMap<Location, Long>(); // Храним локацию блока и время, когда его сломали
public HashMap<Location, Integer> blocks_reset_ids = new HashMap<Location, Integer>(); // Храним локацию блока и его ид
public HashMap<Integer, Location> blocks_to_reset = new HashMap<Integer, Location>(); // Храним номер блока (у каждого восстанавливаемого этим кодом блока должен быть свой номер) и его локацию
public int reset_time = 10; // Время восстановления в секундах
@EventHandler
public void onBlockBreak(BlockBreakEvent e) {
if(blocks_to_reset.containsValue(e.getBlock().getLocation()) {
e.getBlock().setTypeId(7); // Ставим на место блока админиум
blocks_reset_timer.put(e.getBlock().getLocation(), System.currentTimeMillis()); // Заносим данные о времени разрушения
}
}
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { // Создаем таймер
Iterator<Location> iterator = blocks_to_reset.iterator(); // Итератор для перебора значений хешмапа
while(iterator.hasNext()) {
Location loc = iterator.next();
long break_time = blocks_reset_timer.get(loc);
if((break_time + (reset_time * 1000)) - System.currentTimeMillis() < 0) { // Если 10 секунд прошло..
blocks_reset_timer.remove(loc); // Удаляем данные о разрушении блока
loc.getBlock().setTypeId(blocks_reset_ids.get(loc)); // Восстанавливаем блок
}
}
}, 0, 20); // 20 - 1 секунда.
}