Войти или зарегистрироваться

Помогите Двойной прыжок

Статус
Закрыто для дальнейших ответов.
Прочитал уже. Что делать?
Я понимаю, что тебе хочется по-быстрому написать плагин и закрыть форум - но эти вещи слишком элементарны, чтобы не понимать, как определить по вектору спускается объект или поднимается.

Я дам тебе подсказку: у тебя есть вектор у него есть точка начала и точка конца, этот вектор как-то в пространстве расположен, как же ты на глаз определишь, что вектор наклонён вниз и как ты это покажешь на бумаге?

Это школьная математика\геометрия для 8-10 классов.

---
Можешь использовать метод, который ты предложил, он тяжеловесный.
 
Да, сделал. Всем спасибо.
Нет, не сделал. Определение, в какую сторону смотрит игрок работает через... раз. Иногда он определяет правильно, перед игроков, а иногда определяет блок справа него. В чем дело? Вот код:
Код:
        Player player = event.getPlayer();
        if(Players.isGamePlayer(player)){
            Location loc = player.getEyeLocation();
            int direction = (int)(((loc.getYaw() * 4F) / 360F) + 0.5D) & 3;
            switch(direction)
            {
              case 0:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()+1);
                    break;
              }
              case 1:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX()-1, (int)loc.getY(), (int)loc.getZ());
                    break;
              }
              case 2:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()-1);
                    break;
              }
              case 3:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX()+1, (int)loc.getY(), (int)loc.getZ());
                    break;
              }
            }
            if(!(((Entity)player).isOnGround()) && (player.getGameMode() != GameMode.CREATIVE) && !(loc.getBlock().getType().equals(Material.AIR)) && (event.getTo().getY() > event.getFrom().getY()) && !(player.isSneaking())){
                player.setVelocity(player.getVelocity().add(new Vector(0, 0.09, 0)));
            }
        }
 
Да, сделал. Всем спасибо.
Нет, не сделал. Определение, в какую сторону смотрит игрок работает через... раз. Иногда он определяет правильно, перед игроков, а иногда определяет блок справа него. В чем дело? Вот код:
Код:
        Player player = event.getPlayer();
        if(Players.isGamePlayer(player)){
            Location loc = player.getEyeLocation();
            int direction = (int)(((loc.getYaw() * 4F) / 360F) + 0.5D) & 3;
            switch(direction)
            {
              case 0:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()+1);
                    break;
              }
              case 1:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX()-1, (int)loc.getY(), (int)loc.getZ());
                    break;
              }
              case 2:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()-1);
                    break;
              }
              case 3:
              {
                  loc = new Location(loc.getWorld(), (int)loc.getX()+1, (int)loc.getY(), (int)loc.getZ());
                    break;
              }
            }
            if(!(((Entity)player).isOnGround()) && (player.getGameMode() != GameMode.CREATIVE) && !(loc.getBlock().getType().equals(Material.AIR)) && (event.getTo().getY() > event.getFrom().getY()) && !(player.isSneaking())){
                player.setVelocity(player.getVelocity().add(new Vector(0, 0.09, 0)));
            }
        }
Выполни дебаг, и погляди как тут direction реагирует - и исходя из найденного недочёт - устрани.
 
Реагирует нормально, совпадает с клиентом.
Определение, в какую сторону смотрит игрок работает через... раз.
Как-то не состыкуется это.

Крайне маловероятно, что кто-то здесь от скуки глядя полезет отлаживать твой код и выяснять, почему там что-то не так.

У тебя там ещё есть отличное условие - его отлаживай.
 
Проверил еще раз, и правда не совпадает. Пофиксил, но проблему это не решило.
В чем сложность? Делай отладочную печать - выводи нужную информацию в консоль, смотри, при каких данных происходит какая-то фигня, пытайся исходя из данных найти проблему.
 
В чем сложность? Делай отладочную печать - выводи нужную информацию в консоль, смотри, при каких данных происходит какая-то фигня, пытайся исходя из данных найти проблему.
Фигня происходит, когда направление определяется неправильно. Как определять его по Yaw правильно?
 
Фигня происходит, когда направление определяется неправильно. Как определять его по Yaw правильно?
Я не понимаю, в чем проблема тебе разобраться, что же это за такая величина Yaw, что он показывает для игрока и как из него получить сторону света?

После того, как ты разберёшься, что же это такое - подкорректировать получение направления и жить спокойно.

Страдай, изучай.
 
Я не понимаю, в чем проблема тебе разобраться, что же это за такая величина Yaw, что он показывает для игрока и как из него получить сторону света?

После того, как ты разберёшься, что же это такое - подкорректировать получение направления и жить спокойно.

Страдай, изучай.
Изучаю.
Вот:

Код:
int yaw = (int) Math.abs(loc.getYaw());
if(yaw > 315 && yaw < 45){
       direction = 0;
} else if (yaw > 45 && yaw < 135){
       direction = 1;
} else if (yaw > 135 && yaw < 225){
        direction = 2;
} else if (yaw > 225 && yaw < 315){
         direction = 3;
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх