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

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

Discussion in 'Разработка плагинов для новичков' started by MrSharky, Mar 16, 2014.

Thread Status:
Not open for further replies.
  1. Автор темы
    MrSharky

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

    Trophy Points:
    33
    Пожалуйста помогите!
    Вот так плагин не работает:
    Code:
        @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(на всякий случай),но все равно не работает...
    Code:
      
      @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 ,начинает работать:
    Code:
        @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. Хостинг MineCraft
    <
  3. StealerSlain

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

    Trophy Points:
    88
    Имя в Minecraft:
    StealerSlain
    А что за Ran.class?
     
  4. Автор темы
    MrSharky

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

    Trophy Points:
    33
    Code:
    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;
        }
    }
    
     
  5. Den_Abr

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

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

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

    Trophy Points:
    173
    иди учи циклы.
     
  7. Автор темы
    MrSharky

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

    Trophy Points:
    33
    дык вроде все правильно...[DOUBLEPOST=1394978340,1394978258][/DOUBLEPOST]
    Не бесконечно и не в одно, посмотрите внимательней
     
  8. ptnk

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

    Trophy Points:
    173
    Циклы написаны не правильно, всё потому, что у тебя в них условия стоят неправильные, всё потому, что у тебя знаний по нулям, а значит, иди учи базовую логику.
     
    skynetxxx and Larin like this.
  9. Larin

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

    Trophy Points:
    103
  10. ptnk

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

    Trophy Points:
    173
    к чему это вообще?

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

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

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

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

    Trophy Points:
    173
    Если ты не понимаешь таких самых простых основ, то тебе очень рано заниматься плагинами.
     
  13. Hilgert

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

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

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Может это его инновационная вариация шедулера?
     
    ExStar likes this.
  15. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Воздух, не воздух, не жидкость, выше 60 и не камень. Явно хочет телепортировать игрока в преисподню безопасное место и случайным образом
     
    MrSharky and serega6531 like this.
Thread Status:
Not open for further replies.

Share This Page