Помогите Как проверить блок?

AleGor

Активный участник
Баллы
61
Имя в Minecraft
AleGor
Пишу BuildBattle ради практики. И столкнулся с проблемой, как сделать так чтобы проверялось следующее: у меня есть координаты двух блоков например:
1) 0, 0, 0
2) 10, 10, 10
И есть координаты блока который мы поставили: 3) 3, 5, 4
И как проверить есть ли в этом районе блоков от 1) до 2) координатов эти координаты 3).
 
Пишу BuildBattle ради практики. И столкнулся с проблемой, как сделать так чтобы проверялось следующее: у меня есть координаты двух блоков например:
1) 0, 0, 0
2) 10, 10, 10
И есть координаты блока который мы поставили: 3) 3, 5, 4
И как проверить есть ли в этом районе блоков от 1) до 2) координатов эти координаты 3).
И в чём проблема? Обычная геометрия, ты задаёшь кубоид (параллелепипед) двумя точками и проверяешь наличие там третьей точки. Задачи школьного уровня.
 
С моего плагина на регионы:
PHP:
public boolean contains(Location loc){
        return Math.min(getX1(), getX2()) <= loc.getBlockX() && Math.max(getX1(), getX2()) >= loc.getBlockX() &&
               Math.min(getY1(), getY2()) <= loc.getBlockY() && Math.max(getY1(), getY2()) >= loc.getBlockY() &&
               Math.min(getZ1(), getZ2()) <= loc.getBlockZ() && Math.max(getZ1(), getZ2()) >= loc.getBlockZ();
    }
 
С моего плагина на регионы:
PHP:
public boolean contains(Location loc){
        return Math.min(getX1(), getX2()) <= loc.getBlockX() && Math.max(getX1(), getX2()) >= loc.getBlockX() &&
               Math.min(getY1(), getY2()) <= loc.getBlockY() && Math.max(getY1(), getY2()) >= loc.getBlockY() &&
               Math.min(getZ1(), getZ2()) <= loc.getBlockZ() && Math.max(getZ1(), getZ2()) >= loc.getBlockZ();
    }
Спасибо, ваш вариант самый компактный!
 
Спасибо, ваш вариант самый компактный!
Не сказал бы. Это на каждую операцию делать Math.min Math.max. У меня 1 раз в конструкторе.
И потом уже.
Код:
    public boolean contains(Location loc) {
        return contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
    }
 
Не сказал бы. Это на каждую операцию делать Math.min Math.max. У меня 1 раз в конструкторе.
И потом уже.
Код:
    public boolean contains(Location loc) {
        return contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
    }
Это если есть Cuboid-ы с определенными максами и минами) А если просто в коде, то только так
 
Назад
Верх