Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем fswr33, 1 дек 2015.

  1. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Нужно каждые 20 тиков чередовать выполнение двух вариантов кода, то есть выполняем код #1, ждем 20 тиков, выполняем код #2, ждем 20 тиков и так снова.
    Вот моя идея, но почему-то переменные, задаваемые внутри BukkitRunnable не читаются
    Код:
    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);
        }
    }
    
     
  2. Хостинг MineCraft
    <
  3. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ты постоянно создаешь новую числовую переменную 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);
     
    Последнее редактирование: 1 дек 2015
  4. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Спасибо, все отлично работает
     

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