Кулдаун для блока при нажатии пкм

Версия Minecraft
1.7.10
Можете показать код как сделать кулдаун для блока при нажатии по нему пкм, например надо сделать кулдаун 10 секунд для сундука.
Ибо я пока вообще не понимаю как это можно реализовать, помогите пж
 
Решение
В обработчик событий:
EventsHandler.java:
public Map<BlockPos, Integer> map = new HashMap<>();

@SubscribeEvent
public void cooldownChest(PlayerInteractEvent.RightClickBlock e)
{
        if(map.get(e.getPos()) == e.getEntityPlayer().world.getTotalWorldTime())
        {
            e.setCancelled(true);
            // getTotalWorldTime всегда будет больше чем 0
            map.put(e.getPos(), 0);
        }
        map.put(e.getPos(), 0);
if(e.getEntityPlayer().world.getBlockState(e.getPos()).getBlock() == Blocks.CHEST)
        {
            if(map.get(e.getPos()) < e.getEntityPlayer().world.getTotalWorldTime())
            {
                // 20 тиков = 1 секунда. 10 секунд = 200 тиков
                map.put(e.getPos()...
682
20
319
Тут есть два решения, если лично для твоего блока который использует тайтлы, можно в нбт сохранять значения и в апдейте проверять
Если для блоков у которых нету тайтла или они ванильные, то через HashMap и эвент PlayerInteractEvent вроде так называется
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Если у блока нет состояния (поворот и тд), можно метадату юзать. При пкм ставим единичку и говорим блоку обновиться через нужное время (scheduleBlockUpdate). А потом в updateTick ставим снова метадату на ноль.
 

sk9zist :l

Исправился
981
18
157
В обработчик событий:
EventsHandler.java:
public Map<BlockPos, Integer> map = new HashMap<>();

@SubscribeEvent
public void cooldownChest(PlayerInteractEvent.RightClickBlock e)
{
        if(map.get(e.getPos()) == e.getEntityPlayer().world.getTotalWorldTime())
        {
            e.setCancelled(true);
            // getTotalWorldTime всегда будет больше чем 0
            map.put(e.getPos(), 0);
        }
        map.put(e.getPos(), 0);
if(e.getEntityPlayer().world.getBlockState(e.getPos()).getBlock() == Blocks.CHEST)
        {
            if(map.get(e.getPos()) < e.getEntityPlayer().world.getTotalWorldTime())
            {
                // 20 тиков = 1 секунда. 10 секунд = 200 тиков
                map.put(e.getPos(), e.getEntityPlayer().world.getTotalWorldTime() + 200);
             }
        }
}

Примерно так. Код для версии 1.12.2. На 1.7.10 я не проверял
 
Сверху