1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем AleGor, 6 янв 2019.

  1. Автор темы
    AleGor

    AleGor Активный участник

    Баллы:
    61
    Имя в Minecraft:
    AleGor
    Пишу BuildBattle ради практики. И столкнулся с проблемой, как сделать так чтобы проверялось следующее: у меня есть координаты двух блоков например:
    1) 0, 0, 0
    2) 10, 10, 10
    И есть координаты блока который мы поставили: 3) 3, 5, 4
    И как проверить есть ли в этом районе блоков от 1) до 2) координатов эти координаты 3).
     
  2. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    И в чём проблема? Обычная геометрия, ты задаёшь кубоид (параллелепипед) двумя точками и проверяешь наличие там третьей точки. Задачи школьного уровня.
     
  3. SpokeKamchatka

    SpokeKamchatka Активный участник Пользователь

    Баллы:
    66
    С моего плагина на регионы:
    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();
        }
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  5. Автор темы
    AleGor

    AleGor Активный участник

    Баллы:
    61
    Имя в Minecraft:
    AleGor
    Спасибо, ваш вариант самый компактный!
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Не сказал бы. Это на каждую операцию делать Math.min Math.max. У меня 1 раз в конструкторе.
    И потом уже.
    Код:
        public boolean contains(Location loc) {
            return contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
        }
     
  7. SpokeKamchatka

    SpokeKamchatka Активный участник Пользователь

    Баллы:
    66
    Это если есть Cuboid-ы с определенными максами и минами) А если просто в коде, то только так
     

Поделиться этой страницей