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

Baroness's Dev

Разработчик
Допустим, у меня есть 2 места на карте, чьи координаты я знаю. Места большие и прямоугольные.
Нужно, чтобы когда игрок писать условную команду "/where", ему писалось, он в месте А или Б.
Как это можно реализовать?
 

q20w26a

Разработчик
Что то вроде такого
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("вы в зоне");
}
 

BuseSo

Разработчик
Это радиус от центра территорий
Авто объединение сообщений:

Но, думаю, раз у тебя прямоугольные территории, то тебе проще будет это делать через WorldGuard.
Там есть метод проверки, в каком регионе находится регион.
 

Baroness's Dev

Разработчик
Территорий много, они не совсем прямые, но попробую пока так. Нужна была хоть какая-то базовая логика для определения территории
 

BlackBarcode13

Разработчик
Для флексабильности лучше написать отдельный кубоид (допустим вот так можно создать кубоид из двух локаций)

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 (если кубоидов несколько, то итерируем)
 

Комнаты в чате

Верх Низ