Определение местоположения

BlackBaroness

Модератор
Разработчик
Сообщения
1,680
Решения
72
Веб-сайт
vk.com
Допустим, у меня есть 2 места на карте, чьи координаты я знаю. Места большие и прямоугольные.
Нужно, чтобы когда игрок писать условную команду "/where", ему писалось, он в месте А или Б.
Как это можно реализовать?
 
Что то вроде такого
Java:
double area = 5.0D;
Location place = new Location(player.getWorld(), 5.0D, 69.0D, 5.0D);
Location loc = player.getLocation();
if (loc.distance(place) <= area) {
    player.sendMessage("вы в зоне");
}
 
Это радиус от центра территорий
Авто объединение сообщений:

Но, думаю, раз у тебя прямоугольные территории, то тебе проще будет это делать через WorldGuard.
Там есть метод проверки, в каком регионе находится регион.
 
Для флексабильности лучше написать отдельный кубоид (допустим вот так можно создать кубоид из двух локаций)

Java:
public class Cuboid {
    private String worldName;
    private int lowerX;
    private int lowerY;
    private int lowerZ;
    private int upperX;
    private int upperY;
    private int upperZ;
    
    public Cuboid(Location l1, Location l2) {
        //*Проверка на то, что миры одинаковые*
        this.lowerX = Math.min(l1.getBlockX(), l2.getBlockX());
        this.lowerY = Math.min(l1.getBlockY(), l2.getBlockY());
        //с lowerZ getBlockZ()
        //Для upper делаем также только Math.max
    }

//Геттеры
    
}
А потом при вводе команды просто проверяем по координатам игрока внутри-ли он кубоида, аля его x>= lowerX && x <=upperX и также для y и z (если кубоидов несколько, то итерируем)
 
Назад
Сверху Снизу