Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Ивент и цикл while

Nec4ick

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Nec4ick
Создал ивент, нужно чтобы пока блок цел игроку давались деньги. Попробывал написать код но ничего не работает, помогите


@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {

if (event.getBlock().getY() < 50) {
event.getPlayer().sendMessage(ChatColor.RED + "Минимальная высота для маяка: 50");
event.setCancelled(true);
}

if (event.getBlock().getY() > 175) {
event.getPlayer().sendMessage(ChatColor.RED + "Максимальная высота для маяка: 175");
event.setCancelled(true);
}

if (event.getBlock().getY() >= 50) {
if (event.getBlock().getY() <= 175) {
if (event.getBlock().getType() == Material.BEACON) {


while(event.getBlock().getType() == Material.BEACON) {
event.getPlayer().sendMessage(ChatColor.GREEN + "[$] " + ChatColor.WHITE + "Вы стоите возле маяка, зачислено " + ChatColor.GREEN + "$500");
ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
System.out.println("ReLight >> Игрок " + event.getPlayer().getName() + " получил деньги с блока");
String command = "eco give " + event.getPlayer().getName() + " 500";
Bukkit.dispatchCommand(console, command);
}


}
}
}

}
}
 
UPD: когда ставлю блок все нормально, но если сломать цикл не останавливается
 
Тебе нужно использовать PlayerMoveEvent либо шедулер для такого
 
можно пожалуйста код написать?
 
можно пожалуйста код написать?

Запустить шедулер, например, на 10 секунд (Каждые 10 секунд будут выдаваться деньги). И в этом шедулере использовать for (Player player : Bukkit.getOnlinePlayers()). Делаем проверку player, чтобы он находился рядом с маяком. После, выдаём деньги.

Подробнее про шедулеры можно прочитать тут: *тык*
 

Поделиться этой страницей

Назад
Верх