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

Помогите Не работает цикл for

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

Статус темы:
Закрыта.
  1. Автор темы
    MrSharky

    MrSharky Участник Пользователь

    Баллы:
    33
    Пожалуйста помогите!
    Вот так плагин не работает:
    Код:
        @EventHandler
        public void onRespawn(PlayerRespawnEvent e){
        if(!e.isBedSpawn()){ 
              e.getPlayer().sendMessage("Произошла ошибка! Сейчас вы появитесь в случайной точке...");
              Ran ran = new Ran();
    M1:      for(int i = 0; i > 100000; i++){
                Location player = new Location(e.getPlayer().getWorld(), ran.getX(), ran.getY(), ran.getZ());
                Location  block = new Location(e.getPlayer().getWorld(), ran.getX(), ran.getY() - 1, ran.getZ());
                  if(player.getBlock().isEmpty() && !block.getBlock().isEmpty() && !block.getBlock().isLiquid() && ran.getY() > 60 && block.getBlock().getType() != Material.STONE){
                      e.getPlayer().teleport(player);           
                      e.getPlayer().sendMessage("Постоянная точка вашего появления установлена!");
                      e.getPlayer().setBedSpawnLocation(player);
                      break M1;
                  }
              }
        }
    }
    
    Я убрал оператор if(который идет после for) и все строки связанные с посылкой сообщения к игроку(думал, что все дело в русских буквах), сделал чтобы был только один цикл и убрал break(на всякий случай),но все равно не работает...
    Код:
      
      @EventHandler
      public void onRespawn(PlayerRespawnEvent e){
         if(!e.isBedSpawn()){
             for(int i = 0; i > 0; i++){
                             Ran r = new Ran();
                               Location player = new Location(e.getPlayer().getWorld(), r.getX(), r.getY(),r.getZ());
                               e.getPlayer().teleport(player);
           }
         }
      }
    
    Только если убрать цикл for ,начинает работать:
    Код:
        @EventHandler
        public void onJoin(PlayerRespawnEvent e){
            if(!e.getPlayer().hasPlayedBefore()){
                    Ran r = new Ran();
                    Location player = new Location(e.getPlayer().getWorld(), r.getX(), r.getY(),r.getZ());
                    e.getPlayer().teleport(player);
            }
        }
     
  2. StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    А что за Ran.class?
     
  3. Автор темы
    MrSharky

    MrSharky Участник Пользователь

    Баллы:
    33
    Код:
    public class Ran {
        public double getX(){
            Random x = new Random();
            double X = x.nextInt(10000);
            return X;
        }
        public double getY(){
            Random y = new Random();
            double Y = y.nextInt(200);
            return Y;}
        public double getZ(){
            Random z = new Random();
            double Z = z.nextInt(200);
            return Z;
        }
    }
    
     
  4. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Теперь поясни, на кой чёрт тебе надо бесконечно телепортировать игрока в одно и то же место?
     
  5. ptnk

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

    Баллы:
    173
    иди учи циклы.
     
  6. Автор темы
    MrSharky

    MrSharky Участник Пользователь

    Баллы:
    33
    дык вроде все правильно...
    Не бесконечно и не в одно, посмотрите внимательней
     
  7. ptnk

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

    Баллы:
    173
    Циклы написаны не правильно, всё потому, что у тебя в них условия стоят неправильные, всё потому, что у тебя знаний по нулям, а значит, иди учи базовую логику.
     
    skynetxxx и Larin нравится это.
  8. Larin

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

    Баллы:
    103
  9. ptnk

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

    Баллы:
    173
    к чему это вообще?

    Достаточно сказать, что цикл работает, пока условие истина, здесь в циклах этого не происходит никогда, поэтому даже и один раз зайти не может.
     
    ql_Nik_lp, Larin и musel70 нравится это.
  10. Автор темы
    MrSharky

    MrSharky Участник Пользователь

    Баллы:
    33
    Сказать честно только сейчас до меня дошло, почему не работает...
     
  11. ptnk

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

    Баллы:
    173
    Если ты не понимаешь таких самых простых основ, то тебе очень рано заниматься плагинами.
     
    ПриветОтЛайки нравится это.
  12. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    MrSharky, поддерживаю вопрос. Чего Вы хотите достичь?

    Дело в том, что Ваш цикл (когда заработает) будет выполнен в пределах одного тика. Соответственно это будет аналогично тому, что Вы телепортанёте игрока всего один раз.

    Какой результат Вам нужен?
     
    Последнее редактирование: 16 мар 2014
    Larin нравится это.
  13. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Сам сталкивался с такой проблемой когда учил ЯП.
    Смотри, это твой код:
    Код:
    for(int i = 0; i > 10000; i++){
    //...
    }
    получается что цикл будет выполнятся ПОКА i больше 10000, но у тебя i = 0;
    поменяй знак > в for на < и всё будет работать :D
     
    Последнее редактирование: 16 мар 2014
    ensirius и StealerSlain нравится это.
  14. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Может это его инновационная вариация шедулера?
     
    ExStar нравится это.
  15. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Так я поэтому и спрашиваю чего автор хочет получить. Чтобы не гадать, а подсказать в случае чего.
     
  16. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Воздух, не воздух, не жидкость, выше 60 и не камень. Явно хочет телепортировать игрока в преисподню безопасное место и случайным образом
     
    MrSharky и serega6531 нравится это.
Статус темы:
Закрыта.

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