Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Морпеч крч

Активный участник
Пользователь
Баллы
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), но я не стал кидать весь код, т.к. это слишком много занимает места :-\
 
Я не так задал вопрос, скорее всего, вообщем, я не могу нормально написать правильный градус направления взгляда игрока, которая даст понять, куда он смотрит, на Север или на другие стороны.
я же решил эту проблему, если кому-то нужна будет помощь, я это оставлю тут:
было (НЕ ПРАВИЛЬНО) :
Код:
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
{
//такое же действие, как и для "первого" севера
}
}
Естественно, код можно упростить, но я не стал этого делать)
 
Помочь сейчас не могу, но могу сказать так
Учите
trigonometr.jpg
 

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

Назад
Верх