Войти или зарегистрироваться

Помогите Помогите реализовать идею

  • Автор темы Автор темы fswr33
  • Дата начала Дата начала

fswr33

Активный участник
Пользователь
Баллы
66
Нужно каждые 20 тиков чередовать выполнение двух вариантов кода, то есть выполняем код #1, ждем 20 тиков, выполняем код #2, ждем 20 тиков и так снова.
Вот моя идея, но почему-то переменные, задаваемые внутри BukkitRunnable не читаются
Java:
public final class Main extends JavaPlugin {
    public void onEnable() {
        BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
        final int var = 1;
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                if (var == 1){
                    //делаем что-нибудь #1
                    int var = 2;
                }
                else {
                    //делаем что-нибудь #2
                    int var = 1;
                }
            }
        }, 0L, 20L);
    }
}
 
Ты постоянно создаешь новую числовую переменную var, а не присваиваешь старой новое значение.
При попытке присваивания у тебя появится ошибка, так как переменная уже финализирована и проделывать с ней подобные операции, увы, просто невозможно.

Попробуй это:
Код:
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
            int value = 0;
            @Override
            public void run() {
                switch (this.value = (this.value + 1) % 2) {
                    case 0:
                        // делаем что-нибудь тут #1
                        break;
                    case 1:
                        // делаем что-нибудь тут #2
                        break;
                }
            }
        }, 0L, 20L);
 
Последнее редактирование:
Попробуй это:
Код:
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
            int value = 0;
            @Override
            public void run() {
                switch (this.value = (this.value + 1) % 2) {
                    case 0:
                        // делаем что-нибудь тут #1
                        break;
                    case 1:
                        // делаем что-нибудь тут #2
                        break;
                }
            }
        }, 0L, 20L);
Спасибо, все отлично работает
 
Назад
Верх