УДАЛЕНО

  • Автор темы Автор темы KvaytG
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

KvaytG

Активный участник
Пользователь
Баллы
66
УДАЛЕНО
 
Последнее редактирование:
И так есть код
@EventHandler
public void EatMushroom(PlayerInteractEvent e){
Action a = e.getAction();
if (a == Action.RIGHT_CLICK_BLOCK || a == Action.RIGHT_CLICK_AIR){
Player p = e.getPlayer();
ItemStack item = p.getInventory().getItemInHand();
if(item.getType() == Material.BROWN_MUSHROOM && p.getFoodLevel() != 20){
p.setFoodLevel(p.getFoodLevel() + 1);
item.setAmount(item.getAmount() - 1);
p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_BURP, 1, 3);
}
}
}
Этот код позволяет как-бы съесть гриб, но я хочу, чтобы игроки не могли просто зажимать ПКМ и восстанавливать себе голод полностью. Для этого мне нужна пауза, но я не знаю как это реализовать. (пробовал через шедулер, но ничего путного не вышло)
(и не спрашивайте зачем мне нужно реализовать поедание грибов)
Map<String, Long> тебе поможет
 
PHP:
public HashMap<String, Long> cooldowns = new HashMap<String, Long>();
 
   public boolean isCooldown(int cooldownTime , Player player) {
        if(cooldowns.containsKey(player.getName())) {
            long secondsLeft = ((cooldowns.get(player.getName())/1000)+cooldownTime) - (System.currentTimeMillis()/1000);
            if(secondsLeft>0) {
                return true;
            }
        }
        cooldowns.put(player.getName(), System.currentTimeMillis());
        return false;
    }
}
 
А что это? Как это работает? Куда это нужно вписать?
Код:
public HashMap<String, Long> cooldowns = new HashMap<String, Long>();
Это поле в классе, туда списком попадают (имя игрока:время).
Остальное это метод который ты вызываешь в месте где тебе нужно кд в виде:
Код:
if (!isCooldown(int cooldownTime , Player player)){
    тут твой код если нет кд
}
 
лучше иди жабу поучи.
 
Thread.sleep();
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх