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

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

Discussion in 'Разработка плагинов для новичков' started by fswr33, Dec 1, 2015.

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

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

    Trophy Points:
    21
    Нужно каждые 20 тиков чередовать выполнение двух вариантов кода, то есть выполняем код #1, ждем 20 тиков, выполняем код #2, ждем 20 тиков и так снова.
    Вот моя идея, но почему-то переменные, задаваемые внутри BukkitRunnable не читаются
    Code:
    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 Старожил Девелопер Пользователь

    Trophy Points:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ты постоянно создаешь новую числовую переменную var, а не присваиваешь старой новое значение.
    При попытке присваивания у тебя появится ошибка, так как переменная уже финализирована и проделывать с ней подобные операции, увы, просто невозможно.

    Попробуй это:
    Code:
    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);
     
    Last edited: Dec 1, 2015
  4. Автор темы
    fswr33

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

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

Share This Page