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

Помогите Не корректно работают махинации с направлением взгляда игрока

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

  1. Автор темы
    Морпеч крч

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

    Баллы:
    66
    Имя в Minecraft:
    _Morpech_
    Всем привет, дорогие девелоперы!)
    Вообщем, у меня проблемка, не корректно работают мои махинации с взглядом, бывает, что он берет не правильный градус взгляда и считывает его, как другой.
    часть кода:
    Код:
    if(e.getBlock().getType() == Material.GOLD_PLATE)
         {
    
    
            Player player = e.getPlayer();
            double rotation = (player.getLocation().getYaw() - 90) % 360;
              if (rotation < 0) {
                  rotation += 360.0;
              }
              if (0 <= rotation && rotation < 90.0)//S/N
                 {
    final Location rt1 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX(), e.getBlock(). getY(), e.getBlock(). getZ() );// DONE
    
    final Location rt2 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+1, e.getBlock(). getY(), e.getBlock(). getZ() );//
    final Location rt3 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+0, e.getBlock(). getY()+1, e.getBlock(). getZ() );//
    final Location rt4 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()-1, e.getBlock(). getY(), e.getBlock(). getZ() );//
    
    final Location rt5 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+2, e.getBlock(). getY(), e.getBlock(). getZ()-1 );//
    final Location rt6 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()-2, e.getBlock(). getY(), e.getBlock(). getZ()-1 );//
    final Location rt7 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+1, e.getBlock(). getY()+1, e.getBlock(). getZ() );//
    final Location rt8 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()-1, e.getBlock(). getY()+1, e.getBlock(). getZ() );//
    
    final Location rt9 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+2, e.getBlock(). getY()+1, e.getBlock(). getZ()-1 );//
    final Location rt10 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()-2, e.getBlock(). getY()+1, e.getBlock(). getZ()-1 );//
    
    final Location rt11 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()+2, e.getBlock(). getY()+2, e.getBlock(). getZ()-1 );//
    final Location rt12 = new Location(e.getPlayer().getWorld(), e.getBlock(). getX()-2, e.getBlock(). getY()+2, e.getBlock(). getZ()-1 );//
           
              Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
                  @Override
                  public void run(){
                  rt1.getBlock().setType(Material.DIRT);
                  }
              }, 10L);
              Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
                    @Override
                    public void run(){
                    rt2.getBlock().setType(Material.DIRT);
                    rt3.getBlock().setType(Material.DIRT);
                    rt4.getBlock().setType(Material.DIRT);
                    }
                }, 20L);
              Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
                  @Override
                  public void run(){
                  rt5.getBlock().setType(Material.DIRT);
                  rt6.getBlock().setType(Material.DIRT);
                  rt7.getBlock().setType(Material.DIRT);
                  rt8.getBlock().setType(Material.DIRT);
                  }
              }, 30L);
              Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
                    @Override
                    public void run(){
                    rt9.getBlock().setType(Material.DIRT);
                    rt10.getBlock().setType(Material.DIRT);
                }
            }, 45L);
              Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
                  @Override
                  public void run(){
                  rt11.getBlock().setType(Material.DIRT);
                  rt12.getBlock().setType(Material.DIRT);
                 }
              }, 65L);
           
             
              }
    
    
    Там еще 3 стороны (вместе 4), но я не стал кидать весь код, т.к. это слишком много занимает места :-\
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Морпеч крч

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

    Баллы:
    66
    Имя в Minecraft:
    _Morpech_
    Я не так задал вопрос, скорее всего, вообщем, я не могу нормально написать правильный градус направления взгляда игрока, которая даст понять, куда он смотрит, на Север или на другие стороны.
    я же решил эту проблему, если кому-то нужна будет помощь, я это оставлю тут:
    было (НЕ ПРАВИЛЬНО) :
    Код:
    
    double rotation = (player.getLocation().getYaw() - 90) % 360;
    if (rotation < 0) {
    rotation += 360.0;
    }
    if (0 <= rotation && rotation < 90.0)  //N-v1
    {
    //действие для севера
    } else if (90.0 <= rotation && rotation <180.) //E
    {
    //действие для востока
    } else if (180. <= rotation && rotation < 270) //S
    {
    //действие для юга
    } else if (270 <= rotation && rotation < 360) //W
    {
    //действие для запада
    }
    
    
    А должно быть:
    Код:
    double rotation = (player.getLocation().getYaw() - 90) % 360;
    if (rotation < 0) {
    rotation += 360.0;
    }
    if (0 <= rotation && rotation < 45.0)  //N-v1
    {
    //действие для севера
    } else if (45.0 <= rotation && rotation < 135.0) //E
    {
    //действие для востока
    } else if (135.0 <= rotation && rotation < 225.0) //S
    {
    //действие для юга
    } else if (225.0 <= rotation && rotation < 315.0) //W
    {
    //действие для запада
    } else if (315.0 <= rotation && rotation < 360.0) //N-v2
    {
    //такое же действие, как и для "первого" севера
    }
    }
    
    Естественно, код можно упростить, но я не стал этого делать)
     
  4. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Помочь сейчас не могу, но могу сказать так
    Учите
    [​IMG]
     
  5. Автор темы
    Морпеч крч

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

    Баллы:
    66
    Имя в Minecraft:
    _Morpech_
    спасибо хд
     

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