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

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

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);
Спасибо, все отлично работает
 

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

Назад
Верх