Таймер или отложенное действие

BlackBaroness

Модератор
Разработчик
Сообщения
1,680
Решения
72
Веб-сайт
vk.com
Сап, спигот, для плагина нужно отложить задачу, а RunTaskLater подводит и отказывается работать. Почитав документацию, я сделал такой код:
Java:
public class handler implements Listener {

    @EventHandler
    public void join(PlayerJoinEvent e) {
        Player p = e.get.Player();
        p.sendMessage("Это сообщение отправляется сразу.")
        new BukkitRunnable() {
           
            @Override
            public void run() {
                p.sendMessage("А это - через 20 секунд");
            }
           
        }.runTaskLater((Plugin) this, 400);
    }
}

И вроде всё выглядит замечательно, среда разработки радостно мигает зелёненьким, но, доходя до "new...", плагин выдаёт ошибку. Первое сообщение отправляется, а второе нет. Буду очень признателен за помощь.
 
[OFFTOPIC]Покажите ошибку под BB-код. В первое сообщение (кнопка "Изменить").[/OFFTOPIC]

Мне непонятно только это место: (Plugin) this. У тебя этот класс наследует JavaPlugin?
 
Там в аргументе должен быть указан главный класс плагина.

Java:
static Plugin plugin;

@Override
public void onEnable() {
    plugin = this;
}

Дальше в таймере используй ГлавныйКласс.plugin
 
Большое спасибо, заработало! Если можно, задам вопрос по теме: этот способ не создаёт лишнюю нагрузку на сервер? Например, если сделать так, чтобы каждому игроку каждый час игры что-то отправлялось. Неуверен в этом вопросе.
 
Назад
Сверху Снизу