1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Задержка без разделения на потоки

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

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

    Jayman Активный участник Пользователь

    Баллы:
    76
    Если использовать Thread.sleep(), то задержка будет для всего плагина. Как сделать задержку только для определённого куска кода(допустим метода, цикла или условия)?
     
  2. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Шедулеры
     
  3. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    А можно готовый код? Просто в 1 раз слышу про них.
     
  4. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
  5. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    В чём ошибка?
    Код:
    @EventHandler
       public void onPlayerInteract(PlayerInteractEvent e) {
           if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
           final Block b = e.getClickedBlock();
               if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST) {
                   Sign sign = (Sign) b.getState();
                   Player player = e.getPlayer();
                   String[] lines = sign.getLines();
                   if(lines[0].equalsIgnoreCase("1")) {
                      BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
                      sign.setLine(1, "test");
                       sign.update();
                       scheduler.scheduleSyncRepeatingTask((Plugin) this, new Runnable() {
                        @Override
                        public void run() {
                            Sign sign = (Sign) b.getState();
                            sign.setLine(1, "");
                           sign.update();
                        }
                       }, 0L, 20L);
                   }
                   }
           }
       }
    
     
  6. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    На кой чёрт создавать второй раз переменную sign? Она же уже создана, используйте её, поставив final к ней.
    Да и по кастованию (Plugin) this можно судить о том, что шедулер создаётся не в главном классе.
     
  7. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    А надо в главном? К нему ж вреде как public не подпишешь.
     
    Последнее редактирование: 30 дек 2014
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Что за ахинею вы несёте? this вы знаете, что такое?
     
  9. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    А как тогда правильно сделать?
     
  10. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Можно подумать шедулеры это не потоки)
     
  11. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    А я хоть метод шедулера правильный выбрал для задержки?
     
  12. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Может быть стоит подучить Java?
     
  13. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Где-то была тема об этом, не помню до чего доспорили.
     
  14. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    Ну, так никто не скажет, как правильно сделать задержку?
     
  15. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Вам уже сказали.
     
  16. Автор темы
    Jayman

    Jayman Активный участник Пользователь

    Баллы:
    76
    Ну а можете исправить код?
     

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