Проверка на возможность установки блока

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

Lignium

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Lignium
Здравствуйте! Как проверить, можно ли блок поставить над другим блоком? Например, факел на горшке поставить нельзя, он дропется.
 
Последнее редактирование:
Поподробнее, для чего тебе это надо, если в ядре уже есть эта проверка.
И насколько мне известно, блоки вообще не ставятся.
Если факелом нажать пкм на ступеньки например - ничего не произойдет
 
Поподробнее, для чего тебе это надо, если в ядре уже есть эта проверка.
И насколько мне известно, блоки вообще не ставятся
Это скорее всего на клиенте проверяется, а не на сервере
 
всетаки какая-то проверка на сервере есть, если через set поставить например кнопку в воздухе или на блок, на который обычным кликом она не ставится, после пкм или лкм по ней, и она дропнется (тоесть то что и описал автор, только ставить не рукой и дропается только после клика)
 
всетаки какая-то проверка на сервере есть, если через set поставить например кнопку в воздухе или на блок, на который обычным кликом она не ставится, после пкм или лкм по ней, и она дропнется (тоесть то что и описал автор, только ставить не рукой и дропается только после клика)
А, ну да, логично
 
Никак, только костыли.
вот один из них)

cord* - координаты точки в трехмерном пространстве, тип - float/double
AxisAlignedBB - кубоид , в примере задается двумя парами координат XYZ

World xWorld = player.getWorld();
WorldServer Wser =((CraftWorld)xWorld).getHandle();
AxisAlignedBB bb= AxisAlignedBB.a(cordX, cordY, cordZ, cordX, cordY, cordZ);
List mega = Wser.a(bb);
if(!mega.isEmpty()){
p.sendMessage("Лист не пустой, в данной точке есть какой-то блок!");
}[
/SPOILER]
Вместо cord* подставить координаты плоскости за проверяемым блоком, паралельно одной из граней.
 
вот один из них)

cord* - координаты точки в трехмерном пространстве, тип - float/double
AxisAlignedBB - кубоид , в примере задается двумя парами координат XYZ

World xWorld = player.getWorld();
WorldServer Wser =((CraftWorld)xWorld).getHandle();
AxisAlignedBB bb= AxisAlignedBB.a(cordX, cordY, cordZ, cordX, cordY, cordZ);
List mega = Wser.a(bb);
if(!mega.isEmpty()){
p.sendMessage("Лист не пустой, в данной точке есть какой-то блок!");
}[
/SPOILER]
чел, это проверка на наличие физической части блока в некоем объеме пространства, но это никак не проверка возможности установки блока.
 
это проверка на кубоид, который прорисовывается когда смотришь на блок
Все равно автор так и не ответил для чего это ему. И почему именно над блоком
 
это проверка на кубоид, который прорисовывается когда смотришь на блок
Все равно автор так и не ответил для чего это ему. И почему именно над блоком
ну и как ты с помощью своей проверки узнаешь, получится ли поставить факел над ступенькой. или кактус рядом с блоком?
 
В моём плагине при разрушении земли, одно из действий - это размещение цветочного горшка вместо этой земли. Этот горшок особым образом регистрируется в плагине... Если он сам по себе дропнется, при конфликте с нижним блоком, программа не обработает это, в итоге выливаются производные баги, типа горшка нет, а указатель Block остался во множестве блоков.
 
В чем проблема проверять наличие блока под горшком?
 
В общем я решил эту проблему (не идеально, но решил). Для проверки блока использовал метод Material.isOccluding(). Как я понял, он проверяет является блок (его материал) целостным, то есть становится ли блок частью геометрии мира, когда невидимые грани блоков удаляются. Например, если поставить тропу (дорожка) поверх блока земли и посмотреть внутренности этой конструкции с помощью режима наблюдателя, можно заметить, что невидимая сторона блока земли не удалена, так как тропа не является "occluding". А вот если тропу заменить другим целостным блоком, той же землей, верхняя поверхность нижнего блока исчезнет, как и нижняя верхнего блока.
Получается горшок не будет конфликтовать с этим классом блоков.
Возможно я ошибаюсь, исправьте кто знает 🙂
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх