Решено Определенные координаты

  • Автор темы Автор темы Kotlar
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Kotlar

Активный участник
Пользователь
Баллы
66
Ник в Minecraft
kirilka1996
Доброго времени суток!
Прошу мне помочь.
Хочу сделать, чтобы если человек вводит команду и находится в радиусе от координат то что то происходит, но никак не могу понять...
Прошу наглядно показать как это! Заранее спасибо🙂
 
Очень просто.
Java:
Player p = ...; // игрок
int mindistance = ...; // минимальная дистанция
Location destination = ...; // до чего определяем расстояние

// программа
if(p.getLocation().getWorld().equals(destination.getWorld()){
     if(S(p.getLocation(), destination) < mindistance){
     // do
     //....
     //...
     //...
     }
}


// процедура определения расстояния
public static Integer S(Location loc, Location target){
        
        double x1 = loc.getX(), y1 = loc.getY(), z1 = loc.getZ(), x2 = target.getX(), y2 = target.getY(), z2 = target.getZ();
        int S = (int)Math.sqrt( Math.pow ((x1 - x2), 2) + Math.pow ((y1 - y2), 2) + Math.pow ((z1 - z2), 2));
        return S;
    }
 
Если команда введена, то
Если (x-X)^2+(z-Z)^2+(y-Y)^2 < R^2, то
Что-то делать

X, Y, Z - корды игрока, x, y, z - определённые корды, R - радиус
Эх, уже написали более грамотный ответ (
 
У Location есть сразу методы distance и distanceSquared.
Наилучшее решение — сравнивать именно квадраты расстояния:
Java:
Location target = ...;
Player player = ...;
int distance = 10, distanceSq = distance * distance;
// ...
try
{
    if(player.getLocation().distanceSquared(target) <= distanceSq)
    {
        // Окай, внутри
    }
} catch(IllegalAccessException ex) {
    // Опа, разные миры
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх Низ